<?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>94220</bug_id>
          
          <creation_ts>2012-08-16 07:24:38 -0700</creation_ts>
          <short_desc>REGRESSION (r125592): Crash in Console::addMessage, under InjectedBundle::reportException</short_desc>
          <delta_ts>2012-08-17 16:06:17 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>OS X 10.8</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>94390</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kevin M. Dean">kevin</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>jberlin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>697107</commentid>
    <comment_count>0</comment_count>
    <who name="Kevin M. Dean">kevin</who>
    <bug_when>2012-08-16 07:24:38 -0700</bug_when>
    <thetext>Seems to crash relatively quickly just loading pages.

Process:         WebProcess [14057]
Path:            /Applications/WebKit.app/Contents/Frameworks/10.8/WebKit2.framework/WebProcess.app/Contents/MacOS/WebProcess
Identifier:      com.apple.WebProcess
Version:         537+ (537.6+)
Code Type:       X86-64 (Native)
Parent Process:  ??? [1]
User ID:         501

Date/Time:       2012-08-16 02:54:08.334 -0400
OS Version:      Mac OS X 10.8 (12A269)
Report Version:  10

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000008

VM Regions Near 0x8:
--&gt; 
    __TEXT                 0000000104323000-0000000104324000 [    4K] r-x/rwx SM=COW  /Applications/WebKit.app/Contents/Frameworks/10.8/WebKit2.framework/WebProcess.app/Contents/MacOS/WebProcess

Application Specific Information:
Bundle controller class:
BrowserBundleController
 

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebCore             	0x0000000104b381ae WebCore::Console::addMessage(WebCore::MessageSource, WebCore::MessageType, WebCore::MessageLevel, WTF::String const&amp;, WTF::String const&amp;, unsigned int, WTF::PassRefPtr&lt;WebCore::ScriptCallStack&gt;) + 46
1   com.apple.WebCore             	0x0000000104c24a68 WebCore::Document::addMessage(WebCore::MessageSource, WebCore::MessageType, WebCore::MessageLevel, WTF::String const&amp;, WTF::String const&amp;, unsigned int, WTF::PassRefPtr&lt;WebCore::ScriptCallStack&gt;) + 232
2   com.apple.WebCore             	0x00000001054c6849 WebCore::ScriptExecutionContext::addConsoleMessage(WebCore::MessageSource, WebCore::MessageType, WebCore::MessageLevel, WTF::String const&amp;, WTF::String const&amp;, unsigned int, WTF::PassRefPtr&lt;WebCore::ScriptCallStack&gt;) + 57
3   com.apple.WebCore             	0x0000000104c1d2f0 non-virtual thunk to WebCore::Document::logExceptionToConsole(WTF::String const&amp;, WTF::String const&amp;, int, WTF::PassRefPtr&lt;WebCore::ScriptCallStack&gt;) + 64
4   com.apple.WebCore             	0x00000001054c757b WebCore::ScriptExecutionContext::reportException(WTF::String const&amp;, int, WTF::String const&amp;, WTF::PassRefPtr&lt;WebCore::ScriptCallStack&gt;) + 395
5   com.apple.WebCore             	0x000000010501e9e1 WebCore::reportException(JSC::ExecState*, JSC::JSValue) + 1153
6   com.apple.WebKit2             	0x000000010437f566 WebKit::InjectedBundle::reportException(OpaqueJSContext const*, OpaqueJSValue const*) + 68
7   com.apple.Safari.framework    	0x00007fff8a5b3fe4 Safari::EventTarget::handleEvent(Safari::Event*, Safari::RegisteredEventListener const&amp;) + 134
8   com.apple.Safari.framework    	0x00007fff8a5b3eda Safari::EventTarget::fireEventListeners(Safari::Event*, Safari::EventTargetTracker*) + 312
9   com.apple.Safari.framework    	0x00007fff8a5b3aff Safari::EventTarget::fireEventListeners(Safari::Event*) + 173
10  com.apple.Safari.framework    	0x00007fff8a5b3a0e Safari::EventTarget::dispatchEvent(Safari::Event*) + 370
11  com.apple.Safari.framework    	0x00007fff8a57c736 Safari::ContentExtension::dispatchMessageToPage(Safari::WK::String const&amp;, Safari::WK::SerializedScriptValue const&amp;, Safari::WK::BundlePage const&amp;) + 128
12  com.apple.Safari.framework    	0x00007fff8a57f70c Safari::ContentExtension::handleMessage(Safari::WK::String const&amp;, Safari::WK::Type const&amp;) + 140
13  com.apple.Safari.framework    	0x00007fff8a4e318a Safari::BrowserBundleController::dispatchMessage(Safari::WK::String const&amp;, Safari::WK::Type const&amp;) + 62
14  com.apple.Safari.framework    	0x00007fff8a4e18ca Safari::BrowserBundleController::didReceiveMessage(Safari::WK::Bundle const&amp;, Safari::WK::String const&amp;, Safari::WK::Type const&amp;) + 40
15  com.apple.Safari.framework    	0x00007fff8a565983 Safari::WK::didReceiveMessage(OpaqueWKBundle const*, OpaqueWKString const*, void const*, void const*) + 91
16  com.apple.WebKit2             	0x0000000104382918 WebKit::InjectedBundleClient::didReceiveMessage(WebKit::InjectedBundle*, WTF::String const&amp;, WebKit::APIObject*) + 134
17  com.apple.WebKit2             	0x000000010437f627 WebKit::InjectedBundle::didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) + 97
18  com.apple.WebKit2             	0x00000001043cfa4f WebKit::WebConnectionToUIProcess::didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*) + 179
19  com.apple.WebKit2             	0x000000010436b5d7 CoreIPC::Connection::dispatchMessage(CoreIPC::Connection::Message&lt;CoreIPC::ArgumentDecoder&gt;&amp;) + 175
20  com.apple.WebKit2             	0x000000010436cb0b CoreIPC::Connection::dispatchOneMessage() + 139
21  com.apple.WebCore             	0x00000001054b24c8 WebCore::RunLoop::performWork() + 312
22  com.apple.WebCore             	0x00000001054b2b45 WebCore::RunLoop::performWork(void*) + 53
23  com.apple.CoreFoundation      	0x00007fff95029841 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
24  com.apple.CoreFoundation      	0x00007fff9502922d __CFRunLoopDoSources0 + 445
25  com.apple.CoreFoundation      	0x00007fff9504c4e5 __CFRunLoopRun + 789
26  com.apple.CoreFoundation      	0x00007fff9504bdd2 CFRunLoopRunSpecific + 290
27  com.apple.HIToolbox           	0x00007fff8dbf2774 RunCurrentEventLoopInMode + 209
28  com.apple.HIToolbox           	0x00007fff8dbf2512 ReceiveNextEventCommon + 356
29  com.apple.HIToolbox           	0x00007fff8dbf23a3 BlockUntilNextEventMatchingListInMode + 62
30  com.apple.AppKit              	0x00007fff8cd83fa3 _DPSNextEvent + 685
31  com.apple.AppKit              	0x00007fff8cd83862 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128
32  com.apple.AppKit              	0x00007fff8cd7ac03 -[NSApplication run] + 517
33  com.apple.WebCore             	0x00000001054b3123 WebCore::RunLoop::run() + 67
34  com.apple.WebKit2             	0x000000010444f895 WebKit::WebProcessMain(WebKit::CommandLine const&amp;) + 2565
35  com.apple.WebKit2             	0x00000001043fc527 WebKitMain + 271
36  com.apple.WebProcess          	0x0000000104323e7b main + 214
37  libdyld.dylib                 	0x00007fff8ffe57e1 start + 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697209</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-16 09:33:54 -0700</bug_when>
    <thetext>Could you please find out which extension triggers this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697369</commentid>
    <comment_count>2</comment_count>
    <who name="Kevin M. Dean">kevin</who>
    <bug_when>2012-08-16 12:38:21 -0700</bug_when>
    <thetext>Franker 1.3.1

https://code.google.com/p/franker/

If I open Webkit with Just Franker active, it&apos;ll load the webkit start page. Then if I select my Macworld bookmark it&apos;ll mostly load then crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697380</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-16 12:49:49 -0700</bug_when>
    <thetext>Perfect, this is immediately reproducible when opening macworld.com with the Franker extension installed.

Adam, my bisecting shows that this started with DOMWindow::document() refactoring in r125592, would you be willing to take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697402</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-16 13:04:08 -0700</bug_when>
    <thetext>Sure.  How to I install the Franker extension?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697404</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-16 13:07:03 -0700</bug_when>
    <thetext>I went to https://extensions.apple.com and https://ssl.apple.com/search/?q=fanker&amp;section=global&amp;geo=us but couldn&apos;t find anything named Franker.  Do you have a link?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697405</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-16 13:07:28 -0700</bug_when>
    <thetext>https://code.google.com/p/franker/downloads/list similarly doesn&apos;t have an extension listed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697407</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-16 13:08:36 -0700</bug_when>
    <thetext>Found it http://franker.googlecode.com/svn/release/Franker.safariextz</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697427</commentid>
    <comment_count>8</comment_count>
    <who name="Kevin M. Dean">kevin</who>
    <bug_when>2012-08-16 13:18:19 -0700</bug_when>
    <thetext>There appears to be another extension exploiting the same bug since I&apos;m periodically having crashes when just opening links from the the bug report emails or from this page. Franker is disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697429</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-16 13:22:03 -0700</bug_when>
    <thetext>It&apos;s very likely that the null-check on line 165 of JSDOMBinding.cpp should instead check whether the DOMWindow isCurrentlyDisplayedInFrame.  /me is verifying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697432</commentid>
    <comment_count>10</comment_count>
    <who name="Kevin M. Dean">kevin</who>
    <bug_when>2012-08-16 13:24:02 -0700</bug_when>
    <thetext>Ok,  the other extension and different test is:

Maximieren 0.95
http://www.apfelquak.de/2010/06/12/maximize-safari-extension/

With this extension active, I open Webkit close the window and then go to my bug report email and click the link to open the bug page. The window starts to appear transparent and zooming to size but crashes before it completes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697436</commentid>
    <comment_count>11</comment_count>
      <attachid>158886</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-16 13:27:39 -0700</bug_when>
    <thetext>Created attachment 158886
fixes the problem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697437</commentid>
    <comment_count>12</comment_count>
      <attachid>158887</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-16 13:28:04 -0700</bug_when>
    <thetext>Created attachment 158887
fixes the problem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697440</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-16 13:28:50 -0700</bug_when>
    <thetext>What&apos;s the recommended way to test bugs that only reproduce because of Safari&apos;s extension system?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697447</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-16 13:32:58 -0700</bug_when>
    <thetext>By the way, I believe the remaining null check on the ScriptExecutionContext isn&apos;t needed.  I&apos;m just slightly hesitant to change it since we don&apos;t appear to have much test coverage of this function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697463</commentid>
    <comment_count>15</comment_count>
      <attachid>158887</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-16 13:41:05 -0700</bug_when>
    <thetext>Comment on attachment 158887
fixes the problem

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

So, extensions run scripts in frameless windows? I still don&apos;t know a lot about how extensions work.

I wonder if we should add a special mode for tests then, where scripts would not be blocked in frameless windows, as they normally are.

&gt; Source/WebCore/bindings/js/JSDOMBinding.cpp:167
&gt;      // scriptExecutionContext can be null when the relevant global object is a stale inner window object.
&gt;      // It&apos;s harmless to return here without reporting the exception to the log and the debugger in this case.

Is this still true? As we&apos;re starting with activeDOMWindow, it sounds like it can not be stale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697464</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-16 13:41:37 -0700</bug_when>
    <thetext>&gt; Is this still true? As we&apos;re starting with activeDOMWindow, it sounds like it can not be stale.

I now see that you said the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697479</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-16 13:49:53 -0700</bug_when>
    <thetext>&gt; So, extensions run scripts in frameless windows? I still don&apos;t know a lot about how extensions work.

There shouldn&apos;t be any behavior change with after this patch.  The console messages for inactive frames were getting dropped on the floor before this patch and will continue to be dropped after this patch.

In more detail, DOMWindow-&gt;scriptExecutionContext used to return 0 when the DOMWindow wasn&apos;t being displayed in a Frame.  r125592 changed things so that it returns a real scriptExecutionContext in these cases.  Now the way you check whether the DOMWindow is being displayed in a Frame is by calling DOMWindow-&gt;isCurrentlyDisplayedInFrame.

&gt; I wonder if we should add a special mode for tests then, where scripts would not be blocked in frameless windows, as they normally are.

I think there&apos;s some confusion here.  Nothing has changed about whether or not scripts can run in frameless windows.

&gt; &gt; Source/WebCore/bindings/js/JSDOMBinding.cpp:167
&gt; &gt;      // scriptExecutionContext can be null when the relevant global object is a stale inner window object.
&gt; &gt;      // It&apos;s harmless to return here without reporting the exception to the log and the debugger in this case.
&gt; 
&gt; Is this still true? As we&apos;re starting with activeDOMWindow, it sounds like it can not be stale.

&quot;stale&quot; isn&apos;t a useful term to use in this discussion.  The script that is running is associated with a particular DOMWindow.  That&apos;s the DOMWindow that is currently active (i.e., running script right now).  There&apos;s a separate question of whether that DOMWindow is currently displayed in a Frame.  It&apos;s possible for DOMWindows that are not displayed in Frames to execute script.  It&apos;s just not possible for them to add messages to the Console.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697509</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-16 14:14:00 -0700</bug_when>
    <thetext>&gt; I think there&apos;s some confusion here.  Nothing has changed about whether or not scripts can run in frameless windows.

That&apos;s understood.

&gt; It&apos;s possible for DOMWindows that are not displayed in Frames to execute script.

This is what I&apos;m confused about. When is this possible? Looking at this patch, I thought that extensions were creating a frameless window of their own, and running scripts there. What are the cases when DOMWindows that are not displayed in Frames execute scripts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697527</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-16 14:30:52 -0700</bug_when>
    <thetext>&gt; This is what I&apos;m confused about. When is this possible? Looking at this patch, I thought that extensions were creating a frameless window of their own, and running scripts there. What are the cases when DOMWindows that are not displayed in Frames execute scripts?

The easiest way is to have an iframe that defines a function.  The parent page takes a reference to that function and then destroys the iframe.  Afterwards, the parent page can still call the function from the destroyed iframe.

Another way (and this one is fairly common to do by accident) is to be executing some script that causes the iframe you&apos;re in to be destroyed (e.g., by mutating the DOM of your parent frame or by triggering a synchronous load of about:blank).  After your frame is destroyed, your script continues to execute.

It&apos;s hard for me to tell what&apos;s happening in this case because Safari.framework is just calling reportException directly (i.e., there isn&apos;t any JavaScript on the stack above WebCore::reportException).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698000</commentid>
    <comment_count>20</comment_count>
      <attachid>159034</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-17 00:58:27 -0700</bug_when>
    <thetext>Created attachment 159034
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698477</commentid>
    <comment_count>21</comment_count>
      <attachid>159034</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-17 10:46:07 -0700</bug_when>
    <thetext>Comment on attachment 159034
Patch

Clearing flags on attachment: 159034

Committed r125912: &lt;http://trac.webkit.org/changeset/125912&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698478</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-17 10:46:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158886</attachid>
            <date>2012-08-16 13:27:39 -0700</date>
            <delta_ts>2012-08-16 13:28:01 -0700</delta_ts>
            <desc>fixes the problem</desc>
            <filename>bug-94220-20120816132704.patch</filename>
            <type>text/plain</type>
            <size>1537</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmNwcAppbmRleCA1OWY1NWFlY2ZhY2FlNjJiZWY3MTA0NmFkN2MwNWEyYWVl
ZWNlNWM2Li5hZjViYTdkZGRjYjZmMWVlMWQxODc0NWQ1MGViZjFjMTg1ZWRiNjhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTE1OCwxNCArMTU4
LDE3IEBAIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBleGNl
cHRpb24pCiAgICAgaWYgKEV4Y2VwdGlvbkJhc2UqIGV4Y2VwdGlvbkJhc2UgPSB0b0V4Y2VwdGlv
bkJhc2UoZXhjZXB0aW9uKSkKICAgICAgICAgZXJyb3JNZXNzYWdlID0gc3RyaW5nVG9VU3RyaW5n
KGV4Y2VwdGlvbkJhc2UtPm1lc3NhZ2UoKSArICI6ICIgICsgZXhjZXB0aW9uQmFzZS0+ZGVzY3Jp
cHRpb24oKSk7CiAKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIERPTVdpbmRvdyogYWN0aXZl
V2luZG93ID0gYWN0aXZlRE9NV2luZG93KGV4ZWMpOworICAgIGlmICghYWN0aXZlV2luZG93LT5p
c0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBhY3RpdmVXaW5kb3ct
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKIAogICAgIC8vIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgY2FuIGJlIG51bGwgd2hlbiB0aGUgcmVsZXZhbnQgZ2xvYmFsIG9iamVjdCBpcyBhIHN0YWxl
IGlubmVyIHdpbmRvdyBvYmplY3QuCiAgICAgLy8gSXQncyBoYXJtbGVzcyB0byByZXR1cm4gaGVy
ZSB3aXRob3V0IHJlcG9ydGluZyB0aGUgZXhjZXB0aW9uIHRvIHRoZSBsb2cgYW5kIHRoZSBkZWJ1
Z2dlciBpbiB0aGlzIGNhc2UuCiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5yZXBvcnRFeGNlcHRp
b24odXN0cmluZ1RvU3RyaW5nKGVycm9yTWVzc2FnZSksIGxpbmVOdW1iZXIsIHVzdHJpbmdUb1N0
cmluZyhleGNlcHRpb25Tb3VyY2VVUkwpLCAwKTsKKyAgICBhY3RpdmVXaW5kb3ctPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+cmVwb3J0RXhjZXB0aW9uKHVzdHJpbmdUb1N0cmluZyhlcnJvck1l
c3NhZ2UpLCBsaW5lTnVtYmVyLCB1c3RyaW5nVG9TdHJpbmcoZXhjZXB0aW9uU291cmNlVVJMKSwg
MCk7CiB9CiAKIHZvaWQgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158887</attachid>
            <date>2012-08-16 13:28:04 -0700</date>
            <delta_ts>2012-08-17 00:58:24 -0700</delta_ts>
            <desc>fixes the problem</desc>
            <filename>bug-94220-20120816132729.patch</filename>
            <type>text/plain</type>
            <size>1158</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmNwcAppbmRleCA1OWY1NWFlY2ZhY2FlNjJiZWY3MTA0NmFkN2MwNWEyYWVl
ZWNlNWM2Li4yM2EzZGY2ZGJlODI3ZDQ1ZmUzOTg1OThmM2ZiODI0MjRiNDAwMTYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTE1OCw3ICsxNTgs
MTAgQEAgdm9pZCByZXBvcnRFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGV4Y2Vw
dGlvbikKICAgICBpZiAoRXhjZXB0aW9uQmFzZSogZXhjZXB0aW9uQmFzZSA9IHRvRXhjZXB0aW9u
QmFzZShleGNlcHRpb24pKQogICAgICAgICBlcnJvck1lc3NhZ2UgPSBzdHJpbmdUb1VTdHJpbmco
ZXhjZXB0aW9uQmFzZS0+bWVzc2FnZSgpICsgIjogIiAgKyBleGNlcHRpb25CYXNlLT5kZXNjcmlw
dGlvbigpKTsKIAotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgRE9NV2luZG93KiBhY3RpdmVX
aW5kb3cgPSBhY3RpdmVET01XaW5kb3coZXhlYyk7CisgICAgaWYgKCFhY3RpdmVXaW5kb3ctPmlz
Q3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpKQorICAgICAgICByZXR1cm47CisgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGFjdGl2ZVdpbmRvdy0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogCiAgICAgLy8gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCBjYW4gYmUgbnVsbCB3aGVuIHRoZSByZWxldmFudCBnbG9iYWwgb2JqZWN0IGlzIGEgc3RhbGUg
aW5uZXIgd2luZG93IG9iamVjdC4KICAgICAvLyBJdCdzIGhhcm1sZXNzIHRvIHJldHVybiBoZXJl
IHdpdGhvdXQgcmVwb3J0aW5nIHRoZSBleGNlcHRpb24gdG8gdGhlIGxvZyBhbmQgdGhlIGRlYnVn
Z2VyIGluIHRoaXMgY2FzZS4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159034</attachid>
            <date>2012-08-17 00:58:27 -0700</date>
            <delta_ts>2012-08-17 10:46:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94220-20120817005751.patch</filename>
            <type>text/plain</type>
            <size>2895</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1ODExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWRmM2VhODcyYzgxZTll
MmViNzY1OTU3ZmNiZWM2N2EwZjI4MzM0Ny4uNDM3MTE2N2M0MTU1NGQ5ZjMyOWVlZDU4NThiNjZm
MDYwOGJjNTM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTA4LTE3ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjEyNTU5
Mik6IENyYXNoIGluIENvbnNvbGU6OmFkZE1lc3NhZ2UsIHVuZGVyIEluamVjdGVkQnVuZGxlOjpy
ZXBvcnRFeGNlcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk0MjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUHJldmlvdXNseSwgdGhpcyBjb2RlIHdhcyB0cnlpbmcgdG8gZGV0ZWN0IHdoZXRoZXIg
YSBET01XaW5kb3cgaXMKKyAgICAgICAgY3VycmVudGx5IGRpc3BsYXllZCBpbiBhIEZyYW1lIGJ5
IHRlc3Rpbmcgd2hldGhlcgorICAgICAgICBET01XaW5kb3ctPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQgaXMgemVyby4gVGhhdCB1c2VkIHRvIHdvcmssIGJ1dCBub3cKKyAgICAgICAgdGhhdCBET01X
aW5kb3ctPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgaXMgbm9uLXplcm8gZm9yIGRldGFjaGVkCisg
ICAgICAgIERPTVdpbmRvdywgdGhpcyBjb2RlIGRvZXNuJ3Qgd29yayBhbnltb3JlLiBUaGlzIHBh
dGNoIHJlcGxhY2VzIHRoZSBjb2RlCisgICAgICAgIHdpdGggdGhlIGN1cnJlbnQgaWRpb20sIHdo
aWNoIGlzIHRvIGNhbGwKKyAgICAgICAgRE9NV2luZG93Ojppc0N1cnJlbnREaXNwbGF5ZWRJbkZy
YW1lLgorCisgICAgICAgIEFsZXhleSBhbmQgSSBjb3VsZG4ndCBmaWd1cmUgb3V0IGhvdyB0byB0
ZXN0IHRoaXMgY2hhbmdlLiBUaGlzIGJ1ZworICAgICAgICBjYXVzZXMgYSBjcmFzaCB3aGVuIHNv
bWUgU2FmYXJpIGV4dGVuc2lvbnMgYXJlIGluc3RhbGxlZCwgYnV0IGl0J3Mgbm90CisgICAgICAg
IGNsZWFyIHdoZXRoZXIgdGhpcyBidWcgY2FuIGJlIHRyaWdnZXJlZCBmcm9tIHRoZSB3ZWIgcGxh
dGZvcm0uIFdlJ3JlCisgICAgICAgIGdvaW5nIHRvIGFzayBKZXNzaWUgZm9yIGlkZWFzIHdoZW4g
c2hlIGdldHMgYmFjayBmcm9tIHZhY2F0aW9uLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbik6CisKIDIw
MTItMDgtMTYgIE1heCBGZWlsICA8bWZlaWxAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJy
eV0gU29tZSBtZWRpYSBjb250cm9scyBhcmUgbWlzcG9zaXRpb25lZCBmb3IgZHluYW1pYyBsaXZl
IHN0cmVhbXMgKEhMUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcu
Y3BwCmluZGV4IDU5ZjU1YWVjZmFjYWU2MmJlZjcxMDQ2YWQ3YzA1YTJhZWVlY2U1YzYuLjBiNzcz
MzJiM2UyYzhhZDIwMzI1YTQ4NjFjNzhmMjg0NzgzMGYyOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApAQCAtMTU4LDE0ICsxNTgsMTAgQEAgdm9pZCBy
ZXBvcnRFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGV4Y2VwdGlvbikKICAgICBp
ZiAoRXhjZXB0aW9uQmFzZSogZXhjZXB0aW9uQmFzZSA9IHRvRXhjZXB0aW9uQmFzZShleGNlcHRp
b24pKQogICAgICAgICBlcnJvck1lc3NhZ2UgPSBzdHJpbmdUb1VTdHJpbmcoZXhjZXB0aW9uQmFz
ZS0+bWVzc2FnZSgpICsgIjogIiAgKyBleGNlcHRpb25CYXNlLT5kZXNjcmlwdGlvbigpKTsKIAot
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci0KLSAgICAvLyBzY3JpcHRFeGVjdXRpb25Db250ZXh0IGNh
biBiZSBudWxsIHdoZW4gdGhlIHJlbGV2YW50IGdsb2JhbCBvYmplY3QgaXMgYSBzdGFsZSBpbm5l
ciB3aW5kb3cgb2JqZWN0LgotICAgIC8vIEl0J3MgaGFybWxlc3MgdG8gcmV0dXJuIGhlcmUgd2l0
aG91dCByZXBvcnRpbmcgdGhlIGV4Y2VwdGlvbiB0byB0aGUgbG9nIGFuZCB0aGUgZGVidWdnZXIg
aW4gdGhpcyBjYXNlLgotICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICBET01X
aW5kb3cqIGFjdGl2ZVdpbmRvdyA9IGFjdGl2ZURPTVdpbmRvdyhleGVjKTsKKyAgICBpZiAoIWFj
dGl2ZVdpbmRvdy0+aXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCiAgICAgICAgIHJldHVy
bjsKLQotICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnJlcG9ydEV4Y2VwdGlvbih1c3RyaW5n
VG9TdHJpbmcoZXJyb3JNZXNzYWdlKSwgbGluZU51bWJlciwgdXN0cmluZ1RvU3RyaW5nKGV4Y2Vw
dGlvblNvdXJjZVVSTCksIDApOworICAgIGFjdGl2ZVdpbmRvdy0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5yZXBvcnRFeGNlcHRpb24odXN0cmluZ1RvU3RyaW5nKGVycm9yTWVzc2FnZSksIGxp
bmVOdW1iZXIsIHVzdHJpbmdUb1N0cmluZyhleGNlcHRpb25Tb3VyY2VVUkwpLCAwKTsKIH0KIAog
dm9pZCByZXBvcnRDdXJyZW50RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykK
</data>

          </attachment>
      

    </bug>

</bugzilla>