<?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>92753</bug_id>
          
          <creation_ts>2012-07-31 07:36:16 -0700</creation_ts>
          <short_desc>[Qt] Snowshoe desktop crashes when opening a new tab</short_desc>
          <delta_ts>2012-08-08 07:31:37 -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>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P1</priority>
          <bug_severity>Blocker</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexis Menard (darktears)">menard</reporter>
          <assigned_to name="Balazs Kelemen">kbalazs</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>hugo.lima</cc>
    
    <cc>jesus</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kbalazs</cc>
    
    <cc>lauro.neto</cc>
    
    <cc>luciano.wolf</cc>
    
    <cc>marcelo.lira</cc>
    
    <cc>noam</cc>
    
    <cc>rafael.lobo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>683034</commentid>
    <comment_count>0</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-07-31 07:36:16 -0700</bug_when>
    <thetext>- Run Snowshoe desktop (https://github.com/snowshoe/snowshoe to get the code)
- Open a new tab (either ctrl+t or double clicking on the tab bar).
- The UIProcess crash.

Backtrace :

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff3df2e58 in WebKit::WebLayerTreeRenderer::getBackingStore (this=0x3085a10, id=176) at /home/darktears/dev/troll/webkit/Source/WebKit2/UIProcess/WebLayerTreeRenderer.cpp:335
335         ASSERT(layer);
(gdb) bt
#0  0x00007ffff3df2e58 in WebKit::WebLayerTreeRenderer::getBackingStore (this=0x3085a10, id=176) at /home/darktears/dev/troll/webkit/Source/WebKit2/UIProcess/WebLayerTreeRenderer.cpp:335
#1  0x00007ffff3df2ff6 in WebKit::WebLayerTreeRenderer::createTile (this=0x3085a10, layerID=176, tileID=91, scale=1) at /home/darktears/dev/troll/webkit/Source/WebKit2/UIProcess/WebLayerTreeRenderer.cpp:347
#2  0x00007ffff3d98d93 in WTF::FunctionWrapper&lt;void (WebKit::WebLayerTreeRenderer::*)(unsigned int, int, float)&gt;::operator() (this=0x31b6950, c=0x3085a10, p1=176, p2=91, p3=1) at /home/darktears/dev/troll/webkit/Source/WTF/wtf/Functional.h:233
#3  0x00007ffff3d985e0 in WTF::BoundFunctionImpl&lt;WTF::FunctionWrapper&lt;void (WebKit::WebLayerTreeRenderer::*)(unsigned int, int, float)&gt;, void (WebKit::WebLayerTreeRenderer*, int, int, float)&gt;::operator()() (this=0x31b6940)
    at /home/darktears/dev/troll/webkit/Source/WTF/wtf/Functional.h:489
#4  0x00007ffff3df424c in WTF::Function&lt;void ()&gt;::operator()() const (this=0x31e9220) at /home/darktears/dev/troll/webkit/Source/WTF/wtf/Functional.h:613
#5  0x00007ffff3df3ac1 in WebKit::WebLayerTreeRenderer::syncRemoteContent (this=0x3085a10) at /home/darktears/dev/troll/webkit/Source/WebKit2/UIProcess/WebLayerTreeRenderer.cpp:438
#6  0x00007ffff3d6b824 in QQuickWebPage::updatePaintNode (this=0x1f79c10, oldNode=0x31dfba0) at /home/darktears/dev/troll/webkit/Source/WebKit2/UIProcess/API/qt/qquickwebpage.cpp:91
#7  0x00007ffff3322d0d in QQuickWindowPrivate::updateDirtyNode (this=0x85a0d0, item=0x1f79c10) at items/qquickwindow.cpp:2234
#8  0x00007ffff3321ce3 in QQuickWindowPrivate::updateDirtyNodes (this=0x85a0d0) at items/qquickwindow.cpp:2055
#9  0x00007ffff331a44f in QQuickWindowPrivate::syncSceneGraph (this=0x85a0d0) at items/qquickwindow.cpp:295
#10 0x00007ffff3434472 in QQuickTrivialWindowManager::renderWindow (this=0x841360, window=0x852440) at items/qquickwindowmanager.cpp:1222
#11 0x00007ffff3434888 in QQuickTrivialWindowManager::event (this=0x841360, e=0x30aa270) at items/qquickwindowmanager.cpp:1306
#12 0x00007ffff187cde4 in QApplicationPrivate::notify_helper (this=0x7fb200, receiver=0x841360, e=0x30aa270) at kernel/qapplication.cpp:3594
#13 0x00007ffff187a520 in QApplication::notify (this=0x7fffffff5a30, receiver=0x841360, e=0x30aa270) at kernel/qapplication.cpp:3051
#14 0x00007ffff04f4d56 in QCoreApplication::notifyInternal (this=0x7fffffff5a30, receiver=0x841360, event=0x30aa270) at kernel/qcoreapplication.cpp:725
#15 0x00007ffff04f8b05 in QCoreApplication::sendEvent (receiver=0x841360, event=0x30aa270) at kernel/qcoreapplication.h:211
#16 0x00007ffff04f606c in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x7fb380) at kernel/qcoreapplication.cpp:1325
#17 0x00007ffff04f5a1d in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at kernel/qcoreapplication.cpp:1185
#18 0x00007ffff0566b72 in postEventSourceDispatch (s=0x809240) at kernel/qeventdispatcher_glib.cpp:278
#19 0x00007fffe9929475 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#20 0x00007fffe99297a8 in ?? () from /lib/libglib-2.0.so.0
#21 0x00007fffe9929864 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#22 0x00007ffff05673d9 in QEventDispatcherGlib::processEvents (this=0x7ff730, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#23 0x00007ffff04f51e3 in QCoreApplication::processEvents (flags=...) at kernel/qcoreapplication.cpp:896
#24 0x00007ffff332507e in QQuickWindowIncubationController::event (this=0x896830, e=0x31c7310) at items/qquickwindow.cpp:100
#25 0x00007ffff187cde4 in QApplicationPrivate::notify_helper (this=0x7fb200, receiver=0x896830, e=0x31c7310) at kernel/qapplication.cpp:3594
#26 0x00007ffff187a520 in QApplication::notify (this=0x7fffffff5a30, receiver=0x896830, e=0x31c7310) at kernel/qapplication.cpp:3051
#27 0x00007ffff04f4d56 in QCoreApplication::notifyInternal (this=0x7fffffff5a30, receiver=0x896830, event=0x31c7310) at kernel/qcoreapplication.cpp:725
#28 0x00007ffff04f8b05 in QCoreApplication::sendEvent (receiver=0x896830, event=0x31c7310) at kernel/qcoreapplication.h:211
#29 0x00007ffff04f606c in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x7fb380) at kernel/qcoreapplication.cpp:1325
#30 0x00007ffff04f5a1d in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at kernel/qcoreapplication.cpp:1185
#31 0x00007ffff0566b72 in postEventSourceDispatch (s=0x809240) at kernel/qeventdispatcher_glib.cpp:278
#32 0x00007fffe9929475 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#33 0x00007fffe99297a8 in ?? () from /lib/libglib-2.0.so.0
#34 0x00007fffe9929864 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#35 0x00007ffff05673d9 in QEventDispatcherGlib::processEvents (this=0x7ff730, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#36 0x00007ffff04f1d3d in QEventLoop::processEvents (this=0x7fffffff5970, flags=...) at kernel/qeventloop.cpp:135
#37 0x00007ffff04f201f in QEventLoop::exec (this=0x7fffffff5970, flags=...) at kernel/qeventloop.cpp:211
#38 0x00007ffff04f5409 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:977
#39 0x00007ffff0aef9bb in QGuiApplication::exec () at kernel/qguiapplication.cpp:1031
#40 0x00007ffff187a152 in QApplication::exec () at kernel/qapplication.cpp:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683042</commentid>
    <comment_count>1</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-07-31 07:41:36 -0700</bug_when>
    <thetext>Snowshoe opens a blank page with no url set on it. Notice that If I open about:blank instead (or any URL) the crash is not happening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683052</commentid>
    <comment_count>2</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-07-31 07:46:58 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Snowshoe opens a blank page with no url set on it. Notice that If I open about:blank instead (or any URL) the crash is not happening.

You can modify PageWidget.qml of snowshoe to force opening another URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683395</commentid>
    <comment_count>3</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2012-07-31 12:47:55 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; - Run Snowshoe desktop (https://github.com/snowshoe/snowshoe to get the code)
&gt; - Open a new tab (either ctrl+t or double clicking on the tab bar).
&gt; - The UIProcess crash.

Some additional info: 

- with Qt Release it only crashes with WebKit Release.
- with Qt Debug it crashes with both WebKit Release and Debug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688325</commentid>
    <comment_count>4</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2012-08-06 11:51:32 -0700</bug_when>
    <thetext>This issue persists even after the roll out of https://bugs.webkit.org/show_bug.cgi?id=93077 , so I&apos;ll brief you guys a bit after I had a closer look into this. I will be over-explicative just because I&apos;m not familiar with this code path and I will this as an exercise. :)

As Alexis pointed out, the problem is the ASSERT(layer) we are reaching at Source/WebKit2/UIProcess/WebLayerTreeRenderer.cpp:335 . This is caused because when LayerTreeCoordinatorProxy::setCompositingLayerChildren is called for the new tab, the WebLayerTreeRenderer is not active yet. Therefore, the WebLayerTreeRenderer::appendUpdate calls don&apos;t do anything and setLayerChildren calls aren&apos;t queued to be dispatched by the next WebLayerTreeRenderer::syncRemoteContent.

This is all happening on the UIProcess side and the reason why we don&apos;t see this crash when we first start snowshoe is because when the first tab is created the following call stack happens before any LayerTreeCoordinatorProxy or WebLayerTreeRenderer calls:

QQuickWebPage::updatePaintNode
WebKit::QtWebPageSGNode::setRenderer

setRenderer creates a new ContentsSGNode that makes the renderer active.

When investigating why the WebProcess is sending messages to the UIProcess, triggering LayerTreeCoordinatorProxy::setCompositingLayerChildren even when the UIProcess is clearly not ready yet (no QtWebPageSGNode::setRenderer calls), I realized that the following call flow was happening on the WebProcess side:

WebKit::DrawingAreaImpl::sendDidUpdateBackingStoreState() 
WebKit::LayerTreeCoordinator::forceRepaint() 
WebKit::LayerTreeCoordinator::flushPendingLayerChanges()

This last function, flushPendingLayerChanges, is the one sending messages from the WebProcess to the UIProcess.

Reading LayerTreeCoordinator made me realize that perhaps we are missing a check to m_waitingForUIProcess somewhere, like the one in LayerTreeCoordinator::performScheduledLayerFlush. In fact, adding an early return to LayerTreeCoordinator::forceRepaint() fixes the crash. I haven&apos;t uploaded a patch for this because it feels wrong to early return like that in forceRepaint since the comments on this function say we use it exactly when &quot;we are not waiting for a UIProcess to reply nicely.&quot;...

What do you guys think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689061</commentid>
    <comment_count>5</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-08-07 05:24:46 -0700</bug_when>
    <thetext>The inconsistent state causing a missing layer might be caused by &quot;if (!m_isActive) return;&quot; at the beginning of WebLayerTreeRenderer::appendUpdate that will drop part of the updates but leave the web process thinking that this part of the graphics layer tree is in sync already.

I&apos;m starting to think that forceRepaint should just not highjack m_waitingForUIProcess. We should probably fix tst_qrawwebview.cpp to make sure that the web process is in the right state before calling it, and that forceRepaintAsync is implemented in DrawingAreaImpl for our purpose.

I thought about it and all other solutions I had felt hackish and don&apos;t make sense given that forceRepaint isn&apos;t only called by tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689162</commentid>
    <comment_count>6</comment_count>
      <attachid>156946</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-08-07 08:37:20 -0700</bug_when>
    <thetext>Created attachment 156946
proposed fix

Pixel tests works fine with this (after applying from bug 90394), I hope it also fix the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689173</commentid>
    <comment_count>7</comment_count>
      <attachid>156946</attachid>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2012-08-07 08:49:14 -0700</bug_when>
    <thetext>Comment on attachment 156946
proposed fix

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

Cool! LGTM.

&gt; Source/WebKit2/ChangeLog:14
&gt; +        could be implemented for the non conposited path in DrawingAreaImpl

I guess you meant &quot;composited&quot; here.

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp:181
&gt;      scheduleLayerFlush();

Why do we still need to scheduleLayerFlush()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689178</commentid>
    <comment_count>8</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-08-07 08:52:58 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 156946 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156946&amp;action=review
&gt; 
&gt; Cool! LGTM.
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:14
&gt; &gt; +        could be implemented for the non conposited path in DrawingAreaImpl
&gt; 
&gt; I guess you meant &quot;composited&quot; here.
&gt; 

Yep.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp:181
&gt; &gt;      scheduleLayerFlush();
&gt; 
&gt; Why do we still need to scheduleLayerFlush()?

Read the comment above :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689197</commentid>
    <comment_count>9</comment_count>
      <attachid>156946</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-08-07 09:07:22 -0700</bug_when>
    <thetext>Comment on attachment 156946
proposed fix

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

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp:-180
&gt; -    // This is necessary for running layout tests. Since in this case we are not waiting for a UIProcess to reply nicely.
&gt; -    // Instead we are just triggering forceRepaint. But we still want to have the scripted animation callbacks being executed.
&gt; -    syncDisplayState();
&gt; -

You&apos;ll need to keep this if you agree with the comment below.

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp:183
&gt; -    flushPendingLayerChanges();
&gt; +
&gt; +    performScheduledLayerFlush();

Please move the m_waitingForUIProcess check at the top of flushPendingLayerChange instead to make sure that we keep the behavior relatively to m_isSuspended and didPerformScheduledLayerFlush().
It will also make sure that we check this variable in the same method that we reset it.

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp:192
&gt; +bool LayerTreeCoordinator::forceRepaintAsync(uint64_t callbackID)
&gt; +{
&gt; +    // We expect the UI process to not require a new repaint until the previous one has finished.
&gt; +    ASSERT(!m_forceRepaintAsyncCallbackID);
&gt; +    m_forceRepaintAsyncCallbackID = callbackID;
&gt; +    return true;
&gt;  }

You&apos;re missing a scheduleLayerFlush() in here somewhere, no?
Also, I would prefer safely doing this before assigning m_forceRepaintAsyncCallbackID and comment that this is just a clumsy safety measure instead of asserting:

if (m_forceRepaintAsyncCallbackID)
    m_webPage-&gt;send(Messages::WebPageProxy::VoidCallback(m_forceRepaintAsyncCallbackID));

&gt; Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp:206
&gt; +    if (!m_layerTreeHost) {

Place this at the beginning, you don&apos;t want to invalidate and layout if you&apos;re not going to do anything with it here.

&gt; Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp:207
&gt; +        // FIXME: this could be implemented for the non composited path as well.

It&apos;s a FIXME that might never be fixed and we have no need for it now, I think it would be better to avoid it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689791</commentid>
    <comment_count>10</comment_count>
      <attachid>156946</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-08-07 20:02:21 -0700</bug_when>
    <thetext>Comment on attachment 156946
proposed fix

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

&gt; Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp:205
&gt; +    m_webPage-&gt;layoutIfNeeded();

This doesn&apos;t seem right here. We layout anyway when we perform the layer flush.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690025</commentid>
    <comment_count>11</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-08-08 00:48:37 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 156946 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156946&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp:-180
&gt; &gt; -    // This is necessary for running layout tests. Since in this case we are not waiting for a UIProcess to reply nicely.
&gt; &gt; -    // Instead we are just triggering forceRepaint. But we still want to have the scripted animation callbacks being executed.
&gt; &gt; -    syncDisplayState();
&gt; &gt; -
&gt; 
&gt; You&apos;ll need to keep this if you agree with the comment below.

But from now we will use forceSyncAsync for testing, and it does a syncDisplayState before sending back the reply (in performScheduledLayerFlush after the timer fires), so I think we can remove it from forceRepaint.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp:183
&gt; &gt; -    flushPendingLayerChanges();
&gt; &gt; +
&gt; &gt; +    performScheduledLayerFlush();
&gt; 
&gt; Please move the m_waitingForUIProcess check at the top of flushPendingLayerChange instead to make sure that we keep the behavior relatively to m_isSuspended and didPerformScheduledLayerFlush().
&gt; It will also make sure that we check this variable in the same method that we reset it.
&gt; 

Ok.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/LayerTreeCoordinator.cpp:192
&gt; &gt; +bool LayerTreeCoordinator::forceRepaintAsync(uint64_t callbackID)
&gt; &gt; +{
&gt; &gt; +    // We expect the UI process to not require a new repaint until the previous one has finished.
&gt; &gt; +    ASSERT(!m_forceRepaintAsyncCallbackID);
&gt; &gt; +    m_forceRepaintAsyncCallbackID = callbackID;
&gt; &gt; +    return true;
&gt; &gt;  }
&gt; 
&gt; You&apos;re missing a scheduleLayerFlush() in here somewhere, no?

Yes.

&gt; Also, I would prefer safely doing this before assigning m_forceRepaintAsyncCallbackID and comment that this is just a clumsy safety measure instead of asserting:
&gt; 
&gt; if (m_forceRepaintAsyncCallbackID)
&gt;     m_webPage-&gt;send(Messages::WebPageProxy::VoidCallback(m_forceRepaintAsyncCallbackID));

Sending back the message without actually performing the repaint? I don&apos;t think that makes sense.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp:206
&gt; &gt; +    if (!m_layerTreeHost) {
&gt; 
&gt; Place this at the beginning, you don&apos;t want to invalidate and layout if you&apos;re not going to do anything with it here.

Yep.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp:207
&gt; &gt; +        // FIXME: this could be implemented for the non composited path as well.
&gt; 
&gt; It&apos;s a FIXME that might never be fixed and we have no need for it now, I think it would be better to avoid it.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690027</commentid>
    <comment_count>12</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-08-08 00:49:03 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 156946 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156946&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/DrawingAreaImpl.cpp:205
&gt; &gt; +    m_webPage-&gt;layoutIfNeeded();
&gt; 
&gt; This doesn&apos;t seem right here. We layout anyway when we perform the layer flush.

Correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690044</commentid>
    <comment_count>13</comment_count>
      <attachid>157147</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-08-08 01:29:41 -0700</bug_when>
    <thetext>Created attachment 157147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690111</commentid>
    <comment_count>14</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-08-08 03:30:20 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; But from now we will use forceSyncAsync for testing, and it does a syncDisplayState before sending back the reply (in performScheduledLayerFlush after the timer fires), so I think we can remove it from forceRepaint.

forceRepaintAsync will be called by tst_qrawwebview, but this line was needed to handle layoutTestController.display(), which ends up calling forceRepaint, not forceRepaintAsync. There shouldn&apos;t be a forceRepaint &quot;for testing&quot; and the other not, unless their name distinguish them accordingly.

&gt; Sending back the message without actually performing the repaint? I don&apos;t think that makes sense.

Ignoring the callback and make any code that was waiting for it to deadlock isn&apos;t better, but it&apos;s an edge case and I guess we can see if it asserts somewhere first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690169</commentid>
    <comment_count>15</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-08-08 05:05:38 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #11)
&gt; &gt; But from now we will use forceSyncAsync for testing, and it does a syncDisplayState before sending back the reply (in performScheduledLayerFlush after the timer fires), so I think we can remove it from forceRepaint.
&gt; 
&gt; forceRepaintAsync will be called by tst_qrawwebview, but this line was needed to handle layoutTestController.display(), which ends up calling forceRepaint, not forceRepaintAsync. There shouldn&apos;t be a forceRepaint &quot;for testing&quot; and the other not, unless their name distinguish them accordingly.

WebPage::forceRepaint first calls drawingArea-&gt;forceRepaintAsync and falls back to the sync path if async returned false, like the default implementation. So in our case layoutTestController.display() will also use the new async method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690192</commentid>
    <comment_count>16</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-08-08 05:30:44 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; WebPage::forceRepaint first calls drawingArea-&gt;forceRepaintAsync and falls back to the sync path if async returned false, like the default implementation. So in our case layoutTestController.display() will also use the new async method.

display() calls WKBundlePageForceRepaint which then calls WebPage::forceRepaintWithoutCallback(), not forceRepaint().
My argument is the same regardless, those methods should behave exactly the same except that one is async and not the other. Doing otherwise would break encapsulation and encourage layer violation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690262</commentid>
    <comment_count>17</comment_count>
      <attachid>157203</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-08-08 06:35:15 -0700</bug_when>
    <thetext>Created attachment 157203
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690266</commentid>
    <comment_count>18</comment_count>
      <attachid>157203</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-08-08 06:42:47 -0700</bug_when>
    <thetext>Comment on attachment 157203
Patch

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

&gt; Source/WebKit2/ChangeLog:12
&gt; +        done by LayerTreeCoordinator that holds the callback and send the

and send*s*

&gt; Source/WebKit2/ChangeLog:19
&gt; +        (WebKit::LayerTreeCoordinator::forceRepaint):

Not sure if it&apos;s a glitch, if not just make sure that you regenerate the changelog before pushing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690285</commentid>
    <comment_count>19</comment_count>
      <attachid>157203</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-08-08 07:11:35 -0700</bug_when>
    <thetext>Comment on attachment 157203
Patch

Landed in http://trac.webkit.org/changeset/125034</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156946</attachid>
            <date>2012-08-07 08:37:20 -0700</date>
            <delta_ts>2012-08-08 01:29:28 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>0001-Qt-Snowshoe-desktop-crashes-when-opening-a-new-tab.patch</filename>
            <type>text/plain</type>
            <size>9782</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">RnJvbSBiOWIzMmNjNDFmNDg4MDYxOWYzZjE1YWNlZWNhZDIyOGZlMmRmODE3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBCYWxhenMgS2VsZW1lbiA8a2JhbGF6c0B3ZWJraXQub3JnPgpE
YXRlOiBUdWUsIDcgQXVnIDIwMTIgMTc6MjU6MzYgKzAyMDAKU3ViamVjdDogW1BBVENIXSBbUXRd
IFNub3dzaG9lIGRlc2t0b3AgY3Jhc2hlcyB3aGVuIG9wZW5pbmcgYSBuZXcgdGFiCiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI3NTMKClJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgoKQ2hhbmdlIGJhY2sgZm9yY2VSZXBhaW50IHRvIGNvbnNpZGVyIHRoZSBVSSBw
cm9jZXNzIHN0YXRlLgpJdCBoYXMgYmVlbiB0d2Vha2VkIHRvIHNhdGlzZnkgdGhlIG5lZWRzIG9m
IFdLUGFnZUZvcmNlUmVwYWludCBidXQKaXQgaGFzIG90aGVyIGNhbGxlcnMgc28gdGhpcyBuZXcg
YmVoYXZpb3Igd2FzIG5vdCBzYWZlLiBUaGlzIHBhdGNoCmltcGxlbWVudHMgV2ViUGFnZTo6Zm9y
Y2VSZXBhaW50QXN5bmMgZm9yIHRlc3RpbmcgcHVycG9zZXMuIEl0IGlzCmRvbmUgYnkgTGF5ZXJU
cmVlQ29vcmRpbmF0b3IgdGhhdCBob2xkcyB0aGUgY2FsbGJhY2sgYW5kIHNlbmQgdGhlCnJlcGx5
IG1lc3NhZ2UgaW4gdGhlIG5leHQgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzLiBJbiB0aGVvcnkg
aXQKY291bGQgYmUgaW1wbGVtZW50ZWQgZm9yIHRoZSBub24gY29ucG9zaXRlZCBwYXRoIGluIERy
YXdpbmdBcmVhSW1wbAphcyB3ZWxsIGJ1dCBuZWl0aGVyIGl0IGlzIG5lZWRlZCBub3IgY2FuIEkg
dGVzdCBpdC4KCiogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlQ29vcmRpbmF0b3IuY3BwOgooV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6TGF5ZXJU
cmVlQ29vcmRpbmF0b3IpOgooV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6Zm9yY2VSZXBh
aW50KToKKFdlYktpdCk6CihXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpmb3JjZVJlcGFp
bnRBc3luYyk6CihXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpmbHVzaFBlbmRpbmdMYXll
ckNoYW5nZXMpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZUNvb3JkaW5hdG9yLmg6CihMYXllclRyZWVDb29yZGluYXRvcik6CiogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHA6CihXZWJLaXQ6OkRyYXdpbmdBcmVhSW1wbDo6Zm9y
Y2VSZXBhaW50QXN5bmMpOgooV2ViS2l0KToKKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWFJbXBsLmg6CihEcmF3aW5nQXJlYUltcGwpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRy
ZWVIb3N0Lmg6CihXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludEFzeW5jKToKLS0t
CiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MzIgKysrKysrKysrKysrKysrKysrCiAuLi4vQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvci5jcHAgICB8ICAgMzQgKysrKysrKysrKysrKy0tLS0tLS0KIC4uLi9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmggICAgIHwgICAgMiArKwogLi4uL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAgfCAgIDExICsrKysr
KysKIC4uLi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuaCAgIHwg
ICAgMSArCiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5o
ICB8ICAgIDEgKwogNiBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWQ2MTgwNS4uMzI1N2RlMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM1IEBACisyMDEyLTA4LTA3ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9y
Zz4KKworICAgICAgICBbUXRdIFNub3dzaG9lIGRlc2t0b3AgY3Jhc2hlcyB3aGVuIG9wZW5pbmcg
YSBuZXcgdGFiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05Mjc1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENoYW5nZSBiYWNrIGZvcmNlUmVwYWludCB0byBjb25zaWRlciB0aGUgVUkgcHJvY2VzcyBzdGF0
ZS4KKyAgICAgICAgSXQgaGFzIGJlZW4gdHdlYWtlZCB0byBzYXRpc2Z5IHRoZSBuZWVkcyBvZiBX
S1BhZ2VGb3JjZVJlcGFpbnQgYnV0CisgICAgICAgIGl0IGhhcyBvdGhlciBjYWxsZXJzIHNvIHRo
aXMgbmV3IGJlaGF2aW9yIHdhcyBub3Qgc2FmZS4gVGhpcyBwYXRjaAorICAgICAgICBpbXBsZW1l
bnRzIFdlYlBhZ2U6OmZvcmNlUmVwYWludEFzeW5jIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBJdCBp
cworICAgICAgICBkb25lIGJ5IExheWVyVHJlZUNvb3JkaW5hdG9yIHRoYXQgaG9sZHMgdGhlIGNh
bGxiYWNrIGFuZCBzZW5kIHRoZQorICAgICAgICByZXBseSBtZXNzYWdlIGluIHRoZSBuZXh0IGZs
dXNoUGVuZGluZ0xheWVyQ2hhbmdlcy4gSW4gdGhlb3J5IGl0CisgICAgICAgIGNvdWxkIGJlIGlt
cGxlbWVudGVkIGZvciB0aGUgbm9uIGNvbnBvc2l0ZWQgcGF0aCBpbiBEcmF3aW5nQXJlYUltcGwK
KyAgICAgICAgYXMgd2VsbCBidXQgbmVpdGhlciBpdCBpcyBuZWVkZWQgbm9yIGNhbiBJIHRlc3Qg
aXQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3Jk
aW5hdG9yOjpMYXllclRyZWVDb29yZGluYXRvcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJl
ZUNvb3JkaW5hdG9yOjpmb3JjZVJlcGFpbnQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmZvcmNlUmVwYWludEFzeW5jKToKKyAgICAg
ICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdl
cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKExheWVyVHJlZUNvb3JkaW5hdG9yKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RHJhd2luZ0FyZWFJbXBsOjpmb3JjZVJlcGFpbnRBc3luYyk6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuaDoK
KyAgICAgICAgKERyYXdpbmdBcmVhSW1wbCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6Zm9yY2VS
ZXBhaW50QXN5bmMpOgorCiAyMDEyLTA4LTA2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI0ODE2
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3Iu
Y3BwCmluZGV4IGMwNmM1OGQuLjE3MGUwZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs
dWRlICJTdXJmYWNlVXBkYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
Vmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgpAQCAtNzcsNiArNzgsNyBAQCBMYXll
clRyZWVDb29yZGluYXRvcjo6TGF5ZXJUcmVlQ29vcmRpbmF0b3IoV2ViUGFnZSogd2ViUGFnZSkK
ICAgICAsIG1fc2hvdWxkU3luY1Jvb3RMYXllcih0cnVlKQogICAgICwgbV9sYXllckZsdXNoVGlt
ZXIodGhpcywgJkxheWVyVHJlZUNvb3JkaW5hdG9yOjpsYXllckZsdXNoVGltZXJGaXJlZCkKICAg
ICAsIG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKHRydWUpCisgICAgLCBtX2ZvcmNlUmVw
YWludEFzeW5jQ2FsbGJhY2tJRCgwKQogewogICAgIC8vIENyZWF0ZSBhIHJvb3QgbGF5ZXIuCiAg
ICAgbV9yb290TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUodGhpcyk7CkBAIC0xNzQsMTQg
KzE3NiwxOSBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpzY3JvbGxOb25Db21wb3NpdGVk
Q29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcwogCiB2b2lkIExheWVyVHJlZUNvb3Jk
aW5hdG9yOjpmb3JjZVJlcGFpbnQoKQogewotICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBy
dW5uaW5nIGxheW91dCB0ZXN0cy4gU2luY2UgaW4gdGhpcyBjYXNlIHdlIGFyZSBub3Qgd2FpdGlu
ZyBmb3IgYSBVSVByb2Nlc3MgdG8gcmVwbHkgbmljZWx5LgotICAgIC8vIEluc3RlYWQgd2UgYXJl
IGp1c3QgdHJpZ2dlcmluZyBmb3JjZVJlcGFpbnQuIEJ1dCB3ZSBzdGlsbCB3YW50IHRvIGhhdmUg
dGhlIHNjcmlwdGVkIGFuaW1hdGlvbiBjYWxsYmFja3MgYmVpbmcgZXhlY3V0ZWQuCi0gICAgc3lu
Y0Rpc3BsYXlTdGF0ZSgpOwotCiAgICAgLy8gV2UgbmVlZCB0byBzY2hlZHVsZSBhbm90aGVyIGZs
dXNoLCBvdGhlcndpc2UgdGhlIGZvcmNlZCBwYWludCBtaWdodCBjYW5jZWwgYSBsYXRlciBleHBl
Y3RlZCBmbHVzaC4KICAgICAvLyBUaGlzIGlzIGFsaWduZWQgd2l0aCBMYXllclRyZWVIb3N0Q0Eu
CiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Ci0gICAgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2Vz
KCk7CisKKyAgICBwZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgpOworfQorCitib29sIExheWVy
VHJlZUNvb3JkaW5hdG9yOjpmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKQor
eworICAgIC8vIFdlIGV4cGVjdCB0aGUgVUkgcHJvY2VzcyB0byBub3QgcmVxdWlyZSBhIG5ldyBy
ZXBhaW50IHVudGlsIHRoZSBwcmV2aW91cyBvbmUgaGFzIGZpbmlzaGVkLgorICAgIEFTU0VSVCgh
bV9mb3JjZVJlcGFpbnRBc3luY0NhbGxiYWNrSUQpOworICAgIG1fZm9yY2VSZXBhaW50QXN5bmND
YWxsYmFja0lEID0gY2FsbGJhY2tJRDsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBMYXll
clRyZWVDb29yZGluYXRvcjo6c2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBu
ZXdTaXplKQpAQCAtMjUxLDE0ICsyNTgsMTkgQEAgYm9vbCBMYXllclRyZWVDb29yZGluYXRvcjo6
Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKICAgICAgICAgbV9zaG91bGRTeW5jUm9vdExheWVy
ID0gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFtX3Nob3VsZFN5bmNGcmFtZSkKLSAgICAgICAg
cmV0dXJuIGRpZFN5bmM7CisgICAgaWYgKG1fc2hvdWxkU3luY0ZyYW1lKSB7CisgICAgICAgIGRp
ZFN5bmMgPSB0cnVlOworICAgICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHk6OkRpZFJlbmRlckZyYW1lKCkpOworICAgICAgICBtX3dhaXRpbmdG
b3JVSVByb2Nlc3MgPSB0cnVlOworICAgICAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IGZhbHNlOwor
ICAgIH0KIAotICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0
b3JQcm94eTo6RGlkUmVuZGVyRnJhbWUoKSk7Ci0gICAgbV93YWl0aW5nRm9yVUlQcm9jZXNzID0g
dHJ1ZTsKLSAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IGZhbHNlOworICAgIGlmIChtX2ZvcmNlUmVw
YWludEFzeW5jQ2FsbGJhY2tJRCkgeworICAgICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKG1fZm9yY2VSZXBhaW50QXN5bmNDYWxsYmFja0lE
KSk7CisgICAgICAgIG1fZm9yY2VSZXBhaW50QXN5bmNDYWxsYmFja0lEID0gMDsKKyAgICB9CiAK
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZGlkU3luYzsKIH0KIAogdm9pZCBMYXllclRy
ZWVDb29yZGluYXRvcjo6c3luY0xheWVyU3RhdGUoV2ViTGF5ZXJJRCBpZCwgY29uc3QgV2ViTGF5
ZXJJbmZvJiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNv
b3JkaW5hdG9yLmgKaW5kZXggMThhZDk0My4uYTkwMjU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29v
cmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oCkBAIC01MSw2ICs1MSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3Bs
YXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxOb25D
b21wb3NpdGVkQ29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KTsKICAgICB2aXJ0dWFsIHZvaWQgZm9y
Y2VSZXBhaW50KCk7CisgICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwogICAgIHZpcnR1YWwgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIG5ld1NpemUpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZEluc3RhbGxQYWdl
T3ZlcmxheSgpOwpAQCAtMTM5LDYgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsYXllckZs
dXNoVGltZXJGaXJlZChXZWJDb3JlOjpUaW1lcjxMYXllclRyZWVDb29yZGluYXRvcj4qKTsKICAg
ICBXZWJDb3JlOjpUaW1lcjxMYXllclRyZWVDb29yZGluYXRvcj4gbV9sYXllckZsdXNoVGltZXI7
CiAgICAgYm9vbCBtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZDsKKyAgICB1aW50NjRfdCBt
X2ZvcmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJRDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKaW5kZXggOGVj
ZDllMi4uYTI5MWM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKQEAgLTE5OSw2ICsxOTksMTcgQEAgdm9pZCBEcmF3
aW5nQXJlYUltcGw6OmZvcmNlUmVwYWludCgpCiAgICAgZGlzcGxheSgpOwogfQogCitib29sIERy
YXdpbmdBcmVhSW1wbDo6Zm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKK3sK
KyAgICBzZXROZWVkc0Rpc3BsYXkobV93ZWJQYWdlLT5ib3VuZHMoKSk7CisgICAgbV93ZWJQYWdl
LT5sYXlvdXRJZk5lZWRlZCgpOworICAgIGlmICghbV9sYXllclRyZWVIb3N0KSB7CisgICAgICAg
IC8vIEZJWE1FOiB0aGlzIGNvdWxkIGJlIGltcGxlbWVudGVkIGZvciB0aGUgbm9uIGNvbXBvc2l0
ZWQgcGF0aCBhcyB3ZWxsLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVy
biBtX2xheWVyVHJlZUhvc3QtPmZvcmNlUmVwYWludEFzeW5jKGNhbGxiYWNrSUQpOworfQorCiB2
b2lkIERyYXdpbmdBcmVhSW1wbDo6ZGlkSW5zdGFsbFBhZ2VPdmVybGF5KCkKIHsKICAgICBpZiAo
bV9sYXllclRyZWVIb3N0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhSW1wbC5oCmluZGV4IDU1ZTNkZjQuLjAxNzRhNWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmgKQEAg
LTU3LDYgKzU3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbGF5ZXJUcmVlU3RhdGVJ
c0Zyb3plbigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbjsgfQogICAg
IHZpcnR1YWwgTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGF5ZXJUcmVlSG9zdC5nZXQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKTsK
KyAgICB2aXJ0dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkSW5zdGFsbFBhZ2VPdmVybGF5KCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFVuaW5zdGFsbFBhZ2VPdmVybGF5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAppbmRleCA5YzJlNzQ0Li44M2Y1NGE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVl
SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVI
b3N0LmgKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXROb25D
b21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xs
T2Zmc2V0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkgeyByZXR1
cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBuZXdTaXplKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRldmljZVNjYWxlRmFj
dG9yRGlkQ2hhbmdlKCkgPSAwOwogCi0tIAoxLjcuOS41Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157147</attachid>
            <date>2012-08-08 01:29:41 -0700</date>
            <delta_ts>2012-08-08 06:35:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92753-20120808102914.patch</filename>
            <type>text/plain</type>
            <size>8553</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWQ2MTgwNTQ2MzMyYWY5
NjBkZmI1Nzk1MDBlODdiMmE3MWE1MTRmZi4uMzI1N2RlMzZlYTM0ZWQyNGFkMjQ4ZjFhNTg3Mjcz
Y2JkMzU1ZDU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA4LTA3ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIFNub3dzaG9l
IGRlc2t0b3AgY3Jhc2hlcyB3aGVuIG9wZW5pbmcgYSBuZXcgdGFiCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mjc1MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBiYWNrIGZvcmNlUmVwYWludCB0
byBjb25zaWRlciB0aGUgVUkgcHJvY2VzcyBzdGF0ZS4KKyAgICAgICAgSXQgaGFzIGJlZW4gdHdl
YWtlZCB0byBzYXRpc2Z5IHRoZSBuZWVkcyBvZiBXS1BhZ2VGb3JjZVJlcGFpbnQgYnV0CisgICAg
ICAgIGl0IGhhcyBvdGhlciBjYWxsZXJzIHNvIHRoaXMgbmV3IGJlaGF2aW9yIHdhcyBub3Qgc2Fm
ZS4gVGhpcyBwYXRjaAorICAgICAgICBpbXBsZW1lbnRzIFdlYlBhZ2U6OmZvcmNlUmVwYWludEFz
eW5jIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBJdCBpcworICAgICAgICBkb25lIGJ5IExheWVyVHJl
ZUNvb3JkaW5hdG9yIHRoYXQgaG9sZHMgdGhlIGNhbGxiYWNrIGFuZCBzZW5kIHRoZQorICAgICAg
ICByZXBseSBtZXNzYWdlIGluIHRoZSBuZXh0IGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcy4gSW4g
dGhlb3J5IGl0CisgICAgICAgIGNvdWxkIGJlIGltcGxlbWVudGVkIGZvciB0aGUgbm9uIGNvbnBv
c2l0ZWQgcGF0aCBpbiBEcmF3aW5nQXJlYUltcGwKKyAgICAgICAgYXMgd2VsbCBidXQgbmVpdGhl
ciBpdCBpcyBuZWVkZWQgbm9yIGNhbiBJIHRlc3QgaXQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpMYXllclRyZWVDb29yZGluYXRv
cik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpmb3JjZVJlcGFpbnQp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0
b3I6OmZvcmNlUmVwYWludEFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRp
bmF0b3I6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaDoKKyAgICAg
ICAgKExheWVyVHJlZUNvb3JkaW5hdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFJbXBsOjpm
b3JjZVJlcGFpbnRBc3luYyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuaDoKKyAgICAgICAgKERyYXdpbmdBcmVhSW1wbCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50QXN5bmMpOgorCiAyMDEyLTA4LTA2
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTI0ODE2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRp
bmF0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCmluZGV4IGMwNmM1OGRmNTcwMjRjMzAw
OTVlMTQyZjViZTRjYjAxMGM4NDcwMTYuLmE2OGMzNzM2ODA4OTcyM2UyMmMzODY0ZTQ5MjdhMGJm
YTIwNzRkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJTdXJmYWNlVXBkYXRl
SW5mby5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldl
YlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZS5oPgpAQCAtNzcsNiArNzgsNyBAQCBMYXllclRyZWVDb29yZGluYXRvcjo6
TGF5ZXJUcmVlQ29vcmRpbmF0b3IoV2ViUGFnZSogd2ViUGFnZSkKICAgICAsIG1fc2hvdWxkU3lu
Y1Jvb3RMYXllcih0cnVlKQogICAgICwgbV9sYXllckZsdXNoVGltZXIodGhpcywgJkxheWVyVHJl
ZUNvb3JkaW5hdG9yOjpsYXllckZsdXNoVGltZXJGaXJlZCkKICAgICAsIG1fbGF5ZXJGbHVzaFNj
aGVkdWxpbmdFbmFibGVkKHRydWUpCisgICAgLCBtX2ZvcmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJ
RCgwKQogewogICAgIC8vIENyZWF0ZSBhIHJvb3QgbGF5ZXIuCiAgICAgbV9yb290TGF5ZXIgPSBH
cmFwaGljc0xheWVyOjpjcmVhdGUodGhpcyk7CkBAIC0xNzQsMTYgKzE3NiwyMiBAQCB2b2lkIExh
eWVyVHJlZUNvb3JkaW5hdG9yOjpzY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgcwogCiB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpmb3JjZVJlcGFp
bnQoKQogewotICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IGZvciBydW5uaW5nIGxheW91dCB0ZXN0
cy4gU2luY2UgaW4gdGhpcyBjYXNlIHdlIGFyZSBub3Qgd2FpdGluZyBmb3IgYSBVSVByb2Nlc3Mg
dG8gcmVwbHkgbmljZWx5LgotICAgIC8vIEluc3RlYWQgd2UgYXJlIGp1c3QgdHJpZ2dlcmluZyBm
b3JjZVJlcGFpbnQuIEJ1dCB3ZSBzdGlsbCB3YW50IHRvIGhhdmUgdGhlIHNjcmlwdGVkIGFuaW1h
dGlvbiBjYWxsYmFja3MgYmVpbmcgZXhlY3V0ZWQuCi0gICAgc3luY0Rpc3BsYXlTdGF0ZSgpOwot
CiAgICAgLy8gV2UgbmVlZCB0byBzY2hlZHVsZSBhbm90aGVyIGZsdXNoLCBvdGhlcndpc2UgdGhl
IGZvcmNlZCBwYWludCBtaWdodCBjYW5jZWwgYSBsYXRlciBleHBlY3RlZCBmbHVzaC4KICAgICAv
LyBUaGlzIGlzIGFsaWduZWQgd2l0aCBMYXllclRyZWVIb3N0Q0EuCiAgICAgc2NoZWR1bGVMYXll
ckZsdXNoKCk7CisKICAgICBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKIH0KIAorYm9vbCBM
YXllclRyZWVDb29yZGluYXRvcjo6Zm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJ
RCkKK3sKKyAgICAvLyBXZSBleHBlY3QgdGhlIFVJIHByb2Nlc3MgdG8gbm90IHJlcXVpcmUgYSBu
ZXcgcmVwYWludCB1bnRpbCB0aGUgcHJldmlvdXMgb25lIGhhcyBmaW5pc2hlZC4KKyAgICBBU1NF
UlQoIW1fZm9yY2VSZXBhaW50QXN5bmNDYWxsYmFja0lEKTsKKyAgICBtX2ZvcmNlUmVwYWludEFz
eW5jQ2FsbGJhY2tJRCA9IGNhbGxiYWNrSUQ7CisgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnNpemVEaWRD
aGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkKIHsKICAgICBpZiAobV9yb290
TGF5ZXItPnNpemUoKSA9PSBuZXdTaXplKQpAQCAtMjM4LDYgKzI0Niw5IEBAIHZvaWQgTGF5ZXJU
cmVlQ29vcmRpbmF0b3I6OnNldFBhZ2VPdmVybGF5T3BhY2l0eShmbG9hdCB2YWx1ZSkKIAogYm9v
bCBMYXllclRyZWVDb29yZGluYXRvcjo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkKIHsKKyAg
ICBpZiAobV93YWl0aW5nRm9yVUlQcm9jZXNzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICBtX3Nob3VsZFN5bmNGcmFtZSA9IGZhbHNlOwogICAgIGJvb2wgZGlkU3luYyA9IG1fd2ViUGFn
ZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c3luY0NvbXBvc2l0aW5nU3RhdGVJ
bmNsdWRpbmdTdWJmcmFtZXMoKTsKICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnN5
bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwpAQCAtMjUxLDE0ICsyNjIsMTkg
QEAgYm9vbCBMYXllclRyZWVDb29yZGluYXRvcjo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkK
ICAgICAgICAgbV9zaG91bGRTeW5jUm9vdExheWVyID0gZmFsc2U7CiAgICAgfQogCi0gICAgaWYg
KCFtX3Nob3VsZFN5bmNGcmFtZSkKLSAgICAgICAgcmV0dXJuIGRpZFN5bmM7CisgICAgaWYgKG1f
c2hvdWxkU3luY0ZyYW1lKSB7CisgICAgICAgIGRpZFN5bmMgPSB0cnVlOworICAgICAgICBtX3dl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OkRpZFJlbmRl
ckZyYW1lKCkpOworICAgICAgICBtX3dhaXRpbmdGb3JVSVByb2Nlc3MgPSB0cnVlOworICAgICAg
ICBtX3Nob3VsZFN5bmNGcmFtZSA9IGZhbHNlOworICAgIH0KIAotICAgIG1fd2ViUGFnZS0+c2Vu
ZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6RGlkUmVuZGVyRnJhbWUoKSk7
Ci0gICAgbV93YWl0aW5nRm9yVUlQcm9jZXNzID0gdHJ1ZTsKLSAgICBtX3Nob3VsZFN5bmNGcmFt
ZSA9IGZhbHNlOworICAgIGlmIChtX2ZvcmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJRCkgeworICAg
ICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNr
KG1fZm9yY2VSZXBhaW50QXN5bmNDYWxsYmFja0lEKSk7CisgICAgICAgIG1fZm9yY2VSZXBhaW50
QXN5bmNDYWxsYmFja0lEID0gMDsKKyAgICB9CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1
cm4gZGlkU3luYzsKIH0KIAogdm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6c3luY0xheWVyU3Rh
dGUoV2ViTGF5ZXJJRCBpZCwgY29uc3QgV2ViTGF5ZXJJbmZvJiBpbmZvKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKaW5kZXggMThhZDk0MzJi
ODE0YTI4NWIzOTRiNzFlNmRiMDFmYWJlZjUzZGRhMS4uYTkwMjU4ODRjMjgwNGM4ZmU2ZGJmYTQy
MDM4ZTc0YWM2NDVhYmNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVDb29yZGluYXRvci5oCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXkoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgc2Nyb2xsT2Zmc2V0KTsKICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50KCk7CisgICAg
dmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAg
IHZpcnR1YWwgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1Np
emUpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZEluc3RhbGxQYWdlT3ZlcmxheSgpOwpAQCAtMTM5
LDYgKzE0MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBsYXllckZsdXNoVGltZXJGaXJlZChXZWJD
b3JlOjpUaW1lcjxMYXllclRyZWVDb29yZGluYXRvcj4qKTsKICAgICBXZWJDb3JlOjpUaW1lcjxM
YXllclRyZWVDb29yZGluYXRvcj4gbV9sYXllckZsdXNoVGltZXI7CiAgICAgYm9vbCBtX2xheWVy
Rmx1c2hTY2hlZHVsaW5nRW5hYmxlZDsKKyAgICB1aW50NjRfdCBtX2ZvcmNlUmVwYWludEFzeW5j
Q2FsbGJhY2tJRDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5jcHAKaW5kZXggOGVjZDllMjUxMzYxYTNiYTUwODI4
NDRmOGIwYzAxM2QyM2IwMDA5Ni4uZWVmZDFiYjg4NDRjMDM0MmY2YTZkZjg1NDM5YmU1NzIyN2Iy
YTNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhSW1wbC5jcHAKQEAgLTE5OSw2ICsxOTksMTEgQEAgdm9pZCBEcmF3aW5nQXJlYUlt
cGw6OmZvcmNlUmVwYWludCgpCiAgICAgZGlzcGxheSgpOwogfQogCitib29sIERyYXdpbmdBcmVh
SW1wbDo6Zm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICByZXR1
cm4gbV9sYXllclRyZWVIb3N0ICYmIG1fbGF5ZXJUcmVlSG9zdC0+Zm9yY2VSZXBhaW50QXN5bmMo
Y2FsbGJhY2tJRCk7Cit9CisKIHZvaWQgRHJhd2luZ0FyZWFJbXBsOjpkaWRJbnN0YWxsUGFnZU92
ZXJsYXkoKQogewogICAgIGlmIChtX2xheWVyVHJlZUhvc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmgKaW5kZXggNTVlM2RmNDg0
MDBmNzE4NDU4OWE5OWIxYTk0Zjg3YjdkYjc1MGI0ZC4uMDE3NGE1ZDZlNzkyM2NmNGUwZmZjYzBk
MDUxYWVkMjZkMjk5MWUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuaApAQCAtNTcsNiArNTcsNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgYm9vbCBsYXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3QgeyByZXR1cm4gbV9s
YXllclRyZWVTdGF0ZUlzRnJvemVuOyB9CiAgICAgdmlydHVhbCBMYXllclRyZWVIb3N0KiBsYXll
clRyZWVIb3N0KCkgY29uc3QgeyByZXR1cm4gbV9sYXllclRyZWVIb3N0LmdldCgpOyB9CiAgICAg
dmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpOworICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFp
bnRBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRJbnN0
YWxsUGFnZU92ZXJsYXkoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkVW5pbnN0YWxsUGFnZU92ZXJs
YXkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXll
clRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVl
SG9zdC5oCmluZGV4IDljMmU3NDRmNGRmZDMxYjE5NzA4ZDEyZWIxNGYzNTk5NzVhMmJiYTguLjgz
ZjU0YTliYWNmM2ZhZWJiNjI5YWIxNDU3ZmU2MTAwMmU0ZmU0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaApAQCAtNzMsNiArNzMs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05l
ZWREaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3Jv
bGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJl
cGFpbnRBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1NpemUp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKSA9IDA7
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157203</attachid>
            <date>2012-08-08 06:35:15 -0700</date>
            <delta_ts>2012-08-08 07:11:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92753-20120808153448.patch</filename>
            <type>text/plain</type>
            <size>8005</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWQ2MTgwNTQ2MzMyYWY5
NjBkZmI1Nzk1MDBlODdiMmE3MWE1MTRmZi4uMzI1N2RlMzZlYTM0ZWQyNGFkMjQ4ZjFhNTg3Mjcz
Y2JkMzU1ZDU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA4LTA3ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIFNub3dzaG9l
IGRlc2t0b3AgY3Jhc2hlcyB3aGVuIG9wZW5pbmcgYSBuZXcgdGFiCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mjc1MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSBiYWNrIGZvcmNlUmVwYWludCB0
byBjb25zaWRlciB0aGUgVUkgcHJvY2VzcyBzdGF0ZS4KKyAgICAgICAgSXQgaGFzIGJlZW4gdHdl
YWtlZCB0byBzYXRpc2Z5IHRoZSBuZWVkcyBvZiBXS1BhZ2VGb3JjZVJlcGFpbnQgYnV0CisgICAg
ICAgIGl0IGhhcyBvdGhlciBjYWxsZXJzIHNvIHRoaXMgbmV3IGJlaGF2aW9yIHdhcyBub3Qgc2Fm
ZS4gVGhpcyBwYXRjaAorICAgICAgICBpbXBsZW1lbnRzIFdlYlBhZ2U6OmZvcmNlUmVwYWludEFz
eW5jIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBJdCBpcworICAgICAgICBkb25lIGJ5IExheWVyVHJl
ZUNvb3JkaW5hdG9yIHRoYXQgaG9sZHMgdGhlIGNhbGxiYWNrIGFuZCBzZW5kIHRoZQorICAgICAg
ICByZXBseSBtZXNzYWdlIGluIHRoZSBuZXh0IGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcy4gSW4g
dGhlb3J5IGl0CisgICAgICAgIGNvdWxkIGJlIGltcGxlbWVudGVkIGZvciB0aGUgbm9uIGNvbnBv
c2l0ZWQgcGF0aCBpbiBEcmF3aW5nQXJlYUltcGwKKyAgICAgICAgYXMgd2VsbCBidXQgbmVpdGhl
ciBpdCBpcyBuZWVkZWQgbm9yIGNhbiBJIHRlc3QgaXQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpMYXllclRyZWVDb29yZGluYXRv
cik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpmb3JjZVJlcGFpbnQp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0
b3I6OmZvcmNlUmVwYWludEFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRp
bmF0b3I6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaDoKKyAgICAg
ICAgKExheWVyVHJlZUNvb3JkaW5hdG9yKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWFJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWFJbXBsOjpm
b3JjZVJlcGFpbnRBc3luYyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuaDoKKyAgICAgICAgKERyYXdpbmdBcmVhSW1wbCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAg
KFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50QXN5bmMpOgorCiAyMDEyLTA4LTA2
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTI0ODE2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRp
bmF0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCmluZGV4IGMwNmM1OGRmNTcwMjRjMzAw
OTVlMTQyZjViZTRjYjAxMGM4NDcwMTYuLmM5OWNmYzc4ODZiZTY5MmY3NGViOGFjNDJlZWZmMzJk
YmI0MDI2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJTdXJmYWNlVXBkYXRl
SW5mby5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldl
YlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZS5oPgpAQCAtNzcsNiArNzgsNyBAQCBMYXllclRyZWVDb29yZGluYXRvcjo6
TGF5ZXJUcmVlQ29vcmRpbmF0b3IoV2ViUGFnZSogd2ViUGFnZSkKICAgICAsIG1fc2hvdWxkU3lu
Y1Jvb3RMYXllcih0cnVlKQogICAgICwgbV9sYXllckZsdXNoVGltZXIodGhpcywgJkxheWVyVHJl
ZUNvb3JkaW5hdG9yOjpsYXllckZsdXNoVGltZXJGaXJlZCkKICAgICAsIG1fbGF5ZXJGbHVzaFNj
aGVkdWxpbmdFbmFibGVkKHRydWUpCisgICAgLCBtX2ZvcmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJ
RCgwKQogewogICAgIC8vIENyZWF0ZSBhIHJvb3QgbGF5ZXIuCiAgICAgbV9yb290TGF5ZXIgPSBH
cmFwaGljc0xheWVyOjpjcmVhdGUodGhpcyk7CkBAIC0xODQsNiArMTg2LDE1IEBAIHZvaWQgTGF5
ZXJUcmVlQ29vcmRpbmF0b3I6OmZvcmNlUmVwYWludCgpCiAgICAgZmx1c2hQZW5kaW5nTGF5ZXJD
aGFuZ2VzKCk7CiB9CiAKK2Jvb2wgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmZvcmNlUmVwYWludEFz
eW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgLy8gV2UgZXhwZWN0IHRoZSBVSSBwcm9j
ZXNzIHRvIG5vdCByZXF1aXJlIGEgbmV3IHJlcGFpbnQgdW50aWwgdGhlIHByZXZpb3VzIG9uZSBo
YXMgZmluaXNoZWQuCisgICAgQVNTRVJUKCFtX2ZvcmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJRCk7
CisgICAgbV9mb3JjZVJlcGFpbnRBc3luY0NhbGxiYWNrSUQgPSBjYWxsYmFja0lEOworICAgIHNj
aGVkdWxlTGF5ZXJGbHVzaCgpOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIExheWVyVHJl
ZUNvb3JkaW5hdG9yOjpzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1Np
emUpCiB7CiAgICAgaWYgKG1fcm9vdExheWVyLT5zaXplKCkgPT0gbmV3U2l6ZSkKQEAgLTIzOCw2
ICsyNDksOSBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpzZXRQYWdlT3ZlcmxheU9wYWNp
dHkoZmxvYXQgdmFsdWUpCiAKIGJvb2wgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmZsdXNoUGVuZGlu
Z0xheWVyQ2hhbmdlcygpCiB7CisgICAgaWYgKG1fd2FpdGluZ0ZvclVJUHJvY2VzcykKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCiAgICAgbV9zaG91bGRTeW5jRnJhbWUgPSBmYWxzZTsKICAgICBi
b29sIGRpZFN5bmMgPSBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCkt
PnN5bmNDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVzKCk7CiAgICAgbV9ub25Db21w
b3NpdGVkQ29udGVudExheWVyLT5zeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHko
KTsKQEAgLTI1MSwxNCArMjY1LDE5IEBAIGJvb2wgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmZsdXNo
UGVuZGluZ0xheWVyQ2hhbmdlcygpCiAgICAgICAgIG1fc2hvdWxkU3luY1Jvb3RMYXllciA9IGZh
bHNlOwogICAgIH0KIAotICAgIGlmICghbV9zaG91bGRTeW5jRnJhbWUpCi0gICAgICAgIHJldHVy
biBkaWRTeW5jOworICAgIGlmIChtX3Nob3VsZFN5bmNGcmFtZSkgeworICAgICAgICBkaWRTeW5j
ID0gdHJ1ZTsKKyAgICAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29y
ZGluYXRvclByb3h5OjpEaWRSZW5kZXJGcmFtZSgpKTsKKyAgICAgICAgbV93YWl0aW5nRm9yVUlQ
cm9jZXNzID0gdHJ1ZTsKKyAgICAgICAgbV9zaG91bGRTeW5jRnJhbWUgPSBmYWxzZTsKKyAgICB9
CiAKLSAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHk6OkRpZFJlbmRlckZyYW1lKCkpOwotICAgIG1fd2FpdGluZ0ZvclVJUHJvY2VzcyA9IHRydWU7
Ci0gICAgbV9zaG91bGRTeW5jRnJhbWUgPSBmYWxzZTsKKyAgICBpZiAobV9mb3JjZVJlcGFpbnRB
c3luY0NhbGxiYWNrSUQpIHsKKyAgICAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlZvaWRDYWxsYmFjayhtX2ZvcmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJRCkpOwor
ICAgICAgICBtX2ZvcmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJRCA9IDA7CisgICAgfQogCi0gICAg
cmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGRpZFN5bmM7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlQ29v
cmRpbmF0b3I6OnN5bmNMYXllclN0YXRlKFdlYkxheWVySUQgaWQsIGNvbnN0IFdlYkxheWVySW5m
byYgaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGlu
YXRvci5oCmluZGV4IDE4YWQ5NDMyYjgxNGEyODViMzk0YjcxZTZkYjAxZmFiZWY1M2RkYTEuLmE5
MDI1ODg0YzI4MDRjOGZlNmRiZmE0MjAzOGU3NGFjNjQ1YWJjYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJl
ZUNvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaApAQCAtNTEsNiArNTEsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWRE
aXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xs
Tm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3Qs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCk7CiAgICAgdmlydHVhbCB2b2lk
IGZvcmNlUmVwYWludCgpOworICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyh1aW50
NjRfdCBjYWxsYmFja0lEKTsKICAgICB2aXJ0dWFsIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRJbnN0YWxs
UGFnZU92ZXJsYXkoKTsKQEAgLTEzOSw2ICsxNDAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbGF5
ZXJGbHVzaFRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8TGF5ZXJUcmVlQ29vcmRpbmF0b3I+Kik7
CiAgICAgV2ViQ29yZTo6VGltZXI8TGF5ZXJUcmVlQ29vcmRpbmF0b3I+IG1fbGF5ZXJGbHVzaFRp
bWVyOwogICAgIGJvb2wgbV9sYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQ7CisgICAgdWludDY0
X3QgbV9mb3JjZVJlcGFpbnRBc3luY0NhbGxiYWNrSUQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCmluZGV4
IDhlY2Q5ZTI1MTM2MWEzYmE1MDgyODQ0ZjhiMGMwMTNkMjNiMDAwOTYuLmVlZmQxYmI4ODQ0YzAz
NDJmNmE2ZGY4NTQzOWJlNTcyMjdiMmEzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCkBAIC0xOTksNiArMTk5LDEx
IEBAIHZvaWQgRHJhd2luZ0FyZWFJbXBsOjpmb3JjZVJlcGFpbnQoKQogICAgIGRpc3BsYXkoKTsK
IH0KIAorYm9vbCBEcmF3aW5nQXJlYUltcGw6OmZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNh
bGxiYWNrSUQpCit7CisgICAgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdCAmJiBtX2xheWVyVHJlZUhv
c3QtPmZvcmNlUmVwYWludEFzeW5jKGNhbGxiYWNrSUQpOworfQorCiB2b2lkIERyYXdpbmdBcmVh
SW1wbDo6ZGlkSW5zdGFsbFBhZ2VPdmVybGF5KCkKIHsKICAgICBpZiAobV9sYXllclRyZWVIb3N0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhSW1wbC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
SW1wbC5oCmluZGV4IDU1ZTNkZjQ4NDAwZjcxODQ1ODlhOTliMWE5NGY4N2I3ZGI3NTBiNGQuLjAx
NzRhNWQ2ZTc5MjNjZjRlMGZmY2MwZDA1MWFlZDI2ZDI5OTFlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmgKQEAgLTU3LDYg
KzU3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgbGF5ZXJUcmVlU3RhdGVJc0Zyb3pl
bigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbjsgfQogICAgIHZpcnR1
YWwgTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJU
cmVlSG9zdC5nZXQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKTsKKyAgICB2
aXJ0dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkSW5zdGFsbFBhZ2VPdmVybGF5KCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpZFVuaW5zdGFsbFBhZ2VPdmVybGF5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaAppbmRleCA5YzJlNzQ0ZjRkZmQzMWIxOTcwOGQx
MmViMTRmMzU5OTc1YTJiYmE4Li44M2Y1NGE5YmFjZjNmYWViYjYyOWFiMTQ1N2ZlNjEwMDJlNGZl
NDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJU
cmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRy
ZWVIb3N0LmgKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRO
b25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Ny
b2xsT2Zmc2V0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBuZXdTaXplKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRldmljZVNjYWxl
RmFjdG9yRGlkQ2hhbmdlKCkgPSAwOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>