<?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>53211</bug_id>
          
          <creation_ts>2011-01-26 17:28:48 -0800</creation_ts>
          <short_desc>Need a way to spin a run loop while waiting for a reply to a synchronous CoreIPC message</short_desc>
          <delta_ts>2011-04-11 14:27:25 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>58239</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>53209</dependson>
          <blocked>51352</blocked>
    
    <blocked>58239</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>340630</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-26 17:28:48 -0800</bug_when>
    <thetext>In order to fix bug 51352, we&apos;ll need a way to spin a message loop while waiting for a reply to a synchronous CoreIPC message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340683</commentid>
    <comment_count>1</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-01-26 18:16:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/8922494&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342624</commentid>
    <comment_count>2</comment_count>
      <attachid>80650</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-31 09:47:38 -0800</bug_when>
    <thetext>Created attachment 80650
WIP patch for discussion (depends on bug 53209)

With this patch and the patch for bug 53209, we spin a run loop while waiting for synchronous message replies. However, we seem to hit assertions/crashes pretty easily with this patch due to unexpected reentrancy in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342625</commentid>
    <comment_count>3</comment_count>
      <attachid>80650</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-31 09:51:58 -0800</bug_when>
    <thetext>Comment on attachment 80650
WIP patch for discussion (depends on bug 53209)

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

&gt; Source/WebKit2/Platform/CoreIPC/Connection.h:261
&gt; +    bool m_isWaitingForSyncReply;
&gt; +    bool m_shouldDispatchMessagesAfterReceivingSyncReply;

These members were added to try to fix an assertion I was hitting in Connection::processIncomingMessage:

        ASSERT(pendingSyncReply.syncRequestID == arguments-&gt;destinationID());

However, the assertion still seems to happen in some cases (e.g., when loading cuteoverload.com).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342635</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-31 10:03:44 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 80650 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=80650&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Platform/CoreIPC/Connection.h:261
&gt; &gt; +    bool m_isWaitingForSyncReply;
&gt; &gt; +    bool m_shouldDispatchMessagesAfterReceivingSyncReply;
&gt; 
&gt; These members were added to try to fix an assertion I was hitting in Connection::processIncomingMessage:
&gt; 
&gt;         ASSERT(pendingSyncReply.syncRequestID == arguments-&gt;destinationID());
&gt; 
&gt; However, the assertion still seems to happen in some cases (e.g., when loading cuteoverload.com).

Here&apos;s the backtrace on the main thread when that assertion fails on the Connection&apos;s WorkQueue. I guess we need to defer loading or something?


 	ntdll.dll!_ZwWaitForMultipleObjects@20()  + 0x15 bytes	
 	ntdll.dll!_ZwWaitForMultipleObjects@20()  + 0x15 bytes	
 	kernel32.dll!_WaitForMultipleObjectsExImplementation@20()  + 0x8e bytes	
 	kernel32.dll!_WaitForMultipleObjectsExImplementation@20()  + 0x8e bytes	
 	user32.dll!_RealMsgWaitForMultipleObjectsEx@20()  + 0xe2 bytes	
&gt;	WebKit.dll!RunLoop::runUntil(const CoreIPC::BinarySemaphore * semaphore=0x00630c0c, double absoluteTime=11296496739.844786)  Line 85 + 0x32 bytes	C++
 	WebKit.dll!CoreIPC::Connection::waitForSyncReply(unsigned __int64 syncRequestID=16, double timeout=10000000000.000000)  Line 269 + 0x17 bytes	C++
 	WebKit.dll!CoreIPC::Connection::sendSyncMessage(CoreIPC::MessageID messageID={...}, unsigned __int64 syncRequestID=16, WTF::PassOwnPtr&lt;CoreIPC::ArgumentEncoder&gt; encoder={...}, double timeout=10000000000.000000)  Line 203 + 0x1d bytes	C++
 	WebKit.dll!CoreIPC::Connection::sendSync&lt;Messages::WebPageProxy::DecidePolicyForMIMEType&gt;(const Messages::WebPageProxy::DecidePolicyForMIMEType &amp; message={...}, const CoreIPC::Arguments3&lt;bool &amp;,unsigned __int64 &amp;,unsigned __int64 &amp;&gt; &amp; reply={...}, unsigned __int64 destinationID=1, double timeout=10000000000.000000)  Line 323 + 0x36 bytes	C++
 	WebKit.dll!CoreIPC::MessageSender&lt;WebKit::WebPage&gt;::sendSync&lt;Messages::WebPageProxy::DecidePolicyForMIMEType&gt;(const Messages::WebPageProxy::DecidePolicyForMIMEType &amp; message={...}, const CoreIPC::Arguments3&lt;bool &amp;,unsigned __int64 &amp;,unsigned __int64 &amp;&gt; &amp; reply={...}, unsigned __int64 destinationID=1, double timeout=10000000000.000000)  Line 68	C++
 	WebKit.dll!CoreIPC::MessageSender&lt;WebKit::WebPage&gt;::sendSync&lt;Messages::WebPageProxy::DecidePolicyForMIMEType&gt;(const Messages::WebPageProxy::DecidePolicyForMIMEType &amp; message={...}, const CoreIPC::Arguments3&lt;bool &amp;,unsigned __int64 &amp;,unsigned __int64 &amp;&gt; &amp; reply={...}, double timeout=10000000000.000000)  Line 60	C++
 	WebKit.dll!WebKit::WebFrameLoaderClient::dispatchDecidePolicyForMIMEType(void (WebCore::PolicyAction)* function=0x5b886730, const WTF::String &amp; MIMEType={...}, const WebCore::ResourceRequest &amp; request={...})  Line 627 + 0x91 bytes	C++
 	WebKit.dll!WebCore::PolicyChecker::checkContentPolicy(const WTF::String &amp; MIMEType={...}, void (void *, WebCore::PolicyAction)* function=0x5b9e14f0, void * argument=0x0407fb08)  Line 104 + 0x48 bytes	C++
 	WebKit.dll!WebCore::MainResourceLoader::didReceiveResponse(const WebCore::ResourceResponse &amp; r={...})  Line 408	C++
 	WebKit.dll!WebCore::ResourceLoader::didReceiveResponse(WebCore::ResourceHandle * __formal=0x057b7098, const WebCore::ResourceResponse &amp; response={...})  Line 422 + 0x13 bytes	C++
 	WebKit.dll!WebCore::didReceiveResponse(_CFURLConnection * conn=0x03c5de68, _CFURLResponse * cfResponse=0x03b36f30, const void * clientInfo=0x057b7098)  Line 199 + 0x3d bytes	C++
 	CFNetwork.dll!URLConnectionClient::_clientSendDidReceiveResponse(_CFURLResponse * response=0x03b36f30, URLConnectionClient::ClientConnectionEventQueue * preQ=0x0035e5e8)  Line 1128 + 0x2f bytes	C++
 	CFNetwork.dll!URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo&lt;enum XClientEvent,XClientEventParams&gt; * e=0x0035e768, long count=3)  Line 2154	C++
 	CFNetwork.dll!URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo&lt;enum XClientEvent,XClientEventParams&gt; * e=0x0035e900, long count=3)  Line 2192 + 0x19 bytes	C++
 	CFNetwork.dll!URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo&lt;enum XClientEvent,XClientEventParams&gt; * e=0x0035ea5c, long count=1)  Line 2192 + 0x19 bytes	C++
 	CFNetwork.dll!URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo&lt;enum XClientEvent,XClientEventParams&gt; * e=0x0035ebd0, long count=1)  Line 2192 + 0x19 bytes	C++
 	CFNetwork.dll!URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo&lt;enum XClientEvent,XClientEventParams&gt; * e=0x0035ed44, long count=1)  Line 2192 + 0x19 bytes	C++
 	CFNetwork.dll!URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo&lt;enum XClientEvent,XClientEventParams&gt; * e=0x03ad20e0, long count=1)  Line 2192 + 0x19 bytes	C++
 	CFNetwork.dll!URLConnectionClient::processEvents()  Line 330 + 0x21 bytes	C++
 	CFNetwork.dll!URLConnectionWndProc(HWND__ * hWnd=0x0006038c, unsigned int message=1231, unsigned int wParam=63299176, long lParam=0)  Line 107	C++
 	user32.dll!_InternalCallWinProc@20()  + 0x23 bytes	
 	user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes	
 	user32.dll!_DispatchMessageWorker@8()  + 0xed bytes	
 	user32.dll!_DispatchMessageW@4()  + 0xf bytes	
 	WebKit.dll!RunLoop::runUntil(const CoreIPC::BinarySemaphore * semaphore=0x00630c0c, double absoluteTime=11296496739.844482)  Line 99 + 0xc bytes	C++
 	WebKit.dll!CoreIPC::Connection::waitForSyncReply(unsigned __int64 syncRequestID=15, double timeout=10000000000.000000)  Line 269 + 0x17 bytes	C++
 	WebKit.dll!CoreIPC::Connection::sendSyncMessage(CoreIPC::MessageID messageID={...}, unsigned __int64 syncRequestID=15, WTF::PassOwnPtr&lt;CoreIPC::ArgumentEncoder&gt; encoder={...}, double timeout=10000000000.000000)  Line 203 + 0x1d bytes	C++
 	WebKit.dll!CoreIPC::Connection::sendSync&lt;Messages::WebPageProxy::CanRunBeforeUnloadConfirmPanel&gt;(const Messages::WebPageProxy::CanRunBeforeUnloadConfirmPanel &amp; message={...}, const CoreIPC::Arguments1&lt;bool &amp;&gt; &amp; reply={...}, unsigned __int64 destinationID=1, double timeout=10000000000.000000)  Line 323 + 0x36 bytes	C++
 	WebKit.dll!WebKit::WebChromeClient::canRunBeforeUnloadConfirmPanel()  Line 254 + 0x76 bytes	C++
 	WebKit.dll!WebCore::Chrome::canRunBeforeUnloadConfirmPanel()  Line 266 + 0x17 bytes	C++
 	WebKit.dll!WebCore::FrameLoader::shouldClose()  Line 2878 + 0xe bytes	C++
 	WebKit.dll!WebCore::FrameLoader::continueLoadAfterNavigationPolicy(const WebCore::ResourceRequest &amp; __formal={...}, WTF::PassRefPtr&lt;WebCore::FormState&gt; formState={...}, bool shouldContinue=true)  Line 2943 + 0x10 bytes	C++
 	WebKit.dll!WebCore::FrameLoader::callContinueLoadAfterNavigationPolicy(void * argument=0x03ad2720, const WebCore::ResourceRequest &amp; request={...}, WTF::PassRefPtr&lt;WebCore::FormState&gt; formState={...}, bool shouldContinue=true)  Line 2872	C++
 	WebKit.dll!WebCore::PolicyCallback::call(bool shouldContinue=true)  Line 102 + 0x34 bytes	C++
 	WebKit.dll!WebCore::PolicyChecker::continueAfterNavigationPolicy(WebCore::PolicyAction policy=PolicyUse)  Line 161	C++
 	WebKit.dll!WebKit::WebFrame::didReceivePolicyDecision(unsigned __int64 listenerID=10, WebCore::PolicyAction action=PolicyUse, unsigned __int64 downloadID=0)  Line 213 + 0x1d bytes	C++
 	WebKit.dll!WebKit::WebPage::didReceivePolicyDecision(unsigned __int64 frameID=6, unsigned __int64 listenerID=10, unsigned int policyAction=0, unsigned __int64 downloadID=0)  Line 1100	C++
 	WebKit.dll!CoreIPC::callMemberFunction&lt;WebKit::WebPage,void (__thiscall WebKit::WebPage::*)(unsigned __int64,unsigned __int64,unsigned int,unsigned __int64),unsigned __int64,unsigned __int64,unsigned int,unsigned __int64&gt;(const CoreIPC::Arguments4&lt;unsigned __int64,unsigned __int64,unsigned int,unsigned __int64&gt; &amp; args={...}, WebKit::WebPage * object=0x00631608, void (unsigned __int64, unsigned __int64, unsigned int, unsigned __int64)* function=0x5ae323b0)  Line 37 + 0x32 bytes	C++
 	WebKit.dll!CoreIPC::handleMessage&lt;Messages::WebPage::DidReceivePolicyDecision,WebKit::WebPage,void (__thiscall WebKit::WebPage::*)(unsigned __int64,unsigned __int64,unsigned int,unsigned __int64)&gt;(CoreIPC::ArgumentDecoder * argumentDecoder=0x040e5ed8, WebKit::WebPage * object=0x00631608, void (unsigned __int64, unsigned __int64, unsigned int, unsigned __int64)* function=0x5ae323b0)  Line 222 + 0x15 bytes	C++
 	WebKit.dll!WebKit::WebPage::didReceiveWebPageMessage(CoreIPC::Connection * __formal=0x00630a88, CoreIPC::MessageID messageID={...}, CoreIPC::ArgumentDecoder * arguments=0x040e5ed8)  Line 124 + 0x2f bytes	C++
 	WebKit.dll!WebKit::WebPage::didReceiveMessage(CoreIPC::Connection * connection=0x00630a88, CoreIPC::MessageID messageID={...}, CoreIPC::ArgumentDecoder * arguments=0x040e5ed8)  Line 1652	C++
 	WebKit.dll!WebKit::WebProcess::didReceiveMessage(CoreIPC::Connection * connection=0x00630a88, CoreIPC::MessageID messageID={...}, CoreIPC::ArgumentDecoder * arguments=0x040e5ed8)  Line 537	C++
 	WebKit.dll!CoreIPC::Connection::dispatchMessages()  Line 455 + 0x31 bytes	C++
 	WebKit.dll!MemberFunctionWorkItem0&lt;CoreIPC::Connection&gt;::execute()  Line 76 + 0x10 bytes	C++
 	WebKit.dll!RunLoop::performWork()  Line 63 + 0x1a bytes	C++
 	WebKit.dll!RunLoop::wndProc(HWND__ * hWnd=0x0002039c, unsigned int message=1025, unsigned int wParam=6360784, long lParam=0)  Line 61	C++
 	WebKit.dll!RunLoop::RunLoopWndProc(HWND__ * hWnd=0x0002039c, unsigned int message=1025, unsigned int wParam=6360784, long lParam=0)  Line 43 + 0x18 bytes	C++
 	user32.dll!_InternalCallWinProc@20()  + 0x23 bytes	
 	user32.dll!_UserCallWinProcCheckWow@32()  + 0xb7 bytes	
 	user32.dll!_DispatchMessageWorker@8()  + 0xed bytes	
 	user32.dll!_DispatchMessageW@4()  + 0xf bytes	
 	WebKit.dll!RunLoop::runUntil(const CoreIPC::BinarySemaphore * semaphore=0x00000000, double absoluteTime=1.7976931348623157e+308)  Line 99 + 0xc bytes	C++
 	WebKit.dll!RunLoop::run()  Line 72 + 0x1c bytes	C++
 	WebKit.dll!WebKit::WebProcessMain(const WebKit::CommandLine &amp; commandLine={...})  Line 82	C++
 	WebKit.dll!WebKitMain(const WebKit::CommandLine &amp; commandLine={...})  Line 48 + 0x9 bytes	C++
 	WebKit.dll!WebKitMain(HINSTANCE__ * hInstance=0x01070000, HINSTANCE__ * hPrevInstance=0x00000000, wchar_t * lpstrCmdLine=0x00402768, int nCmdShow=10)  Line 172 + 0x9 bytes	C++
 	WebKit2WebProcess.exe!wWinMain(HINSTANCE__ * hInstance=0x01070000, HINSTANCE__ * hPrevInstance=0x00000000, wchar_t * lpstrCmdLine=0x00402768, int nCmdShow=10)  Line 44 + 0x18 bytes	C++
 	WebKit2WebProcess.exe!__tmainCRTStartup()  Line 589 + 0x1c bytes	C
 	kernel32.dll!@BaseThreadInitThunk@12()  + 0x12 bytes	
 	ntdll.dll!___RtlUserThreadStart@8()  + 0x27 bytes	
 	ntdll.dll!__RtlUserThreadStart@8()  + 0x1b bytes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342672</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-31 10:44:47 -0800</bug_when>
    <thetext>I&apos;m sure you&apos;re aware, but this one of the most delicate parts of getting this stuff to work reliably.  You want to have very tight control over what kinds of messages you&apos;re willing to process while waiting for a reply to a synchronous IPC message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342710</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-31 11:30:41 -0800</bug_when>
    <thetext>(In reply to comment #4)

The load that we&apos;re receiving a response for is a subresource load. It is not the main resource load for which we&apos;re waiting to find out if we can run a beforeunload panel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342728</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-31 12:04:12 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #4)
&gt; 
&gt; The load that we&apos;re receiving a response for is a subresource load.

This is not quite right. It is for a frame&apos;s main resource load.

&gt; It is not the main resource load for which we&apos;re waiting to find out if we can run a beforeunload panel.

This is still true.

The two loads are for two subframes of the main frame. One of them is waiting on the beforeunload panel, the other is waiting on the content policy check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342739</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-31 12:22:28 -0800</bug_when>
    <thetext>Sam, Anders: Any thoughts here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342766</commentid>
    <comment_count>9</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-01-31 12:54:15 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Sam, Anders: Any thoughts here?

Hmm, in this particular case, could we not dispatch win32 messages to the CFNetwork window?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342773</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-31 13:02:41 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Sam, Anders: Any thoughts here?
&gt; 
&gt; Hmm, in this particular case, could we not dispatch win32 messages to the CFNetwork window?

Yes, we could try that. But we&apos;ll also want to prevent timers (at least WebCore&apos;s timers) from firing, and there are probably other things we haven&apos;t thought of, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342829</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-31 14:52:58 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; Sam, Anders: Any thoughts here?
&gt; &gt; 
&gt; &gt; Hmm, in this particular case, could we not dispatch win32 messages to the CFNetwork window?
&gt; 
&gt; Yes, we could try that. But we&apos;ll also want to prevent timers (at least WebCore&apos;s timers) from firing, and there are probably other things we haven&apos;t thought of, too.

Deferring loading and pausing WebCore&apos;s shared timer seems to make the obvious bugs go away. Who knows what problems we&apos;ll find next!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342838</commentid>
    <comment_count>12</comment_count>
      <attachid>80683</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-01-31 14:59:58 -0800</bug_when>
    <thetext>Created attachment 80683
New WIP patch

Here&apos;s a patch that does just that (in the worst way possible).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383202</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-11 09:11:17 -0700</bug_when>
    <thetext>I&apos;m currently hoping that we can get away with only dispatching messages to web process windows that are descendants of UI process windows. And hopefully we can get away with only dispatching sent (as opposed to posted) messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383522</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-04-11 14:27:25 -0700</bug_when>
    <thetext>This got fixed as part of bug 58239.

*** This bug has been marked as a duplicate of bug 58239 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80650</attachid>
            <date>2011-01-31 09:47:38 -0800</date>
            <delta_ts>2011-01-31 14:59:58 -0800</delta_ts>
            <desc>WIP patch for discussion (depends on bug 53209)</desc>
            <filename>0002-Spin-a-run-loop-in-waitForSyncReply.patch</filename>
            <type>text/plain</type>
            <size>2671</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSAxZmFhOWE5MjE2MDc5YmY0MDliYmY1YWZhZmVkODEzZDRjM2I3MDA0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBN
b24sIDMxIEphbiAyMDExIDA5OjQ0OjE0IC0wODAwClN1YmplY3Q6IFtQQVRDSCAyLzJdIFNwaW4g
YSBydW4gbG9vcCBpbiB3YWl0Rm9yU3luY1JlcGx5CgotLS0KIFNvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAgfCAgIDE1ICsrKysrKysrKysrKysrLQogU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmggICB8ICAgIDMgKysrCiAyIGZp
bGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggMzY5YWU5Yi4u
NmFlN2IyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rp
b24uY3BwCkBAIC01NSw2ICs1NSw4IEBAIENvbm5lY3Rpb246OkNvbm5lY3Rpb24oSWRlbnRpZmll
ciBpZGVudGlmaWVyLCBib29sIGlzU2VydmVyLCBDbGllbnQqIGNsaWVudCwgUnVuCiAgICAgLCBt
X2luRGlzcGF0Y2hNZXNzYWdlQ291bnQoMCkKICAgICAsIG1fZGlkUmVjZWl2ZUludmFsaWRNZXNz
YWdlKGZhbHNlKQogICAgICwgbV9zaG91bGRXYWl0Rm9yU3luY1JlcGxpZXModHJ1ZSkKKyAgICAs
IG1faXNXYWl0aW5nRm9yU3luY1JlcGx5KGZhbHNlKQorICAgICwgbV9zaG91bGREaXNwYXRjaE1l
c3NhZ2VzQWZ0ZXJSZWNlaXZpbmdTeW5jUmVwbHkoZmFsc2UpCiB7CiAgICAgQVNTRVJUKG1fY2xp
ZW50KTsKIApAQCAtMjYyLDggKzI2NCwxNCBAQCBQYXNzT3duUHRyPEFyZ3VtZW50RGVjb2Rlcj4g
Q29ubmVjdGlvbjo6d2FpdEZvclN5bmNSZXBseSh1aW50NjRfdCBzeW5jUmVxdWVzdElELAogICAg
ICAgICAgICAgICAgIHJldHVybiBwZW5kaW5nU3luY1JlcGx5LnJlbGVhc2VSZXBseURlY29kZXIo
KTsKICAgICAgICAgfQogCisgICAgICAgIG1faXNXYWl0aW5nRm9yU3luY1JlcGx5ID0gdHJ1ZTsK
ICAgICAgICAgLy8gV2UgZGlkbid0IGZpbmQgYSBzeW5jIHJlcGx5IHlldCwga2VlcCB3YWl0aW5n
LgotICAgICAgICB0aW1lZE91dCA9ICFtX3dhaXRGb3JTeW5jUmVwbHlTZW1hcGhvcmUud2FpdChh
YnNvbHV0ZVRpbWUpOworICAgICAgICB0aW1lZE91dCA9ICFSdW5Mb29wOjpydW5VbnRpbCgmbV93
YWl0Rm9yU3luY1JlcGx5U2VtYXBob3JlLCBhYnNvbHV0ZVRpbWUpOworICAgICAgICBtX2lzV2Fp
dGluZ0ZvclN5bmNSZXBseSA9IGZhbHNlOworICAgICAgICBpZiAobV9zaG91bGREaXNwYXRjaE1l
c3NhZ2VzQWZ0ZXJSZWNlaXZpbmdTeW5jUmVwbHkpIHsKKyAgICAgICAgICAgIG1fY2xpZW50UnVu
TG9vcC0+c2NoZWR1bGVXb3JrKFdvcmtJdGVtOjpjcmVhdGUodGhpcywgJkNvbm5lY3Rpb246OmRp
c3BhdGNoTWVzc2FnZXMpKTsKKyAgICAgICAgICAgIG1fc2hvdWxkRGlzcGF0Y2hNZXNzYWdlc0Fm
dGVyUmVjZWl2aW5nU3luY1JlcGx5ID0gZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAKICAgICAv
LyBXZSB0aW1lZCBvdXQuCkBAIC00MTUsNiArNDIzLDExIEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlz
cGF0Y2hTeW5jTWVzc2FnZShNZXNzYWdlSUQgbWVzc2FnZUlELCBBcmd1bWVudERlY29kZXIqIGFy
Z3VtCiAKIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hNZXNzYWdlcygpCiB7CisgICAgaWYgKG1f
aXNXYWl0aW5nRm9yU3luY1JlcGx5KSB7CisgICAgICAgIG1fc2hvdWxkRGlzcGF0Y2hNZXNzYWdl
c0FmdGVyUmVjZWl2aW5nU3luY1JlcGx5ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIFZlY3RvcjxJbmNvbWluZ01lc3NhZ2U+IGluY29taW5nTWVzc2FnZXM7CiAgICAgCiAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAppbmRl
eCA1OGNiODljLi5iZDJjYWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9D
b3JlSVBDL0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBD
L0Nvbm5lY3Rpb24uaApAQCAtMjU3LDYgKzI1Nyw5IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFBl
bmRpbmdTeW5jUmVwbHk+IG1fcGVuZGluZ1N5bmNSZXBsaWVzOwogICAgIFZlY3RvcjxJbmNvbWlu
Z01lc3NhZ2U+IG1fc3luY01lc3NhZ2VzUmVjZWl2ZWRXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHk7
CiAKKyAgICBib29sIG1faXNXYWl0aW5nRm9yU3luY1JlcGx5OworICAgIGJvb2wgbV9zaG91bGRE
aXNwYXRjaE1lc3NhZ2VzQWZ0ZXJSZWNlaXZpbmdTeW5jUmVwbHk7CisKICNpZiBQTEFURk9STShN
QUMpCiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBjb25uZWN0aW9uIHF1ZXVlLgogICAgIHZvaWQgcmVj
ZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcigpOwotLSAKMS43LjMuMS5tc3lzZ2l0LjAKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80683</attachid>
            <date>2011-01-31 14:59:58 -0800</date>
            <delta_ts>2011-01-31 14:59:58 -0800</delta_ts>
            <desc>New WIP patch</desc>
            <filename>0001-Spin-a-run-loop-in-waitForSyncReply.patch</filename>
            <type>text/plain</type>
            <size>4930</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">RnJvbSAxYzMyOTZlYzg2ZmZjY2U1MGI1NWJhZTA2NmJiZmNkOTJiNDM2ZWEwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGFtIFJvYmVuIDxhcm9iZW5AYXBwbGUuY29tPgpEYXRlOiBN
b24sIDMxIEphbiAyMDExIDA5OjQ0OjE0IC0wODAwClN1YmplY3Q6IFtQQVRDSF0gU3BpbiBhIHJ1
biBsb29wIGluIHdhaXRGb3JTeW5jUmVwbHkKCi0tLQogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
R3JvdXAuY3BwICAgICAgICAgICAgICB8ICAgIDggKysrKysKIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZUdyb3VwLmggICAgICAgICAgICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0NvcmVJUEMvQ29ubmVjdGlvbi5jcHAgfCAgIDM5ICsrKysrKysrKysrKysrKysrKysrKysr
LQogU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmggICB8ICAgIDMg
KysKIDQgZmlsZXMgY2hhbmdlZCwgNTEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKaW5kZXggYjliMGUzNC4uYzg2NTFkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUdyb3VwLmNwcApAQCAtNzcsNiArNzcsMTQgQEAgUGFnZUdyb3VwOjp+UGFnZUdy
b3VwKCkKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFBhZ2VHcm91cCo+IFBhZ2VHcm91cE1hcDsK
IHN0YXRpYyBQYWdlR3JvdXBNYXAqIHBhZ2VHcm91cHMgPSAwOwogCitjb25zdCBQYWdlR3JvdXBN
YXAmIFBhZ2VHcm91cDo6YWxsR3JvdXBzKCkKK3sKKyAgICBpZiAoIXBhZ2VHcm91cHMpCisgICAg
ICAgIHBhZ2VHcm91cHMgPSBuZXcgUGFnZUdyb3VwTWFwOworCisgICAgcmV0dXJuICpwYWdlR3Jv
dXBzOworfQorCiBQYWdlR3JvdXAqIFBhZ2VHcm91cDo6cGFnZUdyb3VwKGNvbnN0IFN0cmluZyYg
Z3JvdXBOYW1lKQogewogICAgIEFTU0VSVCghZ3JvdXBOYW1lLmlzRW1wdHkoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlR3JvdXAuaAppbmRleCA2NDNjNWU2Li42NDY3MmZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdy
b3VwLmgKQEAgLTQ4LDYgKzQ4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYWdl
R3JvdXAoUGFnZSopOwogICAgICAgICB+UGFnZUdyb3VwKCk7CiAKKyAgICAgICAgc3RhdGljIGNv
bnN0IEhhc2hNYXA8U3RyaW5nLCBQYWdlR3JvdXAqPiYgYWxsR3JvdXBzKCk7CisKICAgICAgICAg
c3RhdGljIFBhZ2VHcm91cCogcGFnZUdyb3VwKGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKTsKICAg
ICAgICAgc3RhdGljIHZvaWQgY2xvc2VMb2NhbFN0b3JhZ2UoKTsKICAgICAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmNwcAppbmRleCAzNjlhZTli
Li5lMTY2ZTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQ29ubmVj
dGlvbi5jcHAKQEAgLTI5LDYgKzI5LDkgQEAKICNpbmNsdWRlICJDb3JlSVBDTWVzc2FnZUtpbmRz
LmgiCiAjaW5jbHVkZSAiUnVuTG9vcC5oIgogI2luY2x1ZGUgIldvcmtJdGVtLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlR3JvdXBMb2FkRGVmZXJyZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VHcm91cC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkVGltZXIuaD4KICNpbmNsdWRlIDx3
dGYvQ3VycmVudFRpbWUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKQEAgLTU1LDYgKzU4LDgg
QEAgQ29ubmVjdGlvbjo6Q29ubmVjdGlvbihJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaXNT
ZXJ2ZXIsIENsaWVudCogY2xpZW50LCBSdW4KICAgICAsIG1faW5EaXNwYXRjaE1lc3NhZ2VDb3Vu
dCgwKQogICAgICwgbV9kaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoZmFsc2UpCiAgICAgLCBtX3No
b3VsZFdhaXRGb3JTeW5jUmVwbGllcyh0cnVlKQorICAgICwgbV9pc1dhaXRpbmdGb3JTeW5jUmVw
bHkoZmFsc2UpCisgICAgLCBtX3Nob3VsZERpc3BhdGNoTWVzc2FnZXNBZnRlclJlY2VpdmluZ1N5
bmNSZXBseShmYWxzZSkKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCkBAIC0yNjMsNyArMjY4
LDM0IEBAIFBhc3NPd25QdHI8QXJndW1lbnREZWNvZGVyPiBDb25uZWN0aW9uOjp3YWl0Rm9yU3lu
Y1JlcGx5KHVpbnQ2NF90IHN5bmNSZXF1ZXN0SUQsCiAgICAgICAgIH0KIAogICAgICAgICAvLyBX
ZSBkaWRuJ3QgZmluZCBhIHN5bmMgcmVwbHkgeWV0LCBrZWVwIHdhaXRpbmcuCi0gICAgICAgIHRp
bWVkT3V0ID0gIW1fd2FpdEZvclN5bmNSZXBseVNlbWFwaG9yZS53YWl0KGFic29sdXRlVGltZSk7
CisgICAgICAgIG1faXNXYWl0aW5nRm9yU3luY1JlcGx5ID0gdHJ1ZTsKKworICAgICAgICAvLyBG
SVhNRTogT0ggR09EIFRIRSBMQVlFUklORyBWSU9MQVRJT04gQlVSTlMhIE1ZIEVZRVMhIQorICAg
ICAgICBXZWJDb3JlOjpzdG9wU2hhcmVkVGltZXIoKTsKKworICAgICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIHJlYWxseSBvbmx5IGJlIGRlZmVycmluZyBsb2FkcyBmb3IgdGhlIFBhZ2VHcm91cCBv
ZiB0aGUgUGFnZSB0aGF0IGlzCisgICAgICAgIC8vIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3luY2hy
b25vdXMgbWVzc2FnZSBiZWluZyBzZW50LgorICAgICAgICBWZWN0b3I8T3duUHRyPFdlYkNvcmU6
OlBhZ2VHcm91cExvYWREZWZlcnJlcio+ID4gZGVmZXJyZXJzOworICAgICAgICBmb3IgKEhhc2hN
YXA8U3RyaW5nLCBXZWJDb3JlOjpQYWdlR3JvdXAqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBXZWJD
b3JlOjpQYWdlR3JvdXA6OmFsbEdyb3VwcygpLmJlZ2luKCksIGVuZCA9IFdlYkNvcmU6OlBhZ2VH
cm91cDo6YWxsR3JvdXBzKCkuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAg
V2ViQ29yZTo6UGFnZUdyb3VwKiBncm91cCA9IGl0LT5zZWNvbmQ7CisgICAgICAgICAgICBpZiAo
Z3JvdXAtPnBhZ2VzKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgZGVmZXJyZXJzLmFwcGVuZChhZG9wdFB0cihuZXcgV2ViQ29yZTo6UGFnZUdyb3Vw
TG9hZERlZmVycmVyKCppdC0+c2Vjb25kLT5wYWdlcygpLmJlZ2luKCksIHRydWUpKSk7CisgICAg
ICAgIH0KKworICAgICAgICB0aW1lZE91dCA9ICFSdW5Mb29wOjpydW5VbnRpbCgmbV93YWl0Rm9y
U3luY1JlcGx5U2VtYXBob3JlLCBhYnNvbHV0ZVRpbWUpOworCisgICAgICAgIGRlZmVycmVycy5j
bGVhcigpOworCisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc2V0IHRoaXMgdG8gdGhlIGNv
cnJlY3QgdGltZSwgbm90IGp1c3QgIm5vdyIhCisgICAgICAgIFdlYkNvcmU6OnNldFNoYXJlZFRp
bWVyRmlyZVRpbWUoMCk7CisKKyAgICAgICAgbV9pc1dhaXRpbmdGb3JTeW5jUmVwbHkgPSBmYWxz
ZTsKKworICAgICAgICBpZiAobV9zaG91bGREaXNwYXRjaE1lc3NhZ2VzQWZ0ZXJSZWNlaXZpbmdT
eW5jUmVwbHkpIHsKKyAgICAgICAgICAgIG1fY2xpZW50UnVuTG9vcC0+c2NoZWR1bGVXb3JrKFdv
cmtJdGVtOjpjcmVhdGUodGhpcywgJkNvbm5lY3Rpb246OmRpc3BhdGNoTWVzc2FnZXMpKTsKKyAg
ICAgICAgICAgIG1fc2hvdWxkRGlzcGF0Y2hNZXNzYWdlc0FmdGVyUmVjZWl2aW5nU3luY1JlcGx5
ID0gZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBXZSB0aW1lZCBvdXQuCkBAIC00
MTUsNiArNDQ3LDExIEBAIHZvaWQgQ29ubmVjdGlvbjo6ZGlzcGF0Y2hTeW5jTWVzc2FnZShNZXNz
YWdlSUQgbWVzc2FnZUlELCBBcmd1bWVudERlY29kZXIqIGFyZ3VtCiAKIHZvaWQgQ29ubmVjdGlv
bjo6ZGlzcGF0Y2hNZXNzYWdlcygpCiB7CisgICAgaWYgKG1faXNXYWl0aW5nRm9yU3luY1JlcGx5
KSB7CisgICAgICAgIG1fc2hvdWxkRGlzcGF0Y2hNZXNzYWdlc0FmdGVyUmVjZWl2aW5nU3luY1Jl
cGx5ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFZlY3RvcjxJbmNvbWlu
Z01lc3NhZ2U+IGluY29taW5nTWVzc2FnZXM7CiAgICAgCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAppbmRleCA1OGNiODljLi5iZDJjYWE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaApAQCAtMjU3
LDYgKzI1Nyw5IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFBlbmRpbmdTeW5jUmVwbHk+IG1fcGVu
ZGluZ1N5bmNSZXBsaWVzOwogICAgIFZlY3RvcjxJbmNvbWluZ01lc3NhZ2U+IG1fc3luY01lc3Nh
Z2VzUmVjZWl2ZWRXaGlsZVdhaXRpbmdGb3JTeW5jUmVwbHk7CiAKKyAgICBib29sIG1faXNXYWl0
aW5nRm9yU3luY1JlcGx5OworICAgIGJvb2wgbV9zaG91bGREaXNwYXRjaE1lc3NhZ2VzQWZ0ZXJS
ZWNlaXZpbmdTeW5jUmVwbHk7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gQ2FsbGVkIG9u
IHRoZSBjb25uZWN0aW9uIHF1ZXVlLgogICAgIHZvaWQgcmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxl
cigpOwotLSAKMS43LjMuMS5tc3lzZ2l0LjAKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>