<?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>103498</bug_id>
          
          <creation_ts>2012-11-28 03:03:17 -0800</creation_ts>
          <short_desc>Regression(r135962): ASSERTION FAILED: !m_pedningSyncBackingStores.contains(layer)</short_desc>
          <delta_ts>2012-11-28 07:44:11 -0800</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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>103171</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>dongseong.hwang</cc>
    
    <cc>jussi.kukkonen</cc>
    
    <cc>kenneth</cc>
    
    <cc>noam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>777676</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-28 03:03:17 -0800</bug_when>
    <thetext>After r135962, we often hit the following assertion in the layout tests:
18:07:40.667 21028   ASSERTION FAILED: !m_pedningSyncBackingStores.contains(layer)
18:07:40.667 21028   /home/buildslave-1/webkit-buildslave/efl-linux-64-debug-wk2/build/Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp(446) : void WebKit::LayerTreeRenderer::createBackingStoreIfNeeded(WebCore::GraphicsLayer*)
18:07:40.667 21028   1   0x7f592cdd759c WebKit::LayerTreeRenderer::createBackingStoreIfNeeded(WebCore::GraphicsLayer*)
18:07:40.667 21028   2   0x7f592cdd7455 WebKit::LayerTreeRenderer::prepareContentBackingStore(WebCore::GraphicsLayer*)
18:07:40.667 21028   3   0x7f592cdd6f83 WebKit::LayerTreeRenderer::setLayerState(unsigned int, WebKit::WebLayerInfo const&amp;)
18:07:40.667 21028   4   0x7f592cdd57f3 WTF::FunctionWrapper&lt;void (WebKit::LayerTreeRenderer::*)(unsigned int, WebKit::WebLayerInfo const&amp;)&gt;::operator()(WebKit::LayerTreeRenderer*, unsigned int, WebKit::WebLayerInfo const&amp;)
18:07:40.667 21028   5   0x7f592cdd4ee8 WTF::BoundFunctionImpl&lt;WTF::FunctionWrapper&lt;void (WebKit::LayerTreeRenderer::*)(unsigned int, WebKit::WebLayerInfo const&amp;)&gt;, void (WebKit::LayerTreeRenderer*, unsigned int, WebKit::WebLayerInfo)&gt;::operator()()
18:07:40.667 21028   6   0x7f5933e86bd6 WTF::Function&lt;void ()&gt;::operator()() const
18:07:40.667 21028   7   0x7f592cdd8750 WebKit::LayerTreeRenderer::syncRemoteContent()
18:07:40.667 21028   8   0x7f592cdd6027 WebKit::LayerTreeRenderer::paintToCurrentGLContext(WebCore::TransformationMatrix const&amp;, float, WebCore::FloatRect const&amp;, unsigned int)
18:07:40.668 21028   9   0x7f592cf07088 EwkViewImpl::displayTimerFired(WebCore::Timer&lt;EwkViewImpl&gt;*)
18:07:40.668 21028   10  0x7f592cf0e60e WebCore::Timer&lt;EwkViewImpl&gt;::fired()
18:07:40.668 21028   11  0x7f5930347e86 WebCore::ThreadTimers::sharedTimerFiredInternal()
18:07:40.668 21028   12  0x7f5930347da7 WebCore::ThreadTimers::sharedTimerFired()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777692</commentid>
    <comment_count>1</comment_count>
      <attachid>176441</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-28 03:17:17 -0800</bug_when>
    <thetext>Created attachment 176441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777693</commentid>
    <comment_count>2</comment_count>
      <attachid>176441</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-28 03:19:11 -0800</bug_when>
    <thetext>Comment on attachment 176441
Patch

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

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:422
&gt; -    if (it != m_pedningSyncBackingStores.end())
&gt; +    BackingStoreMap::iterator it = m_pendingSyncBackingStores.find(layer);
&gt; +    if (it != m_pendingSyncBackingStores.end())

nice :-)

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:441
&gt; +    if (getBackingStore(graphicsLayer))

shouldn&apos;t that be renamed to ensureBackingStore then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777700</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-28 03:25:01 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 176441 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176441&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:422
&gt; &gt; -    if (it != m_pedningSyncBackingStores.end())
&gt; &gt; +    BackingStoreMap::iterator it = m_pendingSyncBackingStores.find(layer);
&gt; &gt; +    if (it != m_pendingSyncBackingStores.end())
&gt; 
&gt; nice :-)
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:441
&gt; &gt; +    if (getBackingStore(graphicsLayer))
&gt; 
&gt; shouldn&apos;t that be renamed to ensureBackingStore then?

I&apos;m not very familiar with this part of the code but ensureBackingStore() seems to make sense. However, I would do such refactoring in a separate patch since this one is really about the assertion hit that&apos;s making our bots red at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777705</commentid>
    <comment_count>4</comment_count>
      <attachid>176441</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-28 03:32:51 -0800</bug_when>
    <thetext>Comment on attachment 176441
Patch

Noam should really have a look, but r=cq=me now as we cannot have red bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777716</commentid>
    <comment_count>5</comment_count>
      <attachid>176441</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-28 03:55:03 -0800</bug_when>
    <thetext>Comment on attachment 176441
Patch

Rejecting attachment 176441 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 154.

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;, &apos;--force-update&apos;]&quot; exit_code: 9
it rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 154.

Full output: http://queues.webkit.org/results/15003819</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777729</commentid>
    <comment_count>6</comment_count>
      <attachid>176441</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-11-28 04:10:05 -0800</bug_when>
    <thetext>Comment on attachment 176441
Patch

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

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:455
&gt; +    if (!getBackingStore(graphicsLayer))
&gt;          return;

If I understand correctly the ASSERT happens when two async operations happen before the commit happen.
In this case it&apos;s a bit weird, since you&apos;re going to delay setting this layers backing store to 0 while it&apos;s already 0. So basically you could just remove it&apos;s key from the map.

Maybe it would be better to explicitely check if the layer is already in m_pendingSyncBackingStores instead of assuming that getBackingStore will do (and won&apos;t change in the future).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777734</commentid>
    <comment_count>7</comment_count>
      <attachid>176441</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-28 04:17:41 -0800</bug_when>
    <thetext>Comment on attachment 176441
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:455
&gt;&gt;          return;
&gt; 
&gt; If I understand correctly the ASSERT happens when two async operations happen before the commit happen.
&gt; In this case it&apos;s a bit weird, since you&apos;re going to delay setting this layers backing store to 0 while it&apos;s already 0. So basically you could just remove it&apos;s key from the map.
&gt; 
&gt; Maybe it would be better to explicitely check if the layer is already in m_pendingSyncBackingStores instead of assuming that getBackingStore will do (and won&apos;t change in the future).

You are right, I can improve this. I&apos;ll upload a new proposal soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777752</commentid>
    <comment_count>8</comment_count>
      <attachid>176457</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-28 04:44:25 -0800</bug_when>
    <thetext>Created attachment 176457
Patch

New proposal based on Jocelyn&apos;s feedback.

I&apos;m now checking the pending map explicitly which allows for some optimizations in the case where we have both a pending creation AND a pending removal (in which case we can simply cancel the pending operation and return early).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777753</commentid>
    <comment_count>9</comment_count>
      <attachid>176457</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-11-28 04:45:56 -0800</bug_when>
    <thetext>Comment on attachment 176457
Patch

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

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:473
&gt; +    // Check if the layout already has a backing store (committed or pending).
&gt; +    CoordinatedBackingStore* backingStore = static_cast&lt;CoordinatedBackingStore*&gt;(layer-&gt;backingStore().get());
&gt; +    BackingStoreMap::iterator it = m_pendingSyncBackingStores.find(layer);
&gt; +    if (it != m_pendingSyncBackingStores.end()) {
&gt; +        CoordinatedBackingStore* pendingBackingStore = it-&gt;value.get();

Isnt that the same code as above? separate out in a function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777757</commentid>
    <comment_count>10</comment_count>
      <attachid>176457</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-28 04:47:12 -0800</bug_when>
    <thetext>Comment on attachment 176457
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:473
&gt;&gt; +        CoordinatedBackingStore* pendingBackingStore = it-&gt;value.get();
&gt; 
&gt; Isnt that the same code as above? separate out in a function?

It&apos;s not the same. It is actually the opposite:
(backingStore &amp;&amp; !pendingBackingStore) vs (!backingStore &amp;&amp; pendingBackingStore)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777767</commentid>
    <comment_count>11</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-28 04:59:47 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 176441 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176441&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:455
&gt; &gt;&gt;          return;
&gt; &gt; 
&gt; &gt; If I understand correctly the ASSERT happens when two async operations happen before the commit happen.
&gt; &gt; In this case it&apos;s a bit weird, since you&apos;re going to delay setting this layers backing store to 0 while it&apos;s already 0. So basically you could just remove it&apos;s key from the map.
&gt; &gt; 
&gt; &gt; Maybe it would be better to explicitely check if the layer is already in m_pendingSyncBackingStores instead of assuming that getBackingStore will do (and won&apos;t change in the future).
&gt; 
&gt; You are right, I can improve this. I&apos;ll upload a new proposal soon.

Thank you so much for reporting and fixing!

Jocelyn is right.

LayerTreeCoordinator::performScheduleLayer(? - sorry, now I can not see code.) flushes all layer as traversing layer tree and then send DidRenderFrame message.
It is why request to sync layer states can be called once per layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777768</commentid>
    <comment_count>12</comment_count>
      <attachid>176457</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-11-28 05:02:00 -0800</bug_when>
    <thetext>Comment on attachment 176457
Patch

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

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:482
&gt; +    }
&gt; +    if (!backingStore)

Unless I&apos;m missing something it feels like this fall through is impossible if (it != m_pendingSyncBackingStores.end());
This is assuming that only backingStore XOR pendingBackingStore can be non-null.

If we want to create and the layer is in the map then we either need to &quot;remove the removal&quot; if pendingBackingStore == 0 or else do nothing.
If we want to remove, same thing but remove the layer from the map only if pendingBackingStore != 0.

In other words, couldn&apos;t you could simplify the two first ifs with &quot;if (it != m_pendingSyncBackingStores.end() &amp;&amp; !it-&gt;value.get())&quot; and always return in that block?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777770</commentid>
    <comment_count>13</comment_count>
      <attachid>176457</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-28 05:06:42 -0800</bug_when>
    <thetext>Comment on attachment 176457
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:482
&gt;&gt; +    if (!backingStore)
&gt; 
&gt; Unless I&apos;m missing something it feels like this fall through is impossible if (it != m_pendingSyncBackingStores.end());
&gt; This is assuming that only backingStore XOR pendingBackingStore can be non-null.
&gt; 
&gt; If we want to create and the layer is in the map then we either need to &quot;remove the removal&quot; if pendingBackingStore == 0 or else do nothing.
&gt; If we want to remove, same thing but remove the layer from the map only if pendingBackingStore != 0.
&gt; 
&gt; In other words, couldn&apos;t you could simplify the two first ifs with &quot;if (it != m_pendingSyncBackingStores.end() &amp;&amp; !it-&gt;value.get())&quot; and always return in that block?

Actually, I believe it is possible. This handles 2 cases:
1. The layer has no backing store and no pending operation (layer-&gt;backingStore() returns NULL and m_pendingSyncBackingStores.find(layer) does not find anything)
2. The layer has a pending backing store removal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777783</commentid>
    <comment_count>14</comment_count>
      <attachid>176457</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-28 05:24:19 -0800</bug_when>
    <thetext>Comment on attachment 176457
Patch

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

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:461
&gt; +    m_pendingSyncBackingStores.add(layer, newBackingStore);

How about changing m_pendingSyncBackingStores.set(layer, newBackingStore) and remove ASSERT.
AFAIK, HashMap::set means
if (!map.contain(key))
   map.add(key, value)
else
   map.set(key, value)

It can reduce code. but we need above comment yet, because this situation is a bit hard to understand.

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:486
&gt; +    m_pendingSyncBackingStores.add(layer, 0);

How about changing m_pendingSyncBackingStores.set(layer, 0);

I really appreciate fixing this bug.

However, in my understanding, I can not understand how this case occurs. Of course, I may misunderstand something.
This case means LayerTreeRenderer::setLayerState() can be called more than twice for single layer before next flush.
LayerTreeRenderer::setLayerState() only calls LayerTreeRenderer::createBackingStoreIfNeeded or LayerTreeRenderer::removeBackingStoreIfNeeded.

In the detail, LayerTreeCooridinator::performScheduleFlush(?) traverses layer tree and send sync layer states message.
After traversing, LayerTreeCooridinator::performScheduleFlush(?) sends DidRenderFrame message.

This bug implies two possibilities.
1. LayerTreeCooridinator::performScheduleFlush(?) does not send DidRenderFrame message although traversing layer tree to sync layer state.
2. LayerTreeCooridinator::performScheduleFlush(?) can pass by single layer twice during traversing.

I think both are impossible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777793</commentid>
    <comment_count>15</comment_count>
      <attachid>176457</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-28 05:30:52 -0800</bug_when>
    <thetext>Comment on attachment 176457
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:482
&gt;&gt;&gt; +    if (!backingStore)
&gt;&gt; 
&gt;&gt; Unless I&apos;m missing something it feels like this fall through is impossible if (it != m_pendingSyncBackingStores.end());
&gt;&gt; This is assuming that only backingStore XOR pendingBackingStore can be non-null.
&gt;&gt; 
&gt;&gt; If we want to create and the layer is in the map then we either need to &quot;remove the removal&quot; if pendingBackingStore == 0 or else do nothing.
&gt;&gt; If we want to remove, same thing but remove the layer from the map only if pendingBackingStore != 0.
&gt;&gt; 
&gt;&gt; In other words, couldn&apos;t you could simplify the two first ifs with &quot;if (it != m_pendingSyncBackingStores.end() &amp;&amp; !it-&gt;value.get())&quot; and always return in that block?
&gt; 
&gt; Actually, I believe it is possible. This handles 2 cases:
&gt; 1. The layer has no backing store and no pending operation (layer-&gt;backingStore() returns NULL and m_pendingSyncBackingStores.find(layer) does not find anything)
&gt; 2. The layer has a pending backing store removal

I think I have just understood your comment, sorry for the delay :) I&apos;ll try to simplify as advised.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777806</commentid>
    <comment_count>16</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-28 05:40:49 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 176457 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176457&amp;action=review
&gt; I think I have just understood your comment, sorry for the delay :) I&apos;ll try to simplify as advised.

Why you said apologize. I&apos;m one who made this bug :) I&apos;m sorry folks.

Jocelyn and Kenneth, do you think Comment #14 is valid? Today, I have no confidence for my coding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777811</commentid>
    <comment_count>17</comment_count>
      <attachid>176467</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-28 05:47:11 -0800</bug_when>
    <thetext>Created attachment 176467
Patch

Simplify the checks a bit based on Jocelyn&apos;s feedback. This is still not exactly what Jocelyn hoped but somehow I don&apos;t understand how I can simplify more and not loose functionality (yet).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777815</commentid>
    <comment_count>18</comment_count>
      <attachid>176469</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-28 05:49:56 -0800</bug_when>
    <thetext>Created attachment 176469
Patch

Fixed a typo in one of the comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777832</commentid>
    <comment_count>19</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-28 06:02:59 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; Created an attachment (id=176469) [details]
&gt; Patch
&gt; 
&gt; Fixed a typo in one of the comments.

LGTM

Could you tell me what layout test hits this assertion. I want to test too :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777834</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-28 06:05:12 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; Created an attachment (id=176469) [details] [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Fixed a typo in one of the comments.
&gt; 
&gt; LGTM
&gt; 
&gt; Could you tell me what layout test hits this assertion. I want to test too :)

It is not always the same tests asserting. But basically, if you run all compositing/ tests, you should be able to reproduce it.

See example of crashes on the bot:
http://build.webkit.org/results/EFL%20Linux%2064-bit%20Debug%20WK2/r135996%20(6437)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777845</commentid>
    <comment_count>21</comment_count>
    <who name="Jussi Kukkonen (jku)">jussi.kukkonen</who>
    <bug_when>2012-11-28 06:13:41 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; Could you tell me what layout test hits this assertion. I want to test too :)

I happened to have a list so here you go, but you really should be looking at the build bots after your commit lands, that&apos;s where you&apos;d see the failures...

compositing/geometry/ancestor-overflow-change.html
compositing/geometry/bounds-clipped-composited-child.html
compositing/geometry/bounds-ignores-hidden-dynamic-negzindex.html
compositing/layer-creation/fixed-position-out-of-view.html
compositing/overflow/fixed-position-ancestor-clip.
compositing/overflow/overflow-visible-with-touch.html
compositing/repaint/invalidations-on-composited-layers.html
compositing/repaint/layer-repaint-rects.html
compositing/rtl/rtl-iframe-absolute-overflow-scrolled.html
compositing/rtl/rtl-iframe-absolute-overflow.html
compositing/rtl/rtl-iframe-fixed-overflow-scrolled.html
compositing/tiling/huge-layer-add-remove-child.html
compositing/tiling/huge-layer-img.html
compositing/tiling/huge-layer-with-layer-children-resize.html
compositing/visibility/layer-visible-content.html
compositing/visibility/visibility-composited-transforms.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777848</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-28 06:15:29 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #19)
&gt; &gt; Could you tell me what layout test hits this assertion. I want to test too :)
&gt; 
&gt; I happened to have a list so here you go, but you really should be looking at the build bots after your commit lands, that&apos;s where you&apos;d see the failures...
&gt; 
&gt; compositing/geometry/ancestor-overflow-change.html
&gt; compositing/geometry/bounds-clipped-composited-child.html
&gt; compositing/geometry/bounds-ignores-hidden-dynamic-negzindex.html
&gt; compositing/layer-creation/fixed-position-out-of-view.html
&gt; compositing/overflow/fixed-position-ancestor-clip.
&gt; compositing/overflow/overflow-visible-with-touch.html
&gt; compositing/repaint/invalidations-on-composited-layers.html
&gt; compositing/repaint/layer-repaint-rects.html
&gt; compositing/rtl/rtl-iframe-absolute-overflow-scrolled.html
&gt; compositing/rtl/rtl-iframe-absolute-overflow.html
&gt; compositing/rtl/rtl-iframe-fixed-overflow-scrolled.html
&gt; compositing/tiling/huge-layer-add-remove-child.html
&gt; compositing/tiling/huge-layer-img.html
&gt; compositing/tiling/huge-layer-with-layer-children-resize.html
&gt; compositing/visibility/layer-visible-content.html
&gt; compositing/visibility/visibility-composited-transforms.html

I&apos;ll watch the bots when it lands. But as I said, I can reproduce the assert hit locally by running all compositing/ tests and I confirmed that I no longer hit it with my fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777878</commentid>
    <comment_count>23</comment_count>
      <attachid>176469</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-28 06:52:06 -0800</bug_when>
    <thetext>Comment on attachment 176469
Patch

Clearing flags on attachment: 176469

Committed r136009: &lt;http://trac.webkit.org/changeset/136009&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777879</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-28 06:52:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777882</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-28 07:00:45 -0800</bug_when>
    <thetext>Just FYI, it appears there is still a bug somewhere (not exactly related to this assertion problem).

We sometimes (rarely) crash in TextureMapperLayer::setBackingStore(PassRefPtr&lt;TextureMapperBackingStore&gt;) due to unrefing a m_backingStore that already has a ref count of 0. This happens when you try to assign the same backing store to itself.

Therefore, I added the following assertion:
ASSERT(it-&gt;key-&gt;backingStore() != it-&gt;value);

in LayerTreeRenderer::commitPendingBackingStoreOperations(), right before the it-&gt;key-&gt;setBackingStore(it-&gt;value); to make sure we never reassign the same backing store to a layer. Sadly, we sometimes hit this assertion :/

I&apos;m still investigating to find how this is possible since we carefully control what goes into m_pendingSyncBackingStores.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777906</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-28 07:44:11 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; Just FYI, it appears there is still a bug somewhere (not exactly related to this assertion problem).
&gt; 
&gt; We sometimes (rarely) crash in TextureMapperLayer::setBackingStore(PassRefPtr&lt;TextureMapperBackingStore&gt;) due to unrefing a m_backingStore that already has a ref count of 0. This happens when you try to assign the same backing store to itself.
&gt; 
&gt; Therefore, I added the following assertion:
&gt; ASSERT(it-&gt;key-&gt;backingStore() != it-&gt;value);
&gt; 
&gt; in LayerTreeRenderer::commitPendingBackingStoreOperations(), right before the it-&gt;key-&gt;setBackingStore(it-&gt;value); to make sure we never reassign the same backing store to a layer. Sadly, we sometimes hit this assertion :/
&gt; 
&gt; I&apos;m still investigating to find how this is possible since we carefully control what goes into m_pendingSyncBackingStores.

This may be caused by https://bugs.webkit.org/show_bug.cgi?id=103527
I need to try a bit more (since it is not easy to reproduce) but in any case, I believe the fix from Bug 103527 is needed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176441</attachid>
            <date>2012-11-28 03:17:17 -0800</date>
            <delta_ts>2012-11-28 04:44:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>103498_backingStore_assert.patch</filename>
            <type>text/plain</type>
            <size>4940</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzYWQ2MGU0Li42MDEzNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTItMTEtMjggIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBSZWdyZXNzaW9uKHIxMzU5NjIpOiBBU1NFUlRJT04gRkFJTEVEOiAh
bV9wZWRuaW5nU3luY0JhY2tpbmdTdG9yZXMuY29udGFpbnMobGF5ZXIpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM0OTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgTGF5ZXJUcmVlUmVuZGVyZXI6
OmdldEJhY2tpbmdTdG9yZSgpIGluc3RlYWQgb2YKKyAgICAgICAgVGV4dHVyZU1hcHBlckxheWVy
OjpiYWNraW5nU3RvcmUoKSB0byBjaGVjayBpZiBhIGxheWVyIGhhcworICAgICAgICBhIGJhY2tp
bmcgc3RvcmUgb3Igbm90IGluIGNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkgYW5kCisgICAg
ICAgIHJlbW92ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkuIFRoaXMgaXMgbmVlZGVkIGFmdGVyIHIx
MzU5NjIKKyAgICAgICAgYmVjYXVzZSB0aGUgbGF5ZXJzJyBiYWNraW5nIHN0b3JlIGNoYW5nZXMg
YXJlIGNvbW1pdHRlZAorICAgICAgICBhc3luY2hyb25vdXNseS4gQnkgY2FsbGluZworICAgICAg
ICBMYXllclRyZWVSZW5kZXJlcjo6Z2V0QmFja2luZ1N0b3JlKCksIHdlIG1ha2Ugc3VyZSB0aGF0
CisgICAgICAgIHRoZSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3JlcyBxdWV1ZSBpcyBjaGVja2Vk
IGFzIHdlbGwuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpn
ZXRCYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6Y3Jl
YXRlQmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5k
ZXJlcjo6cmVtb3ZlQmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpMYXll
clRyZWVSZW5kZXJlcjo6Y29tbWl0UGVuZGluZ0JhY2tpbmdTdG9yZU9wZXJhdGlvbnMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmg6
IEZpeCB0eXBvIGluCisgICAgICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzIHZhcmlhYmxl
IG5hbWUuCisKIDIwMTItMTEtMjcgIEppbndvbyBTb25nICA8amlud29vNy5zb25nQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gRHVwbGljYXRlZCBXZWJQYWdlR3JvdXAgaW5pdGlh
bGl6YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAppbmRleCBjZDQ1NzVj
Li5kNTlmZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCkBAIC00MTgs
OCArNDE4LDggQEAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUqIExheWVyVHJlZVJlbmRlcmVyOjpn
ZXRCYWNraW5nU3RvcmUoR3JhcGhpY3NMYXllciogZ3JhcGgKICAgICBBU1NFUlQobGF5ZXIpOwog
ICAgIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBzdGF0aWNfY2FzdDxD
b29yZGluYXRlZEJhY2tpbmdTdG9yZSo+KGxheWVyLT5iYWNraW5nU3RvcmUoKS5nZXQoKSk7CiAK
LSAgICBCYWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZWRuaW5nU3luY0JhY2tpbmdT
dG9yZXMuZmluZChsYXllcik7Ci0gICAgaWYgKGl0ICE9IG1fcGVkbmluZ1N5bmNCYWNraW5nU3Rv
cmVzLmVuZCgpKQorICAgIEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdT
eW5jQmFja2luZ1N0b3Jlcy5maW5kKGxheWVyKTsKKyAgICBpZiAoaXQgIT0gbV9wZW5kaW5nU3lu
Y0JhY2tpbmdTdG9yZXMuZW5kKCkpCiAgICAgICAgIGJhY2tpbmdTdG9yZSA9IGl0LT52YWx1ZS5n
ZXQoKTsKICAgICByZXR1cm4gYmFja2luZ1N0b3JlOwogfQpAQCAtNDM4LDI0ICs0MzgsMjQgQEAg
dm9pZCBMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoR3JhcGhp
Y3NMYXllciogZ3JhcGhpY3NMYXllcikKIHsKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVy
ID0gdG9UZXh0dXJlTWFwcGVyTGF5ZXIoZ3JhcGhpY3NMYXllcik7CiAgICAgQVNTRVJUKGxheWVy
KTsKLSAgICBpZiAobGF5ZXItPmJhY2tpbmdTdG9yZSgpKQorICAgIGlmIChnZXRCYWNraW5nU3Rv
cmUoZ3JhcGhpY3NMYXllcikpCiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxDb29yZGlu
YXRlZEJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlKENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpj
cmVhdGUoKSk7CiAgICAgYmFja2luZ1N0b3JlLT5zZXRTaXplKGdyYXBoaWNzTGF5ZXItPnNpemUo
KSk7Ci0gICAgQVNTRVJUKCFtX3BlZG5pbmdTeW5jQmFja2luZ1N0b3Jlcy5jb250YWlucyhsYXll
cikpOwotICAgIG1fcGVkbmluZ1N5bmNCYWNraW5nU3RvcmVzLmFkZChsYXllciwgYmFja2luZ1N0
b3JlKTsKKyAgICBBU1NFUlQoIW1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmNvbnRhaW5zKGxh
eWVyKSk7CisgICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuYWRkKGxheWVyLCBiYWNraW5n
U3RvcmUpOwogfQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVCYWNraW5nU3RvcmVJ
Zk5lZWRlZChHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQogewogICAgIFRleHR1cmVNYXBw
ZXJMYXllciogbGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyKTsKICAg
ICBBU1NFUlQobGF5ZXIpOwotICAgIGlmICghbGF5ZXItPmJhY2tpbmdTdG9yZSgpKQorICAgIGlm
ICghZ2V0QmFja2luZ1N0b3JlKGdyYXBoaWNzTGF5ZXIpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBBU1NFUlQoIW1fcGVkbmluZ1N5bmNCYWNraW5nU3RvcmVzLmNvbnRhaW5zKGxheWVyKSk7Ci0g
ICAgbV9wZWRuaW5nU3luY0JhY2tpbmdTdG9yZXMuYWRkKGxheWVyLCAwKTsKKyAgICBBU1NFUlQo
IW1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmNvbnRhaW5zKGxheWVyKSk7CisgICAgbV9wZW5k
aW5nU3luY0JhY2tpbmdTdG9yZXMuYWRkKGxheWVyLCAwKTsKIH0KIAogdm9pZCBMYXllclRyZWVS
ZW5kZXJlcjo6cmVzZXRCYWNraW5nU3RvcmVTaXplVG9MYXllclNpemUoR3JhcGhpY3NMYXllciog
Z3JhcGhpY3NMYXllcikKQEAgLTU2NywxMiArNTY3LDEyIEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVy
ZXI6OmNvbW1pdFBlbmRpbmdCYWNraW5nU3RvcmVPcGVyYXRpb25zKCkKICAgICBtX2JhY2tpbmdT
dG9yZXNXaXRoUGVuZGluZ0J1ZmZlcnMuY2xlYXIoKTsKIAogICAgIHsKLSAgICAgICAgQmFja2lu
Z1N0b3JlTWFwOjppdGVyYXRvciBlbmQgPSBtX3BlZG5pbmdTeW5jQmFja2luZ1N0b3Jlcy5lbmQo
KTsKLSAgICAgICAgQmFja2luZ1N0b3JlTWFwOjppdGVyYXRvciBpdCA9IG1fcGVkbmluZ1N5bmNC
YWNraW5nU3RvcmVzLmJlZ2luKCk7CisgICAgICAgIEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3Ig
ZW5kID0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuZW5kKCk7CisgICAgICAgIEJhY2tpbmdT
dG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5iZWdpbigp
OwogICAgICAgICBmb3IgKDtpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICAgICBpdC0+a2V5LT5z
ZXRCYWNraW5nU3RvcmUoaXQtPnZhbHVlKTsKIAotICAgICAgICBtX3BlZG5pbmdTeW5jQmFja2lu
Z1N0b3Jlcy5jbGVhcigpOworICAgICAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5jbGVh
cigpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKaW5kZXggMGMw
MzUxZC4uNmYxMDU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCkBAIC0xNjYs
NyArMTY2LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmUHRyPENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlPiA+IG1fcmVsZWFzZWRJbWFnZUJhY2tpbmdzOwogCiAgICAgdHlwZWRlZiBIYXNoTWFw
PFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciosIFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdT
dG9yZT4gPiBCYWNraW5nU3RvcmVNYXA7Ci0gICAgQmFja2luZ1N0b3JlTWFwIG1fcGVkbmluZ1N5
bmNCYWNraW5nU3RvcmVzOworICAgIEJhY2tpbmdTdG9yZU1hcCBtX3BlbmRpbmdTeW5jQmFja2lu
Z1N0b3JlczsKIAogICAgIEhhc2hTZXQ8UmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+
IG1fYmFja2luZ1N0b3Jlc1dpdGhQZW5kaW5nQnVmZmVyczsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176457</attachid>
            <date>2012-11-28 04:44:25 -0800</date>
            <delta_ts>2012-11-28 05:47:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>103498_backingStore_assert.patch</filename>
            <type>text/plain</type>
            <size>6845</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzYWQ2MGU0Li44MzNlNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTItMTEtMjggIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBSZWdyZXNzaW9uKHIxMzU5NjIpOiBBU1NFUlRJT04gRkFJTEVEOiAh
bV9wZWRuaW5nU3luY0JhY2tpbmdTdG9yZXMuY29udGFpbnMobGF5ZXIpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM0OTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBoaXQgdGhlICFtX3BlZG5pbmdT
eW5jQmFja2luZ1N0b3Jlcy5jb250YWlucyhsYXllcikgYXNzZXJ0aW9uCisgICAgICAgIGluIExh
eWVyVHJlZVJlbmRlcmVyIHdoZW4gMiBhc3luY2hyb25vdXMgYmFja2luZyBzdG9yZSBvcGVyYXRp
b25zCisgICAgICAgIGFyZSBwZW5kaW5nLiBUaGUgY3VycmVudCBjb2RlIGNoZWNrcyBpZiB0aGUg
bGF5ZXIgYWxyZWFkeSBoYXMgYQorICAgICAgICBiYWNraW5nIHN0b3JlIGluIGl0cyBndWFyZCBi
dXQgdGhpcyBpcyBpbnN1ZmZpY2llbnQgYXMgaXQgaXMgbm90CisgICAgICAgIGNoZWNraW5nIHRo
ZSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3JlcyBoYXNoIGZvciBwZW5kaW5nIGJhY2tpbmcKKyAg
ICAgICAgc3RvcmUgY2hhbmdlcy4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBpbXByb3Zl
IHRoZSBndWFyZHMgaW4gY3JlYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKQorICAgICAgICBhbmQg
cmVtb3ZlQmFja2luZ1N0b3JlSWZOZWVkZWQoKSB0byBjaGVjayBub3Qgb25seSBpZiB0aGUgbGF5
ZXIgaGFzCisgICAgICAgIGFscmVhZHkgYSBiYWNraW5nIHN0b3JlIGJ1dCBhbHNvIGNoZWNrIG1f
cGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzCisgICAgICAgIGZvciBwZW5kaW5nIGNoYW5nZXMuIFRo
aXMgaXMgc2FmZXIgYW5kIGl0IGFsbG93cyBmb3Igb3B0aW1pemF0aW9ucworICAgICAgICBpbiB0
aGUgY2FzZXMgd2hlcmUgd2UgaGF2ZSBib3RoIGEgcmVtb3ZhbCBhbmQgYSBjcmVhdGlvbiBwZW5k
aW5nLgorICAgICAgICBJbiB0aG9zZSBjYXNlcywgd2UgY2FuIHNpbXBseSBjYW5jZWwgdGhlIHBl
bmRpbmcgb3BlcmF0aW9uIGluc3RlYWQKKyAgICAgICAgb2YgcXVldWVpbmcgYSBuZXcgb25lLgor
CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6Z2V0QmFja2luZ1N0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUJhY2tpbmdT
dG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92
ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVy
ZXI6OmNvbW1pdFBlbmRpbmdCYWNraW5nU3RvcmVPcGVyYXRpb25zKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oOgorCiAyMDEyLTEx
LTI3ICBKaW53b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBb
RUZMXVtXSzJdIER1cGxpY2F0ZWQgV2ViUGFnZUdyb3VwIGluaXRpYWxpemF0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKaW5kZXggY2Q0NTc1Yy4uZjk4ZThjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcApAQCAtNDE4LDggKzQxOCw4IEBAIENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlKiBMYXllclRyZWVSZW5kZXJlcjo6Z2V0QmFja2luZ1N0b3JlKEdy
YXBoaWNzTGF5ZXIqIGdyYXBoCiAgICAgQVNTRVJUKGxheWVyKTsKICAgICBDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZSogYmFja2luZ1N0b3JlID0gc3RhdGljX2Nhc3Q8Q29vcmRpbmF0ZWRCYWNraW5n
U3RvcmUqPihsYXllci0+YmFja2luZ1N0b3JlKCkuZ2V0KCkpOwogCi0gICAgQmFja2luZ1N0b3Jl
TWFwOjppdGVyYXRvciBpdCA9IG1fcGVkbmluZ1N5bmNCYWNraW5nU3RvcmVzLmZpbmQobGF5ZXIp
OwotICAgIGlmIChpdCAhPSBtX3BlZG5pbmdTeW5jQmFja2luZ1N0b3Jlcy5lbmQoKSkKKyAgICBC
YWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMu
ZmluZChsYXllcik7CisgICAgaWYgKGl0ICE9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmVu
ZCgpKQogICAgICAgICBiYWNraW5nU3RvcmUgPSBpdC0+dmFsdWUuZ2V0KCk7CiAgICAgcmV0dXJu
IGJhY2tpbmdTdG9yZTsKIH0KQEAgLTQzOCwyNCArNDM4LDUyIEBAIHZvaWQgTGF5ZXJUcmVlUmVu
ZGVyZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNz
TGF5ZXIpCiB7CiAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9IHRvVGV4dHVyZU1hcHBl
ckxheWVyKGdyYXBoaWNzTGF5ZXIpOwogICAgIEFTU0VSVChsYXllcik7Ci0gICAgaWYgKGxheWVy
LT5iYWNraW5nU3RvcmUoKSkKKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgbGF5ZXIgZG9lcyBub3Qg
YWxyZWFkeSBoYXZlIGEgYmFja2luZyBzdG9yZSAoY29tbWl0dGVkIG9yIHBlbmRpbmcpLgorICAg
IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlKiBiYWNraW5nU3RvcmUgPSBzdGF0aWNfY2FzdDxDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZSo+KGxheWVyLT5iYWNraW5nU3RvcmUoKS5nZXQoKSk7CisgICAg
QmFja2luZ1N0b3JlTWFwOjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVz
LmZpbmQobGF5ZXIpOworICAgIGlmIChpdCAhPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5l
bmQoKSkgeworICAgICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSogcGVuZGluZ0JhY2tpbmdT
dG9yZSA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgaWYgKGJhY2tpbmdTdG9yZSAmJiAhcGVu
ZGluZ0JhY2tpbmdTdG9yZSkgeworICAgICAgICAgICAgLy8gVGhlIGxheWVyIGFscmVhZHkgaGFz
IGEgYmFja2luZyBzdG9yZSBidXQgaXRzIHJlbW92YWwgaXMgcGVuZGluZywKKyAgICAgICAgICAg
IC8vIHNpbXBseSBjYW5jZWwgdGhlIHBlbmRpbmcgcmVtb3ZhbCBhbmQgcmV0dXJuLgorICAgICAg
ICAgICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMucmVtb3ZlKGl0KTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBiYWNraW5nU3RvcmUgPSBwZW5kaW5nQmFja2lu
Z1N0b3JlOworICAgIH0KKyAgICBpZiAoYmFja2luZ1N0b3JlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZShDb29yZGlu
YXRlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkpOwotICAgIGJhY2tpbmdTdG9yZS0+c2V0U2l6ZShn
cmFwaGljc0xheWVyLT5zaXplKCkpOwotICAgIEFTU0VSVCghbV9wZWRuaW5nU3luY0JhY2tpbmdT
dG9yZXMuY29udGFpbnMobGF5ZXIpKTsKLSAgICBtX3BlZG5pbmdTeW5jQmFja2luZ1N0b3Jlcy5h
ZGQobGF5ZXIsIGJhY2tpbmdTdG9yZSk7CisgICAgUmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0
b3JlPiBuZXdCYWNraW5nU3RvcmUoQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNyZWF0ZSgpKTsK
KyAgICBuZXdCYWNraW5nU3RvcmUtPnNldFNpemUoZ3JhcGhpY3NMYXllci0+c2l6ZSgpKTsKKyAg
ICBBU1NFUlQoIW1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmNvbnRhaW5zKGxheWVyKSk7Cisg
ICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuYWRkKGxheWVyLCBuZXdCYWNraW5nU3RvcmUp
OwogfQogCiB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpyZW1vdmVCYWNraW5nU3RvcmVJZk5lZWRl
ZChHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQogewogICAgIFRleHR1cmVNYXBwZXJMYXll
ciogbGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJMYXllcihncmFwaGljc0xheWVyKTsKICAgICBBU1NF
UlQobGF5ZXIpOwotICAgIGlmICghbGF5ZXItPmJhY2tpbmdTdG9yZSgpKQorCisgICAgLy8gQ2hl
Y2sgaWYgdGhlIGxheW91dCBhbHJlYWR5IGhhcyBhIGJhY2tpbmcgc3RvcmUgKGNvbW1pdHRlZCBv
ciBwZW5kaW5nKS4KKyAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSogYmFja2luZ1N0b3JlID0g
c3RhdGljX2Nhc3Q8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmUqPihsYXllci0+YmFja2luZ1N0b3Jl
KCkuZ2V0KCkpOworICAgIEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdT
eW5jQmFja2luZ1N0b3Jlcy5maW5kKGxheWVyKTsKKyAgICBpZiAoaXQgIT0gbV9wZW5kaW5nU3lu
Y0JhY2tpbmdTdG9yZXMuZW5kKCkpIHsKKyAgICAgICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUq
IHBlbmRpbmdCYWNraW5nU3RvcmUgPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgICAgIGlmICghYmFj
a2luZ1N0b3JlICYmIHBlbmRpbmdCYWNraW5nU3RvcmUpIHsKKyAgICAgICAgICAgIC8vIFRoZSBs
YXllciBkb2VzIG5vdCBoYXZlIGEgYmFja2luZyBzdG9yZSB5ZXQgYnV0IG9uZSBpcyBwZW5kaW5n
LAorICAgICAgICAgICAgLy8gc2ltcGx5IHJlbW92ZSBpdCBmcm9tIHRoZSBwZW5kaW5nIHF1ZXVl
IGFuZCByZXR1cm4uCisgICAgICAgICAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5yZW1v
dmUoaXQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJhY2tpbmdT
dG9yZSA9IHBlbmRpbmdCYWNraW5nU3RvcmU7CisgICAgfQorICAgIGlmICghYmFja2luZ1N0b3Jl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoIW1fcGVkbmluZ1N5bmNCYWNraW5nU3Rv
cmVzLmNvbnRhaW5zKGxheWVyKSk7Ci0gICAgbV9wZWRuaW5nU3luY0JhY2tpbmdTdG9yZXMuYWRk
KGxheWVyLCAwKTsKKyAgICBBU1NFUlQoIW1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmNvbnRh
aW5zKGxheWVyKSk7CisgICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuYWRkKGxheWVyLCAw
KTsKIH0KIAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6cmVzZXRCYWNraW5nU3RvcmVTaXplVG9M
YXllclNpemUoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKQEAgLTU2NywxMiArNTk1LDEy
IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNvbW1pdFBlbmRpbmdCYWNraW5nU3RvcmVPcGVy
YXRpb25zKCkKICAgICBtX2JhY2tpbmdTdG9yZXNXaXRoUGVuZGluZ0J1ZmZlcnMuY2xlYXIoKTsK
IAogICAgIHsKLSAgICAgICAgQmFja2luZ1N0b3JlTWFwOjppdGVyYXRvciBlbmQgPSBtX3BlZG5p
bmdTeW5jQmFja2luZ1N0b3Jlcy5lbmQoKTsKLSAgICAgICAgQmFja2luZ1N0b3JlTWFwOjppdGVy
YXRvciBpdCA9IG1fcGVkbmluZ1N5bmNCYWNraW5nU3RvcmVzLmJlZ2luKCk7CisgICAgICAgIEJh
Y2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgZW5kID0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMu
ZW5kKCk7CisgICAgICAgIEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdT
eW5jQmFja2luZ1N0b3Jlcy5iZWdpbigpOwogICAgICAgICBmb3IgKDtpdCAhPSBlbmQ7ICsraXQp
CiAgICAgICAgICAgICBpdC0+a2V5LT5zZXRCYWNraW5nU3RvcmUoaXQtPnZhbHVlKTsKIAotICAg
ICAgICBtX3BlZG5pbmdTeW5jQmFja2luZ1N0b3Jlcy5jbGVhcigpOworICAgICAgICBtX3BlbmRp
bmdTeW5jQmFja2luZ1N0b3Jlcy5jbGVhcigpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZVJlbmRlcmVyLmgKaW5kZXggMGMwMzUxZC4uNmYxMDU2YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVSZW5kZXJlci5oCkBAIC0xNjYsNyArMTY2LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8
UmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+IG1fcmVsZWFzZWRJbWFnZUJhY2tpbmdz
OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciosIFJl
ZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gPiBCYWNraW5nU3RvcmVNYXA7Ci0gICAgQmFj
a2luZ1N0b3JlTWFwIG1fcGVkbmluZ1N5bmNCYWNraW5nU3RvcmVzOworICAgIEJhY2tpbmdTdG9y
ZU1hcCBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3JlczsKIAogICAgIEhhc2hTZXQ8UmVmUHRyPENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+IG1fYmFja2luZ1N0b3Jlc1dpdGhQZW5kaW5nQnVmZmVy
czsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176467</attachid>
            <date>2012-11-28 05:47:11 -0800</date>
            <delta_ts>2012-11-28 05:49:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>103498_backingStore_assert.patch</filename>
            <type>text/plain</type>
            <size>6242</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzYWQ2MGU0Li44MzNlNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTItMTEtMjggIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBSZWdyZXNzaW9uKHIxMzU5NjIpOiBBU1NFUlRJT04gRkFJTEVEOiAh
bV9wZWRuaW5nU3luY0JhY2tpbmdTdG9yZXMuY29udGFpbnMobGF5ZXIpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM0OTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBoaXQgdGhlICFtX3BlZG5pbmdT
eW5jQmFja2luZ1N0b3Jlcy5jb250YWlucyhsYXllcikgYXNzZXJ0aW9uCisgICAgICAgIGluIExh
eWVyVHJlZVJlbmRlcmVyIHdoZW4gMiBhc3luY2hyb25vdXMgYmFja2luZyBzdG9yZSBvcGVyYXRp
b25zCisgICAgICAgIGFyZSBwZW5kaW5nLiBUaGUgY3VycmVudCBjb2RlIGNoZWNrcyBpZiB0aGUg
bGF5ZXIgYWxyZWFkeSBoYXMgYQorICAgICAgICBiYWNraW5nIHN0b3JlIGluIGl0cyBndWFyZCBi
dXQgdGhpcyBpcyBpbnN1ZmZpY2llbnQgYXMgaXQgaXMgbm90CisgICAgICAgIGNoZWNraW5nIHRo
ZSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3JlcyBoYXNoIGZvciBwZW5kaW5nIGJhY2tpbmcKKyAg
ICAgICAgc3RvcmUgY2hhbmdlcy4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBpbXByb3Zl
IHRoZSBndWFyZHMgaW4gY3JlYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKQorICAgICAgICBhbmQg
cmVtb3ZlQmFja2luZ1N0b3JlSWZOZWVkZWQoKSB0byBjaGVjayBub3Qgb25seSBpZiB0aGUgbGF5
ZXIgaGFzCisgICAgICAgIGFscmVhZHkgYSBiYWNraW5nIHN0b3JlIGJ1dCBhbHNvIGNoZWNrIG1f
cGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzCisgICAgICAgIGZvciBwZW5kaW5nIGNoYW5nZXMuIFRo
aXMgaXMgc2FmZXIgYW5kIGl0IGFsbG93cyBmb3Igb3B0aW1pemF0aW9ucworICAgICAgICBpbiB0
aGUgY2FzZXMgd2hlcmUgd2UgaGF2ZSBib3RoIGEgcmVtb3ZhbCBhbmQgYSBjcmVhdGlvbiBwZW5k
aW5nLgorICAgICAgICBJbiB0aG9zZSBjYXNlcywgd2UgY2FuIHNpbXBseSBjYW5jZWwgdGhlIHBl
bmRpbmcgb3BlcmF0aW9uIGluc3RlYWQKKyAgICAgICAgb2YgcXVldWVpbmcgYSBuZXcgb25lLgor
CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6Z2V0QmFja2luZ1N0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUJhY2tpbmdT
dG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92
ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVy
ZXI6OmNvbW1pdFBlbmRpbmdCYWNraW5nU3RvcmVPcGVyYXRpb25zKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oOgorCiAyMDEyLTEx
LTI3ICBKaW53b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBb
RUZMXVtXSzJdIER1cGxpY2F0ZWQgV2ViUGFnZUdyb3VwIGluaXRpYWxpemF0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKaW5kZXggY2Q0NTc1Yy4uOTY0OWJkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcApAQCAtNDE4LDggKzQxOCw4IEBAIENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlKiBMYXllclRyZWVSZW5kZXJlcjo6Z2V0QmFja2luZ1N0b3JlKEdy
YXBoaWNzTGF5ZXIqIGdyYXBoCiAgICAgQVNTRVJUKGxheWVyKTsKICAgICBDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZSogYmFja2luZ1N0b3JlID0gc3RhdGljX2Nhc3Q8Q29vcmRpbmF0ZWRCYWNraW5n
U3RvcmUqPihsYXllci0+YmFja2luZ1N0b3JlKCkuZ2V0KCkpOwogCi0gICAgQmFja2luZ1N0b3Jl
TWFwOjppdGVyYXRvciBpdCA9IG1fcGVkbmluZ1N5bmNCYWNraW5nU3RvcmVzLmZpbmQobGF5ZXIp
OwotICAgIGlmIChpdCAhPSBtX3BlZG5pbmdTeW5jQmFja2luZ1N0b3Jlcy5lbmQoKSkKKyAgICBC
YWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMu
ZmluZChsYXllcik7CisgICAgaWYgKGl0ICE9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmVu
ZCgpKQogICAgICAgICBiYWNraW5nU3RvcmUgPSBpdC0+dmFsdWUuZ2V0KCk7CiAgICAgcmV0dXJu
IGJhY2tpbmdTdG9yZTsKIH0KQEAgLTQzOCwyNCArNDM4LDQ3IEBAIHZvaWQgTGF5ZXJUcmVlUmVu
ZGVyZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNz
TGF5ZXIpCiB7CiAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9IHRvVGV4dHVyZU1hcHBl
ckxheWVyKGdyYXBoaWNzTGF5ZXIpOwogICAgIEFTU0VSVChsYXllcik7Ci0gICAgaWYgKGxheWVy
LT5iYWNraW5nU3RvcmUoKSkKKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgbGF5ZXIgZG9lcyBub3Qg
YWxyZWFkeSBoYXZlIGEgYmFja2luZyBzdG9yZSAoY29tbWl0dGVkIG9yIHBlbmRpbmcpLgorICAg
IEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jl
cy5maW5kKGxheWVyKTsKKyAgICBpZiAoaXQgIT0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMu
ZW5kKCkpIHsKKyAgICAgICAgaWYgKCFpdC0+dmFsdWUpIHsKKyAgICAgICAgICAgIC8vIFRoZXJl
IGlzIGEgcGVuZGluZyByZW1vdmFsLCBjYW5jZWwgaXQuCisgICAgICAgICAgICBtX3BlbmRpbmdT
eW5jQmFja2luZ1N0b3Jlcy5yZW1vdmUoaXQpOworICAgICAgICB9CisgICAgICAgIC8vIFRoZXJl
IGlzIGFscmVhZHkgYSBwZW5kaW5nIGFkZGl0aW9uLgogICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmIChsYXllci0+YmFja2luZ1N0b3JlKCkpCisgICAgICAgIHJldHVybjsgLy8gVGhlIGxh
eWVyIGFscmVhZHkgaGFzIGEgYmFja2luZyBzdG9yZSAoYW5kIG5vIHBlbmRpbmcgcmVtb3ZhbCku
CiAKICAgICBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZShDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkpOwogICAgIGJhY2tpbmdTdG9yZS0+c2V0U2l6
ZShncmFwaGljc0xheWVyLT5zaXplKCkpOwotICAgIEFTU0VSVCghbV9wZWRuaW5nU3luY0JhY2tp
bmdTdG9yZXMuY29udGFpbnMobGF5ZXIpKTsKLSAgICBtX3BlZG5pbmdTeW5jQmFja2luZ1N0b3Jl
cy5hZGQobGF5ZXIsIGJhY2tpbmdTdG9yZSk7CisgICAgQVNTRVJUKCFtX3BlbmRpbmdTeW5jQmFj
a2luZ1N0b3Jlcy5jb250YWlucyhsYXllcikpOworICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3Rv
cmVzLmFkZChsYXllciwgYmFja2luZ1N0b3JlKTsKIH0KIAogdm9pZCBMYXllclRyZWVSZW5kZXJl
cjo6cmVtb3ZlQmFja2luZ1N0b3JlSWZOZWVkZWQoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXll
cikKIHsKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5
ZXIoZ3JhcGhpY3NMYXllcik7CiAgICAgQVNTRVJUKGxheWVyKTsKLSAgICBpZiAoIWxheWVyLT5i
YWNraW5nU3RvcmUoKSkKKworICAgIC8vIENoZWNrIGlmIHRoZSBsYXlvdXQgYWxyZWFkeSBoYXMg
YSBiYWNraW5nIHN0b3JlIChjb21taXR0ZWQgb3IgcGVuZGluZykuCisgICAgQmFja2luZ1N0b3Jl
TWFwOjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmZpbmQobGF5ZXIp
OworICAgIGlmIChpdCAhPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5lbmQoKSkgeworICAg
ICAgICBpZiAoaXQtPnZhbHVlKSB7CisgICAgICAgICAgICAvLyBUaGVyZSBpcyBhIHBlbmRpbmcg
YWRkaXRpb24sIGNhbmNlbCBpdC4KKyAgICAgICAgICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3Rv
cmVzLnJlbW92ZShpdCk7CisgICAgICAgIH0KKyAgICAgICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBh
IHBlbmRpbmcgcmVtb3ZhbC4KICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbGF5
ZXItPmJhY2tpbmdTdG9yZSgpKQorICAgICAgICByZXR1cm47IC8vIFRoZSBsYXllciBkb2VzIG5v
dCBiYWNraW5nIHN0b3JlIChhbmQgbm8gcGVuZGluZyBhZGRpdGlvbikuCiAKLSAgICBBU1NFUlQo
IW1fcGVkbmluZ1N5bmNCYWNraW5nU3RvcmVzLmNvbnRhaW5zKGxheWVyKSk7Ci0gICAgbV9wZWRu
aW5nU3luY0JhY2tpbmdTdG9yZXMuYWRkKGxheWVyLCAwKTsKKyAgICBBU1NFUlQoIW1fcGVuZGlu
Z1N5bmNCYWNraW5nU3RvcmVzLmNvbnRhaW5zKGxheWVyKSk7CisgICAgbV9wZW5kaW5nU3luY0Jh
Y2tpbmdTdG9yZXMuYWRkKGxheWVyLCAwKTsKIH0KIAogdm9pZCBMYXllclRyZWVSZW5kZXJlcjo6
cmVzZXRCYWNraW5nU3RvcmVTaXplVG9MYXllclNpemUoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NM
YXllcikKQEAgLTU2NywxMiArNTkwLDEyIEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNvbW1p
dFBlbmRpbmdCYWNraW5nU3RvcmVPcGVyYXRpb25zKCkKICAgICBtX2JhY2tpbmdTdG9yZXNXaXRo
UGVuZGluZ0J1ZmZlcnMuY2xlYXIoKTsKIAogICAgIHsKLSAgICAgICAgQmFja2luZ1N0b3JlTWFw
OjppdGVyYXRvciBlbmQgPSBtX3BlZG5pbmdTeW5jQmFja2luZ1N0b3Jlcy5lbmQoKTsKLSAgICAg
ICAgQmFja2luZ1N0b3JlTWFwOjppdGVyYXRvciBpdCA9IG1fcGVkbmluZ1N5bmNCYWNraW5nU3Rv
cmVzLmJlZ2luKCk7CisgICAgICAgIEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgZW5kID0gbV9w
ZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuZW5kKCk7CisgICAgICAgIEJhY2tpbmdTdG9yZU1hcDo6
aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5iZWdpbigpOwogICAgICAg
ICBmb3IgKDtpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICAgICBpdC0+a2V5LT5zZXRCYWNraW5n
U3RvcmUoaXQtPnZhbHVlKTsKIAotICAgICAgICBtX3BlZG5pbmdTeW5jQmFja2luZ1N0b3Jlcy5j
bGVhcigpOworICAgICAgICBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5jbGVhcigpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKaW5kZXggMGMwMzUxZC4uNmYx
MDU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCkBAIC0xNjYsNyArMTY2LDcg
QEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+
IG1fcmVsZWFzZWRJbWFnZUJhY2tpbmdzOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJMYXllciosIFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gPiBC
YWNraW5nU3RvcmVNYXA7Ci0gICAgQmFja2luZ1N0b3JlTWFwIG1fcGVkbmluZ1N5bmNCYWNraW5n
U3RvcmVzOworICAgIEJhY2tpbmdTdG9yZU1hcCBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3JlczsK
IAogICAgIEhhc2hTZXQ8UmVmUHRyPENvb3JkaW5hdGVkQmFja2luZ1N0b3JlPiA+IG1fYmFja2lu
Z1N0b3Jlc1dpdGhQZW5kaW5nQnVmZmVyczsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176469</attachid>
            <date>2012-11-28 05:49:56 -0800</date>
            <delta_ts>2012-11-28 06:52:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>103498_backingStore_assert.patch</filename>
            <type>text/plain</type>
            <size>6240</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzYWQ2MGU0Li44MzNlNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTItMTEtMjggIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBSZWdyZXNzaW9uKHIxMzU5NjIpOiBBU1NFUlRJT04gRkFJTEVEOiAh
bV9wZWRuaW5nU3luY0JhY2tpbmdTdG9yZXMuY29udGFpbnMobGF5ZXIpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM0OTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBoaXQgdGhlICFtX3BlZG5pbmdT
eW5jQmFja2luZ1N0b3Jlcy5jb250YWlucyhsYXllcikgYXNzZXJ0aW9uCisgICAgICAgIGluIExh
eWVyVHJlZVJlbmRlcmVyIHdoZW4gMiBhc3luY2hyb25vdXMgYmFja2luZyBzdG9yZSBvcGVyYXRp
b25zCisgICAgICAgIGFyZSBwZW5kaW5nLiBUaGUgY3VycmVudCBjb2RlIGNoZWNrcyBpZiB0aGUg
bGF5ZXIgYWxyZWFkeSBoYXMgYQorICAgICAgICBiYWNraW5nIHN0b3JlIGluIGl0cyBndWFyZCBi
dXQgdGhpcyBpcyBpbnN1ZmZpY2llbnQgYXMgaXQgaXMgbm90CisgICAgICAgIGNoZWNraW5nIHRo
ZSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3JlcyBoYXNoIGZvciBwZW5kaW5nIGJhY2tpbmcKKyAg
ICAgICAgc3RvcmUgY2hhbmdlcy4KKworICAgICAgICBJbiB0aGlzIHBhdGNoLCB3ZSBpbXByb3Zl
IHRoZSBndWFyZHMgaW4gY3JlYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoKQorICAgICAgICBhbmQg
cmVtb3ZlQmFja2luZ1N0b3JlSWZOZWVkZWQoKSB0byBjaGVjayBub3Qgb25seSBpZiB0aGUgbGF5
ZXIgaGFzCisgICAgICAgIGFscmVhZHkgYSBiYWNraW5nIHN0b3JlIGJ1dCBhbHNvIGNoZWNrIG1f
cGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzCisgICAgICAgIGZvciBwZW5kaW5nIGNoYW5nZXMuIFRo
aXMgaXMgc2FmZXIgYW5kIGl0IGFsbG93cyBmb3Igb3B0aW1pemF0aW9ucworICAgICAgICBpbiB0
aGUgY2FzZXMgd2hlcmUgd2UgaGF2ZSBib3RoIGEgcmVtb3ZhbCBhbmQgYSBjcmVhdGlvbiBwZW5k
aW5nLgorICAgICAgICBJbiB0aG9zZSBjYXNlcywgd2UgY2FuIHNpbXBseSBjYW5jZWwgdGhlIHBl
bmRpbmcgb3BlcmF0aW9uIGluc3RlYWQKKyAgICAgICAgb2YgcXVldWVpbmcgYSBuZXcgb25lLgor
CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVy
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6Z2V0QmFja2luZ1N0
b3JlKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUJhY2tpbmdT
dG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92
ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVy
ZXI6OmNvbW1pdFBlbmRpbmdCYWNraW5nU3RvcmVPcGVyYXRpb25zKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oOgorCiAyMDEyLTEx
LTI3ICBKaW53b28gU29uZyAgPGppbndvbzcuc29uZ0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBb
RUZMXVtXSzJdIER1cGxpY2F0ZWQgV2ViUGFnZUdyb3VwIGluaXRpYWxpemF0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKaW5kZXggY2Q0NTc1Yy4uMjY5MzUyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcApAQCAtNDE4LDggKzQxOCw4IEBAIENvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlKiBMYXllclRyZWVSZW5kZXJlcjo6Z2V0QmFja2luZ1N0b3JlKEdy
YXBoaWNzTGF5ZXIqIGdyYXBoCiAgICAgQVNTRVJUKGxheWVyKTsKICAgICBDb29yZGluYXRlZEJh
Y2tpbmdTdG9yZSogYmFja2luZ1N0b3JlID0gc3RhdGljX2Nhc3Q8Q29vcmRpbmF0ZWRCYWNraW5n
U3RvcmUqPihsYXllci0+YmFja2luZ1N0b3JlKCkuZ2V0KCkpOwogCi0gICAgQmFja2luZ1N0b3Jl
TWFwOjppdGVyYXRvciBpdCA9IG1fcGVkbmluZ1N5bmNCYWNraW5nU3RvcmVzLmZpbmQobGF5ZXIp
OwotICAgIGlmIChpdCAhPSBtX3BlZG5pbmdTeW5jQmFja2luZ1N0b3Jlcy5lbmQoKSkKKyAgICBC
YWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMu
ZmluZChsYXllcik7CisgICAgaWYgKGl0ICE9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmVu
ZCgpKQogICAgICAgICBiYWNraW5nU3RvcmUgPSBpdC0+dmFsdWUuZ2V0KCk7CiAgICAgcmV0dXJu
IGJhY2tpbmdTdG9yZTsKIH0KQEAgLTQzOCwyNCArNDM4LDQ3IEBAIHZvaWQgTGF5ZXJUcmVlUmVu
ZGVyZXI6OmNyZWF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNz
TGF5ZXIpCiB7CiAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciA9IHRvVGV4dHVyZU1hcHBl
ckxheWVyKGdyYXBoaWNzTGF5ZXIpOwogICAgIEFTU0VSVChsYXllcik7Ci0gICAgaWYgKGxheWVy
LT5iYWNraW5nU3RvcmUoKSkKKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgbGF5ZXIgZG9lcyBub3Qg
YWxyZWFkeSBoYXZlIGEgYmFja2luZyBzdG9yZSAoY29tbWl0dGVkIG9yIHBlbmRpbmcpLgorICAg
IEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jl
cy5maW5kKGxheWVyKTsKKyAgICBpZiAoaXQgIT0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMu
ZW5kKCkpIHsKKyAgICAgICAgaWYgKCFpdC0+dmFsdWUpIHsKKyAgICAgICAgICAgIC8vIFRoZXJl
IGlzIGEgcGVuZGluZyByZW1vdmFsLCBjYW5jZWwgaXQuCisgICAgICAgICAgICBtX3BlbmRpbmdT
eW5jQmFja2luZ1N0b3Jlcy5yZW1vdmUoaXQpOworICAgICAgICB9CisgICAgICAgIC8vIFRoZXJl
IGlzIGFscmVhZHkgYSBwZW5kaW5nIGFkZGl0aW9uLgogICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmIChsYXllci0+YmFja2luZ1N0b3JlKCkpCisgICAgICAgIHJldHVybjsgLy8gVGhlIGxh
eWVyIGFscmVhZHkgaGFzIGEgYmFja2luZyBzdG9yZSAoYW5kIG5vIHBlbmRpbmcgcmVtb3ZhbCku
CiAKICAgICBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZShDb29y
ZGluYXRlZEJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkpOwogICAgIGJhY2tpbmdTdG9yZS0+c2V0U2l6
ZShncmFwaGljc0xheWVyLT5zaXplKCkpOwotICAgIEFTU0VSVCghbV9wZWRuaW5nU3luY0JhY2tp
bmdTdG9yZXMuY29udGFpbnMobGF5ZXIpKTsKLSAgICBtX3BlZG5pbmdTeW5jQmFja2luZ1N0b3Jl
cy5hZGQobGF5ZXIsIGJhY2tpbmdTdG9yZSk7CisgICAgQVNTRVJUKCFtX3BlbmRpbmdTeW5jQmFj
a2luZ1N0b3Jlcy5jb250YWlucyhsYXllcikpOworICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3Rv
cmVzLmFkZChsYXllciwgYmFja2luZ1N0b3JlKTsKIH0KIAogdm9pZCBMYXllclRyZWVSZW5kZXJl
cjo6cmVtb3ZlQmFja2luZ1N0b3JlSWZOZWVkZWQoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXll
cikKIHsKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyID0gdG9UZXh0dXJlTWFwcGVyTGF5
ZXIoZ3JhcGhpY3NMYXllcik7CiAgICAgQVNTRVJUKGxheWVyKTsKLSAgICBpZiAoIWxheWVyLT5i
YWNraW5nU3RvcmUoKSkKKworICAgIC8vIENoZWNrIGlmIHRoZSBsYXlvdXQgYWxyZWFkeSBoYXMg
YSBiYWNraW5nIHN0b3JlIChjb21taXR0ZWQgb3IgcGVuZGluZykuCisgICAgQmFja2luZ1N0b3Jl
TWFwOjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ1N5bmNCYWNraW5nU3RvcmVzLmZpbmQobGF5ZXIp
OworICAgIGlmIChpdCAhPSBtX3BlbmRpbmdTeW5jQmFja2luZ1N0b3Jlcy5lbmQoKSkgeworICAg
ICAgICBpZiAoaXQtPnZhbHVlKSB7CisgICAgICAgICAgICAvLyBUaGVyZSBpcyBhIHBlbmRpbmcg
YWRkaXRpb24sIGNhbmNlbCBpdC4KKyAgICAgICAgICAgIG1fcGVuZGluZ1N5bmNCYWNraW5nU3Rv
cmVzLnJlbW92ZShpdCk7CisgICAgICAgIH0KKyAgICAgICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBh
IHBlbmRpbmcgcmVtb3ZhbC4KICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbGF5
ZXItPmJhY2tpbmdTdG9yZSgpKQorICAgICAgICByZXR1cm47IC8vIFRoZSBsYXllciBoYXMgbm8g
YmFja2luZyBzdG9yZSAoYW5kIG5vIHBlbmRpbmcgYWRkaXRpb24pLgogCi0gICAgQVNTRVJUKCFt
X3BlZG5pbmdTeW5jQmFja2luZ1N0b3Jlcy5jb250YWlucyhsYXllcikpOwotICAgIG1fcGVkbmlu
Z1N5bmNCYWNraW5nU3RvcmVzLmFkZChsYXllciwgMCk7CisgICAgQVNTRVJUKCFtX3BlbmRpbmdT
eW5jQmFja2luZ1N0b3Jlcy5jb250YWlucyhsYXllcikpOworICAgIG1fcGVuZGluZ1N5bmNCYWNr
aW5nU3RvcmVzLmFkZChsYXllciwgMCk7CiB9CiAKIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJl
c2V0QmFja2luZ1N0b3JlU2l6ZVRvTGF5ZXJTaXplKEdyYXBoaWNzTGF5ZXIqIGdyYXBoaWNzTGF5
ZXIpCkBAIC01NjcsMTIgKzU5MCwxMiBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpjb21taXRQ
ZW5kaW5nQmFja2luZ1N0b3JlT3BlcmF0aW9ucygpCiAgICAgbV9iYWNraW5nU3RvcmVzV2l0aFBl
bmRpbmdCdWZmZXJzLmNsZWFyKCk7CiAKICAgICB7Ci0gICAgICAgIEJhY2tpbmdTdG9yZU1hcDo6
aXRlcmF0b3IgZW5kID0gbV9wZWRuaW5nU3luY0JhY2tpbmdTdG9yZXMuZW5kKCk7Ci0gICAgICAg
IEJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3BlZG5pbmdTeW5jQmFja2luZ1N0b3Jl
cy5iZWdpbigpOworICAgICAgICBCYWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcGVu
ZGluZ1N5bmNCYWNraW5nU3RvcmVzLmVuZCgpOworICAgICAgICBCYWNraW5nU3RvcmVNYXA6Oml0
ZXJhdG9yIGl0ID0gbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuYmVnaW4oKTsKICAgICAgICAg
Zm9yICg7aXQgIT0gZW5kOyArK2l0KQogICAgICAgICAgICAgaXQtPmtleS0+c2V0QmFja2luZ1N0
b3JlKGl0LT52YWx1ZSk7CiAKLSAgICAgICAgbV9wZWRuaW5nU3luY0JhY2tpbmdTdG9yZXMuY2xl
YXIoKTsKKyAgICAgICAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXMuY2xlYXIoKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCmluZGV4IDBjMDM1MWQuLjZmMTA1
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZVJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaApAQCAtMTY2LDcgKzE2Niw3IEBA
IHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gPiBt
X3JlbGVhc2VkSW1hZ2VCYWNraW5nczsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyTGF5ZXIqLCBSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+ID4gQmFj
a2luZ1N0b3JlTWFwOwotICAgIEJhY2tpbmdTdG9yZU1hcCBtX3BlZG5pbmdTeW5jQmFja2luZ1N0
b3JlczsKKyAgICBCYWNraW5nU3RvcmVNYXAgbV9wZW5kaW5nU3luY0JhY2tpbmdTdG9yZXM7CiAK
ICAgICBIYXNoU2V0PFJlZlB0cjxDb29yZGluYXRlZEJhY2tpbmdTdG9yZT4gPiBtX2JhY2tpbmdT
dG9yZXNXaXRoUGVuZGluZ0J1ZmZlcnM7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>