<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>201729</bug_id>
          
          <creation_ts>2019-09-12 11:22:54 -0700</creation_ts>
          <short_desc>Uncaught Exception: null is not an object (evaluating &apos;Object.keys(propertyNames)​&apos;)​ (at JavaScriptRuntimeCompletionProvider.js:​244:​57)​</short_desc>
          <delta_ts>2019-09-13 11:59:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1570309</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-09-12 11:22:54 -0700</bug_when>
    <thetext>Not sure exactly how to reproduce yet. Was typing:
1. js&gt; entry.contentView.|

When 

Uncaught Exception:
----------------------
null is not an object (evaluating &apos;Object.keys(propertyNames)​&apos;)​ (at JavaScriptRuntimeCompletionProvider.js:​244:​57)​
    keys @ [native code]​
    receivedObjectPropertyNames @ JavaScriptRuntimeCompletionProvider.js:​244:​57
    receivedObjectPropertyNames @ [native code]​
    mycallback @ RemoteObject.js:​516:​21
    _dispatchResponseToCallback @ Connection.js:​148:​27
    _dispatchResponse @ Connection.js:​118:​45
    dispatch @ Connection.js:​70:​35
    dispatchMessageFromTarget @ TargetManager.js:​143:​35
    dispatchMessageFromTarget @ TargetObserver.js:​42:​51
    dispatchEvent @ InspectorBackend.js:​340:​42
    _dispatchEvent @ Connection.js:​195:​32
    dispatch @ Connection.js:​72:​32
    dispatch @ InspectorBackend.js:​178:​52
    ?​ @ MessageDispatcher.js:​42:​34
----------------------</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570315</commentid>
    <comment_count>1</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-09-12 11:46:40 -0700</bug_when>
    <thetext>This seems like a race when typing very fast.

Calls to:

    RuntimeAgent.releaseObjectGroup(&quot;completion&quot;)

From a prior evaluation will wipe out an ongoing request.

---

Typing: `entry.contentView` quickly in the quick console when paused:

[Log] request: {
        &quot;id&quot;: 675,
        &quot;method&quot;: &quot;Debugger.evaluateOnCallFrame&quot;,
        &quot;params&quot;: {
            &quot;callFrameId&quot;: &quot;{\&quot;ordinal\&quot;:2,\&quot;injectedScriptId\&quot;:1}&quot;,
            &quot;expression&quot;: &quot;\n//# sourceURL=__WebInspectorInternal__\nentry&quot;,
            &quot;objectGroup&quot;: &quot;completion&quot;,
            &quot;includeCommandLineAPI&quot;: true,
            &quot;doNotPauseOnExceptionsAndMuteConsole&quot;: true,
            &quot;returnByValue&quot;: false,
            &quot;generatePreview&quot;: false,
            &quot;saveResult&quot;: false,
            &quot;emulateUserGesture&quot;: false
        }
    }

[Log] response: {
        &quot;result&quot;: {
            &quot;result&quot;: {
                &quot;type&quot;: &quot;object&quot;,
                &quot;objectId&quot;: &quot;{\&quot;injectedScriptId\&quot;:1,\&quot;id\&quot;:4003}&quot;,
                &quot;className&quot;: &quot;BackForwardEntry&quot;,
                &quot;description&quot;: &quot;BackForwardEntry&quot;
            }
        },
        &quot;id&quot;: 675

[Log] request: {
        &quot;id&quot;: 701,
        &quot;method&quot;: &quot;Runtime.callFunctionOn&quot;,
        &quot;params&quot;: {
            &quot;objectId&quot;: &quot;{\&quot;injectedScriptId\&quot;:1,\&quot;id\&quot;:4003}&quot;,
            &quot;functionDeclaration&quot;: &quot;\n//# sourceURL=__WebInspectorInternal__\nfunction inspectedPage_evalResult_getCompletions(primitiveType)\n            {\n                var object;\n                if (primitiveType === \&quot;string\&quot;)\n                    object = new String(\&quot;\&quot;);\n                else if (primitiveType === \&quot;number\&quot;)\n                    object = new Number(0);\n                else if (primitiveType === \&quot;boolean\&quot;)\n                    object = new Boolean(false);\n                else if (primitiveType === \&quot;symbol\&quot;)\n                    object = Symbol();\n                else\n                    object = this;\n\n                var resultSet = {};\n                for (var o = object; o; o = o.__proto__) {\n                    try {\n                        var names = Object.getOwnPropertyNames(o);\n                        for (var i = 0; i &lt; names.length; ++i)\n                            resultSet[names[i]] = true;\n                    } catch (e) { }\n                }\n\n                return resultSet;\n            }&quot;,
            &quot;doNotPauseOnExceptionsAndMuteConsole&quot;: true,
            &quot;returnByValue&quot;: true
        }
    }

...

[Log] request: {
        &quot;id&quot;: 703,
        &quot;method&quot;: &quot;Runtime.releaseObjectGroup&quot;,
        &quot;params&quot;: {
            &quot;objectGroup&quot;: &quot;completion&quot;
        }
    }

...

[Log] response: {
        &quot;error&quot;: {
            &quot;code&quot;: -32000,
            &quot;message&quot;: &quot;Could not find object with given id&quot;,
            &quot;data&quot;: [{
                &quot;code&quot;: -32000,
                &quot;message&quot;: &quot;Could not find object with given id&quot;
            }]
        },
        &quot;id&quot;: 701
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570328</commentid>
    <comment_count>2</comment_count>
      <attachid>378667</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-09-12 12:27:53 -0700</bug_when>
    <thetext>Created attachment 378667
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570396</commentid>
    <comment_count>3</comment_count>
      <attachid>378667</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-09-12 15:26:18 -0700</bug_when>
    <thetext>Comment on attachment 378667
[PATCH] Proposed Fix

View in context: https://bugs.webkit.org/attachment.cgi?id=378667&amp;action=review

r=me, nice!  I&apos;ve encountered this a handful of times but could never reproduce.  Great catch! =D

&gt; Source/WebInspectorUI/UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:378
&gt; +        this._ongoingCompletionRequests++;

Style: `++this._ongoingCompletionRequests;`

&gt; Source/WebInspectorUI/UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:381
&gt; +    _decrementOngoingCompletionRequests()

Style: `--this._ongoingCompletionRequests;`

&gt; Source/WebInspectorUI/UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:385
&gt; +        if (!this._ongoingCompletionRequests)

We should assert that we haven&apos;t gone below `0` (and maybe even change the `if` condition to reflect that as well, given how many different branches this code has).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570514</commentid>
    <comment_count>4</comment_count>
      <attachid>378667</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-09-13 00:21:20 -0700</bug_when>
    <thetext>Comment on attachment 378667
[PATCH] Proposed Fix

View in context: https://bugs.webkit.org/attachment.cgi?id=378667&amp;action=review

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:378
&gt;&gt; +        this._ongoingCompletionRequests++;
&gt; 
&gt; Style: `++this._ongoingCompletionRequests;`

There is no reason to prefer pre or post in JavaScript. We have hundreds of examples of each. I think readability should matter more and post is more readable in `this._member` cases, and our existing code seems to agree.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:385
&gt;&gt; +        if (!this._ongoingCompletionRequests)
&gt; 
&gt; We should assert that we haven&apos;t gone below `0` (and maybe even change the `if` condition to reflect that as well, given how many different branches this code has).

Okay. It seems more likely that a decrement will be missed, in which case the counter ever increases, which is not easy to catch with assertions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570645</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-09-13 11:33:59 -0700</bug_when>
    <thetext>Source/WebInspectorUI/UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:385
&gt; &gt;&gt; +        if (!this._ongoingCompletionRequests)
&gt; &gt; 
&gt; &gt; We should assert that we haven&apos;t gone below `0` (and maybe even change the `if` condition to reflect that as well, given how many different branches this code has).
&gt; 
&gt; Okay. It seems more likely that a decrement will be missed, in which case
&gt; the counter ever increases, which is not easy to catch with assertions.

I think I&apos;ll add an assertion that we never get above 50. If so something has probably gone wrong and it would be useful to alert us of that in development!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570658</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-09-13 11:58:49 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/249846/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570659</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-13 11:59:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/55347422&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378667</attachid>
            <date>2019-09-12 12:27:53 -0700</date>
            <delta_ts>2019-09-13 11:56:59 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>completion-1.patch</filename>
            <type>text/plain</type>
            <size>4076</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDBjMDU2MGVkY2M3Li5mOWQ1YTI3ZGM5NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDktMTIgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBVbmNhdWdodCBFeGNl
cHRpb246IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnT2JqZWN0LmtleXMocHJv
cGVydHlOYW1lcynigIsnKeKAiyAoYXQgSmF2YVNjcmlwdFJ1bnRpbWVDb21wbGV0aW9uUHJvdmlk
ZXIuanM64oCLMjQ0OuKAizU3KeKAiworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAxNzI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0phdmFTY3JpcHRSdW50
aW1lQ29tcGxldGlvblByb3ZpZGVyLmpzOgorICAgICAgICAoV0kuSmF2YVNjcmlwdFJ1bnRpbWVD
b21wbGV0aW9uUHJvdmlkZXIpOgorICAgICAgICAoV0kuSmF2YVNjcmlwdFJ1bnRpbWVDb21wbGV0
aW9uUHJvdmlkZXIucHJvdG90eXBlLmNvbXBsZXRpb25Db250cm9sbGVyQ29tcGxldGlvbnNOZWVk
ZWQpOgorICAgICAgICBEb24ndCBjbGVhciB0aGUgY29tcGxldGlvbiBvYmplY3QgZ3JvdXAgdW50
aWwgYWxsIG9uZ29pbmcgcmVxdWVzdHMgaGF2ZSBjb21wbGV0ZWQuCisgICAgICAgIFBlcmNpc2lv
biBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBvYmplY3QgZ3JvdXAgb2JqZWN0cyBpcyBub3QgaW1w
b3J0YW50LCBidXQgd2UKKyAgICAgICAgc3VyZWx5IGRvbid0IHdhbnQgdG8gZGVsZXRlIGFuIG9i
amVjdCB0b28gc29vbi4KKwogMjAxOS0wOS0xMiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9A
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IFdlYiBJbnNwZWN0b3I6IExheW91dCBU
aW1lbGluZSBWaWV3IGRvZXMgbm90IHNob3cgcG9wb3ZlciBmb3IgaW5pdGlhdG9yIGRhdGEKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0phdmFTY3JpcHRSdW50aW1lQ29tcGxldGlvblByb3ZpZGVyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvSmF2YVNjcmlwdFJ1bnRpbWVDb21wbGV0
aW9uUHJvdmlkZXIuanMKaW5kZXggN2NmMTJhNDMyMjguLmQ3OWZkN2ViZDQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9KYXZhU2Ny
aXB0UnVudGltZUNvbXBsZXRpb25Qcm92aWRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9KYXZhU2NyaXB0UnVudGltZUNvbXBsZXRpb25Q
cm92aWRlci5qcwpAQCAtNDEsNiArNDEsOCBAQCBXSS5KYXZhU2NyaXB0UnVudGltZUNvbXBsZXRp
b25Qcm92aWRlciA9IGNsYXNzIEphdmFTY3JpcHRSdW50aW1lQ29tcGxldGlvblByb3ZpZAogCiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFXSS5KYXZhU2NyaXB0UnVudGltZUNvbXBsZXRpb25Qcm92
aWRlci5faW5zdGFuY2UpOwogCisgICAgICAgIHRoaXMuX29uZ29pbmdDb21wbGV0aW9uUmVxdWVz
dHMgPSAwOworCiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJ
LkRlYnVnZ2VyTWFuYWdlci5FdmVudC5BY3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2UsIHRoaXMuX2Ns
ZWFyTGFzdFByb3BlcnRpZXMsIHRoaXMpOwogICAgIH0KIApAQCAtMTQ5LDYgKzE1MSw3IEBAIFdJ
LkphdmFTY3JpcHRSdW50aW1lQ29tcGxldGlvblByb3ZpZGVyID0gY2xhc3MgSmF2YVNjcmlwdFJ1
bnRpbWVDb21wbGV0aW9uUHJvdmlkCiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgbGV0IG9w
dGlvbnMgPSB7b2JqZWN0R3JvdXA6ICJjb21wbGV0aW9uIiwgaW5jbHVkZUNvbW1hbmRMaW5lQVBJ
OiB0cnVlLCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGU6IHRydWUsIHJldHVy
bkJ5VmFsdWU6IGZhbHNlLCBnZW5lcmF0ZVByZXZpZXc6IGZhbHNlLCBzYXZlUmVzdWx0OiBmYWxz
ZX07CiAgICAgICAgICAgICBXSS5ydW50aW1lTWFuYWdlci5ldmFsdWF0ZUluSW5zcGVjdGVkV2lu
ZG93KGJhc2UsIG9wdGlvbnMsIGV2YWx1YXRlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHRo
aXMuX2luY3JlbWVudE9uZ29pbmdDb21wbGV0aW9uUmVxdWVzdHMoKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUxhc3RQcm9wZXJ0eU5hbWVzKHByb3BlcnR5TmFtZXMpCkBA
IC0xNjMsNyArMTY2LDcgQEAgV0kuSmF2YVNjcmlwdFJ1bnRpbWVDb21wbGV0aW9uUHJvdmlkZXIg
PSBjbGFzcyBKYXZhU2NyaXB0UnVudGltZUNvbXBsZXRpb25Qcm92aWQKICAgICAgICAgZnVuY3Rp
b24gZXZhbHVhdGVkKHJlc3VsdCwgd2FzVGhyb3duKQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAod2FzVGhyb3duIHx8ICFyZXN1bHQgfHwgcmVzdWx0LnR5cGUgPT09ICJ1bmRlZmluZWQiIHx8
IChyZXN1bHQudHlwZSA9PT0gIm9iamVjdCIgJiYgcmVzdWx0LnN1YnR5cGUgPT09ICJudWxsIikp
IHsKLSAgICAgICAgICAgICAgICBXSS5ydW50aW1lTWFuYWdlci5hY3RpdmVFeGVjdXRpb25Db250
ZXh0LnRhcmdldC5SdW50aW1lQWdlbnQucmVsZWFzZU9iamVjdEdyb3VwKCJjb21wbGV0aW9uIik7
CisgICAgICAgICAgICAgICAgdGhpcy5fZGVjcmVtZW50T25nb2luZ0NvbXBsZXRpb25SZXF1ZXN0
cygpOwogCiAgICAgICAgICAgICAgICAgdXBkYXRlTGFzdFByb3BlcnR5TmFtZXMuY2FsbCh0aGlz
LCBbXSk7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkNvbnRyb2xsZXIudXBkYXRlQ29tcGxl
dGlvbnMoZGVmYXVsdENvbXBsZXRpb25zKTsKQEAgLTI2NSw3ICsyNjgsNyBAQCBXSS5KYXZhU2Ny
aXB0UnVudGltZUNvbXBsZXRpb25Qcm92aWRlciA9IGNsYXNzIEphdmFTY3JpcHRSdW50aW1lQ29t
cGxldGlvblByb3ZpZAogCiAgICAgICAgICAgICB1cGRhdGVMYXN0UHJvcGVydHlOYW1lcy5jYWxs
KHRoaXMsIHByb3BlcnR5TmFtZXMpOwogCi0gICAgICAgICAgICBXSS5ydW50aW1lTWFuYWdlci5h
Y3RpdmVFeGVjdXRpb25Db250ZXh0LnRhcmdldC5SdW50aW1lQWdlbnQucmVsZWFzZU9iamVjdEdy
b3VwKCJjb21wbGV0aW9uIik7CisgICAgICAgICAgICB0aGlzLl9kZWNyZW1lbnRPbmdvaW5nQ29t
cGxldGlvblJlcXVlc3RzKCk7CiAKICAgICAgICAgICAgIGlmICghYmFzZSkgewogICAgICAgICAg
ICAgICAgIHByb3BlcnR5TmFtZXMucHVzaEFsbChKYXZhU2NyaXB0UnVudGltZUNvbXBsZXRpb25Q
cm92aWRlci5fY29tbWFuZExpbmVBUElLZXlzKTsKQEAgLTM3MCw2ICszNzMsMTkgQEAgV0kuSmF2
YVNjcmlwdFJ1bnRpbWVDb21wbGV0aW9uUHJvdmlkZXIgPSBjbGFzcyBKYXZhU2NyaXB0UnVudGlt
ZUNvbXBsZXRpb25Qcm92aWQKIAogICAgIC8vIFByaXZhdGUKIAorICAgIF9pbmNyZW1lbnRPbmdv
aW5nQ29tcGxldGlvblJlcXVlc3RzKCkKKyAgICB7CisgICAgICAgIHRoaXMuX29uZ29pbmdDb21w
bGV0aW9uUmVxdWVzdHMrKzsKKyAgICB9CisKKyAgICBfZGVjcmVtZW50T25nb2luZ0NvbXBsZXRp
b25SZXF1ZXN0cygpCisgICAgeworICAgICAgICB0aGlzLl9vbmdvaW5nQ29tcGxldGlvblJlcXVl
c3RzLS07CisKKyAgICAgICAgaWYgKCF0aGlzLl9vbmdvaW5nQ29tcGxldGlvblJlcXVlc3RzKQor
ICAgICAgICAgICAgV0kucnVudGltZU1hbmFnZXIuYWN0aXZlRXhlY3V0aW9uQ29udGV4dC50YXJn
ZXQuUnVudGltZUFnZW50LnJlbGVhc2VPYmplY3RHcm91cCgiY29tcGxldGlvbiIpOworICAgIH0K
KwogICAgIF9jbGVhckxhc3RQcm9wZXJ0aWVzKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9j
bGVhckxhc3RQcm9wZXJ0aWVzVGltZW91dCkgewo=
</data>
<flag name="review"
          id="394298"
          type_id="1"
          status="+"
          setter="hi"
    />
          </attachment>
      

    </bug>

</bugzilla>