<?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>90849</bug_id>
          
          <creation_ts>2012-07-09 23:20:29 -0700</creation_ts>
          <short_desc>Threadsafety issues in WebScriptObject</short_desc>
          <delta_ts>2012-07-17 09:02:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>91505</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>aestes</cc>
    
    <cc>ddkilzer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>665502</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-07-09 23:20:29 -0700</bug_when>
    <thetext>WebScriptObject maintains a NSMap of wrapper objects.  A race condition exists between a wrapper being retrieved from the map, and being released - if the final release on an object is called between a call to getJSWrapper and the subsequent retain, we may end up with a stale object reference.

We can make this safe by hoisting the removal from the map from delloc up into release (if the retainCount is 1), and locking release against retrieval from the map.  Since release may be called from another thread, and NSMap is not threadsafe, we&apos;d better lock around all access to the map (this fix already necessitates get &amp; remove to be locked, so this just adds &apos;add&apos;, too).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665504</commentid>
    <comment_count>1</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-07-09 23:30:22 -0700</bug_when>
    <thetext>rdar:9906341</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665505</commentid>
    <comment_count>2</comment_count>
      <attachid>151403</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-07-09 23:32:03 -0700</bug_when>
    <thetext>Created attachment 151403
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665521</commentid>
    <comment_count>3</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-07-10 00:09:07 -0700</bug_when>
    <thetext>Fixed in r122198</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667522</commentid>
    <comment_count>4</comment_count>
      <attachid>151885</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-07-12 01:44:17 -0700</bug_when>
    <thetext>Created attachment 151885
New improved fix, less risk of deadlock due to lock inversion!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667860</commentid>
    <comment_count>5</comment_count>
      <attachid>151885</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-12 09:28:00 -0700</bug_when>
    <thetext>Comment on attachment 151885
New improved fix, less risk of deadlock due to lock inversion!

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

&gt; Source/WebCore/bindings/objc/WebScriptObject.mm:81
&gt; +        JSWrapperCacheSpinLock-&gt;Init();

This feels like it should be inside of a pthread_once thingy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667960</commentid>
    <comment_count>6</comment_count>
      <attachid>151994</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-07-12 10:40:35 -0700</bug_when>
    <thetext>Created attachment 151994
+ ASSERTs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667973</commentid>
    <comment_count>7</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-07-12 10:49:33 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 151885 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=151885&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/objc/WebScriptObject.mm:81
&gt; &gt; +        JSWrapperCacheSpinLock-&gt;Init();
&gt; 
&gt; This feels like it should be inside of a pthread_once thingy?

This code is threadsafe because it will only be called from the main thread – that wasn&apos;t obvious from my previous patch, so I added ASSERTs to indicate this.  The threadsafety issue with the JSWrapperCache map comes from the fact that &apos;release&apos; may be called from a different thread, so we need to make release threadsafe wrt get/add.

I&apos;ve been a little conservative here.  Creating the first wrapper will bring the JSWrapperCache into existence, and no wrappers can be released until the first wrapper has been created, so the wrapper cache must exist before remove can be called – so I think the &apos;if (!JSWrapperCache)&apos; in the remove methods could probably just be an ASSERT too, but I&apos;ve left this as is to be safe.

With the extra ASSERTS I think we don&apos;t need the pthread_once, hope that looks good to you.

G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668038</commentid>
    <comment_count>8</comment_count>
      <attachid>152012</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-07-12 11:40:53 -0700</bug_when>
    <thetext>Created attachment 152012
Simplify spinlock initialization</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668045</commentid>
    <comment_count>9</comment_count>
      <attachid>152012</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-12 11:49:24 -0700</bug_when>
    <thetext>Comment on attachment 152012
Simplify spinlock initialization

Attachment 152012 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13199799</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668125</commentid>
    <comment_count>10</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-07-12 13:04:10 -0700</bug_when>
    <thetext>Fixed in r122494</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671301</commentid>
    <comment_count>11</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-07-17 08:57:54 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Fixed in r122494

Looks like this caused platform/mac/plugins/root-object-premature-delete-crash.html to crash on the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671304</commentid>
    <comment_count>12</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2012-07-17 09:02:13 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Fixed in r122494
&gt; 
&gt; Looks like this caused platform/mac/plugins/root-object-premature-delete-crash.html to crash on the bots.

https://bugs.webkit.org/show_bug.cgi?id=91505 tracks this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151403</attachid>
            <date>2012-07-09 23:32:03 -0700</date>
            <delta_ts>2012-07-09 23:40:52 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>90849.patch</filename>
            <type>text/plain</type>
            <size>3944</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjE5NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEyLTA3LTA5ICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBUaHJlYWRzYWZl
dHkgaXNzdWVzIGluIFdlYlNjcmlwdE9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA4NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWJTY3JpcHRPYmplY3QgbWFpbnRhaW5zIGEgTlNNYXAgb2Yg
d3JhcHBlciBvYmplY3RzLiBBIHJhY2UgY29uZGl0aW9uIGV4aXN0cworICAgICAgICBiZXR3ZWVu
IGEgd3JhcHBlciBiZWluZyByZXRyaWV2ZWQgZnJvbSB0aGUgbWFwLCBhbmQgYmVpbmcgcmVsZWFz
ZWQgLSBpZiB0aGUKKyAgICAgICAgZmluYWwgcmVsZWFzZSBvbiBhbiBvYmplY3QgaXMgY2FsbGVk
IGJldHdlZW4gYSBjYWxsIHRvIGdldEpTV3JhcHBlciBhbmQgdGhlCisgICAgICAgIHN1YnNlcXVl
bnQgcmV0YWluLCB3ZSBtYXkgZW5kIHVwIHdpdGggYSBzdGFsZSBvYmplY3QgcmVmZXJlbmNlLgor
CisgICAgICAgIFdlIGNhbiBtYWtlIHRoaXMgc2FmZSBieSBob2lzdGluZyB0aGUgcmVtb3ZhbCBm
cm9tIHRoZSBtYXAgZnJvbSBkZWxsb2MgdXAgaW50bworICAgICAgICByZWxlYXNlIChpZiB0aGUg
cmV0YWluQ291bnQgaXMgMSksIGFuZCBsb2NraW5nIHJlbGVhc2UgYWdhaW5zdCByZXRyaWV2YWwg
ZnJvbQorICAgICAgICB0aGUgbWFwLiBTaW5jZSByZWxlYXNlIG1heSBiZSBjYWxsZWQgZnJvbSBh
bm90aGVyIHRocmVhZCwgYW5kIE5TTWFwIGlzIG5vdAorICAgICAgICB0aHJlYWRzYWZlLCB3ZSdk
IGJldHRlciBsb2NrIGFyb3VuZCBhbGwgYWNjZXNzIHRvIHRoZSBtYXAgKHRoaXMgZml4IGFscmVh
ZHkKKyAgICAgICAgbmVjZXNzaXRhdGVzIGdldCAmIHJlbW92ZSB0byBiZSBsb2NrZWQsIHNvIHRo
aXMganVzdCBhZGRzICdhZGQnLCB0b28pLgorCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9XZWJT
Y3JpcHRPYmplY3QubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVKU1dyYXBwZXIpOgorICAg
ICAgICAgICAgLSBsb2NrIGFyb3VuZCBnZXRKU1dyYXBwZXIsIHJldGFpbi4KKyAgICAgICAgKC1b
V2ViU2NyaXB0T2JqZWN0IF9zZXRJbXA6b3JpZ2luUm9vdE9iamVjdDpyb290T2JqZWN0Ol0pOgor
ICAgICAgICAgICAgLSBsb2NrIGFyb3VuZCBhZGRKU1dyYXBwZXIuCisgICAgICAgICgtW1dlYlNj
cmlwdE9iamVjdCByZWxlYXNlXSk6CisgICAgICAgICAgICAtIEFkZGVkOyByZW1vdmVKU1dyYXBw
ZXIgZm9yIGxhc3QgcmVsZWFzZSwgbG9jayAmIHN5bmNocm9uaXplZCB2cy4gZ2V0SlNXcmFwcGVy
LgorICAgICAgICAoLVtXZWJTY3JpcHRPYmplY3QgZGVhbGxvY10pOgorICAgICAgICAgICAgLSBy
ZW1vdmVKU1dyYXBwZXIgY2FsbCBob2lzdGVkIGludG8gcmVsZWFzZS4KKwogMjAxMi0wNy0wOSAg
SGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBn
YXJkZW5pbmcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9i
amVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNj
cmlwdE9iamVjdC5tbQkocmV2aXNpb24gMTIyMTk2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDkg
QEAgdm9pZCByZW1vdmVKU1dyYXBwZXIoSlNPYmplY3QqIGltcGwpCiAKIGlkIGNyZWF0ZUpTV3Jh
cHBlcihKU0M6OkpTT2JqZWN0KiBvYmplY3QsIFBhc3NSZWZQdHI8SlNDOjpCaW5kaW5nczo6Um9v
dE9iamVjdD4gb3JpZ2luLCBQYXNzUmVmUHRyPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+IHJv
b3QpCiB7CisgICAgLy8gTlNNYXAgaXMgbm90IHRocmVhZCBzYWZlLCBob2xkIHRoZSBKU0MgQVBJ
IGxvY2s7IGFsc28gc3luY2hyb25pemUgdGhpcyB2cy4gcmVsZWFzZS4KKyAgICBKU0M6OkpTTG9j
a0hvbGRlciBob2xkZXIoSlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKSk7CisK
ICAgICBpZiAoaWQgd3JhcHBlciA9IGdldEpTV3JhcHBlcihvYmplY3QpKQogICAgICAgICByZXR1
cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogICAgIHJldHVybiBbW1tXZWJTY3Jp
cHRPYmplY3QgYWxsb2NdIF9pbml0V2l0aEpTT2JqZWN0Om9iamVjdCBvcmlnaW5Sb290T2JqZWN0
Om9yaWdpbiByb290T2JqZWN0OnJvb3RdIGF1dG9yZWxlYXNlXTsKQEAgLTE0NSw2ICsxNDgsOSBA
QCAtICh2b2lkKV9zZXRJbXA6KEpTT2JqZWN0KilpbXAgb3JpZ2luUm9vCiAgICAgX3ByaXZhdGUt
PnJvb3RPYmplY3QgPSByb290T2JqZWN0LmxlYWtSZWYoKTsKICAgICBfcHJpdmF0ZS0+b3JpZ2lu
Um9vdE9iamVjdCA9IG9yaWdpblJvb3RPYmplY3QubGVha1JlZigpOwogCisgICAgLy8gTlNNYXAg
aXMgbm90IHRocmVhZCBzYWZlLCBob2xkIHRoZSBKU0MgQVBJIGxvY2suCisgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgaG9sZGVyKEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOwor
CiAgICAgV2ViQ29yZTo6YWRkSlNXcmFwcGVyKHNlbGYsIGltcCk7CiAKICAgICBpZiAoX3ByaXZh
dGUtPnJvb3RPYmplY3QpCkBAIC0yMjMsMTQgKzIyOSwyNiBAQCAtIChCT09MKV9pc1NhZmVTY3Jp
cHQKICAgICByZXR1cm4ganNDYXN0PEpTRE9NV2luZG93QmFzZSo+KHJvb3QtPmdsb2JhbE9iamVj
dCgpKS0+YWxsb3dzQWNjZXNzRnJvbShfcHJpdmF0ZS0+b3JpZ2luUm9vdE9iamVjdC0+Z2xvYmFs
T2JqZWN0KCkpOwogfQogCistIChvbmV3YXkgdm9pZClyZWxlYXNlCit7CisgICAgeworICAgICAg
ICAvLyBOU01hcCBpcyBub3QgdGhyZWFkIHNhZmUsIGhvbGQgdGhlIEpTQyBBUEkgbG9jazsgYWxz
byBzeW5jaHJvbml6ZSB0aGlzIHZzLiBnZXRKU1dyYXBwZXIuCisgICAgICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGhvbGRlcihKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKKwor
ICAgICAgICAvLyBJZiB3ZSdyZSByZWxlYXNpbmcgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMg
b2JqZWN0LCByZW1vdmUgaWYgZnJvbSB0aGUgbWFwLAorICAgICAgICAvLyB0aGlzIHdpbGwgcHJl
dmVudCB0aGlzIG9iamVjdCBmcm9tIGJlaW5nIHJldHVybmVkIGJ5IGdldEpTV3JhcHBlci4KKyAg
ICAgICAgaWYgKF9wcml2YXRlLT5pbXAgJiYgW3NlbGYgcmV0YWluQ291bnRdID09IDEpCisgICAg
ICAgICAgICBXZWJDb3JlOjpyZW1vdmVKU1dyYXBwZXIoX3ByaXZhdGUtPmltcCk7CisgICAgfQor
CisgICAgW3N1cGVyIHJlbGVhc2VdOworfQorCiAtICh2b2lkKWRlYWxsb2MKIHsKICAgICBpZiAo
V2ViQ29yZU9iakNTY2hlZHVsZURlYWxsb2NhdGVPbk1haW5UaHJlYWQoW1dlYlNjcmlwdE9iamVj
dCBjbGFzc10sIHNlbGYpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoX3ByaXZhdGUtPmlt
cCkKLSAgICAgICAgV2ViQ29yZTo6cmVtb3ZlSlNXcmFwcGVyKF9wcml2YXRlLT5pbXApOwotCiAg
ICAgaWYgKF9wcml2YXRlLT5yb290T2JqZWN0ICYmIF9wcml2YXRlLT5yb290T2JqZWN0LT5pc1Zh
bGlkKCkpCiAgICAgICAgIF9wcml2YXRlLT5yb290T2JqZWN0LT5nY1VucHJvdGVjdChfcHJpdmF0
ZS0+aW1wKTsKIAo=
</data>
<flag name="review"
          id="159849"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151885</attachid>
            <date>2012-07-12 01:44:17 -0700</date>
            <delta_ts>2012-07-12 10:40:35 -0700</delta_ts>
            <desc>New improved fix, less risk of deadlock due to lock inversion!</desc>
            <filename>90849.2.patch</filename>
            <type>text/plain</type>
            <size>5357</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjQyNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA3LTEyICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBUaHJlYWRzYWZl
dHkgaXNzdWVzIGluIFdlYlNjcmlwdE9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA4NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIGZpeCBmb3IgdGhpcyBidWcuIFRha2luZyB0aGUg
SlNDIEFQSSBsb2NrIGZyb20gV2ViU2NyaXB0T2JqZWN0OjpyZWxlYXNlCisgICAgICAgIG1heSBu
b3QgYmUgc2FmZTsgYmV0dGVyIHRvIGp1c3QgZ3VhcmQgdGhlIEpTV3JhcHBlckNhY2hlIHdpdGgg
aXRzIG93biBzcGlubG9jay4KKworICAgICAgICAqIGJpbmRpbmdzL29iamMvV2ViU2NyaXB0T2Jq
ZWN0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SlNXcmFwcGVyKToKKyAgICAgICAgICAgIC0g
QWRkZWQgc3BpbmxvY2s7IGFsc28gcmV0YWluL2F1dG9yZWxlYXNlIHRoZSByZXR1cm5lZCB3cmFw
cGVyIC0gaXQgaXMgdW5zYWZlCisgICAgICAgICAgICAgIHRvIHdhaXQgZm9yIHRoZSBjYWxsZXIg
dG8gZG8gc28sIGR1ZSB0byBhIHJhY2UgY29uZGl0aW9uIHZzIHJlbGVhc2UgcmVtb3ZpbmcKKyAg
ICAgICAgICAgICAgdGhlIHdyYXBwZXIgZnJvbSB0aGUgbWFwLgorICAgICAgICAoV2ViQ29yZTo6
YWRkSlNXcmFwcGVyKToKKyAgICAgICAgICAgIC0gSW5pdGlhbGl6ZSAoJiB0YWtlKSB0aGUgc3Bp
bmxvY2sgZ3VhcmRpbmcgdGhlIGNhY2hlLgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlSlNXcmFw
cGVyKToKKyAgICAgICAgICAgIC0gVGFrZSB0aGUgc3BpbmxvY2sgZ3VhcmRpbmcgdGhlIGNhY2hl
LgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlSlNXcmFwcGVySWZSZXRhaW5Db3VudE9uZSk6Cisg
ICAgICAgICAgICAtIFRha2UgdGhlIHNwaW5sb2NrIGd1YXJkaW5nIHRoZSBjYWNoZSwgcmVtb3Zl
IHRoZSB3cmFwcGVyIGlmIHJldGFpbkNvdW50IGlzIG9uZS4KKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUpTV3JhcHBlcik6CisgICAgICAgICAgICAtIFJlbW92ZSB0aGUgQVBJIGxvY2s7IHRoaXMg
bWV0aG9kIG5vIGxvbmdlciBuZWVkcyB0byByZXRhaW4vYXV0b3JlbGVhc2UgKHRoaXMgaXMKKyAg
ICAgICAgICAgICAgZG9uZSBieSBnZXRKU1dyYXBwZXIpLgorICAgICAgICAoLVtXZWJTY3JpcHRP
YmplY3QgX3NldEltcDpvcmlnaW5Sb290T2JqZWN0OnJvb3RPYmplY3Q6XSk6CisgICAgICAgICAg
ICAtIFJlbW92ZSB0aGUgQVBJIGxvY2suCisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCByZWxl
YXNlXSk6CisgICAgICAgICAgICAtIFJlbW92ZSB0aGUgQVBJIGxvY2ssIHJldGFpbkNvdW50IGNo
ZWNrIG1vdmVkIGludG8gcmVtb3ZlSlNXcmFwcGVySWZSZXRhaW5Db3VudE9uZS4KKwogMjAxMi0w
Ny0xMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS10gQWRkIHdlYmtpdF9jb29raWVfbWFuYWdlcl9zZXRfcGVyc2lzdGVudF9zdG9yYWdl
KCkgdG8gV2ViS2l0MiBHVEsrIEFQSQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9XZWJTY3JpcHRPYmplY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0JKHJldmlzaW9uIDEyMjQyNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC01MCw2ICs1MCw3IEBACiAjaW1wb3J0IDxydW50aW1lL0pTTG9jay5oPgogI2ltcG9ydCA8cnVu
dGltZS9Db21wbGV0aW9uLmg+CiAjaW1wb3J0IDxydW50aW1lL0NvbXBsZXRpb24uaD4KKyNpbXBv
cnQgPHd0Zi9UQ1NwaW5Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+CiAKIApAQCAt
NjAsMTggKzYxLDI3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGF0aWMgTlNNYXBUYWJsZSogSlNXcmFwcGVyQ2FjaGU7CitzdGF0aWMgU3Bpbkxv
Y2sqIEpTV3JhcHBlckNhY2hlU3BpbkxvY2sgPSAwOwogCiBOU09iamVjdCogZ2V0SlNXcmFwcGVy
KEpTT2JqZWN0KiBpbXBsKQogewogICAgIGlmICghSlNXcmFwcGVyQ2FjaGUpCiAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PE5TT2JqZWN0Kj4oTlNNYXBHZXQoSlNX
cmFwcGVyQ2FjaGUsIGltcGwpKTsKKworICAgIFNwaW5Mb2NrSG9sZGVyIGhvbGRlcihKU1dyYXBw
ZXJDYWNoZVNwaW5Mb2NrKTsKKyAgICBOU09iamVjdCogd3JhcHBlciA9IHN0YXRpY19jYXN0PE5T
T2JqZWN0Kj4oTlNNYXBHZXQoSlNXcmFwcGVyQ2FjaGUsIGltcGwpKTsKKyAgICByZXR1cm4gd3Jh
cHBlciA/IFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXSA6IG5pbDsKIH0KIAogdm9pZCBh
ZGRKU1dyYXBwZXIoTlNPYmplY3QqIHdyYXBwZXIsIEpTT2JqZWN0KiBpbXBsKQogewotICAgIGlm
ICghSlNXcmFwcGVyQ2FjaGUpCisgICAgaWYgKCFKU1dyYXBwZXJDYWNoZSkgewogICAgICAgICBK
U1dyYXBwZXJDYWNoZSA9IGNyZWF0ZVdyYXBwZXJDYWNoZSgpOworICAgICAgICBKU1dyYXBwZXJD
YWNoZVNwaW5Mb2NrID0gbmV3IFNwaW5Mb2NrOworICAgICAgICBKU1dyYXBwZXJDYWNoZVNwaW5M
b2NrLT5Jbml0KCk7CisgICAgfQorCisgICAgU3BpbkxvY2tIb2xkZXIgaG9sZGVyKEpTV3JhcHBl
ckNhY2hlU3BpbkxvY2spOwogICAgIE5TTWFwSW5zZXJ0KEpTV3JhcHBlckNhY2hlLCBpbXBsLCB3
cmFwcGVyKTsKIH0KIApAQCAtNzksMTYgKzg5LDI1IEBAIHZvaWQgcmVtb3ZlSlNXcmFwcGVyKEpT
T2JqZWN0KiBpbXBsKQogewogICAgIGlmICghSlNXcmFwcGVyQ2FjaGUpCiAgICAgICAgIHJldHVy
bjsKKworICAgIFNwaW5Mb2NrSG9sZGVyIGhvbGRlcihKU1dyYXBwZXJDYWNoZVNwaW5Mb2NrKTsK
ICAgICBOU01hcFJlbW92ZShKU1dyYXBwZXJDYWNoZSwgaW1wbCk7CiB9CiAKLWlkIGNyZWF0ZUpT
V3JhcHBlcihKU0M6OkpTT2JqZWN0KiBvYmplY3QsIFBhc3NSZWZQdHI8SlNDOjpCaW5kaW5nczo6
Um9vdE9iamVjdD4gb3JpZ2luLCBQYXNzUmVmUHRyPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+
IHJvb3QpCitzdGF0aWMgdm9pZCByZW1vdmVKU1dyYXBwZXJJZlJldGFpbkNvdW50T25lKE5TT2Jq
ZWN0KiB3cmFwcGVyLCBKU09iamVjdCogaW1wbCkKIHsKLSAgICAvLyBOU01hcCBpcyBub3QgdGhy
ZWFkIHNhZmUsIGhvbGQgdGhlIEpTQyBBUEkgbG9jazsgYWxzbyBzeW5jaHJvbml6ZSB0aGlzIHZz
LiByZWxlYXNlLgotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGhvbGRlcihKU0RPTVdpbmRvd0Jhc2U6
OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKKyAgICBpZiAoIUpTV3JhcHBlckNhY2hlKQorICAgICAg
ICByZXR1cm47CiAKKyAgICBTcGluTG9ja0hvbGRlciBob2xkZXIoSlNXcmFwcGVyQ2FjaGVTcGlu
TG9jayk7CisgICAgaWYgKFt3cmFwcGVyIHJldGFpbkNvdW50XSA9PSAxKQorICAgICAgICBOU01h
cFJlbW92ZShKU1dyYXBwZXJDYWNoZSwgaW1wbCk7Cit9CisKK2lkIGNyZWF0ZUpTV3JhcHBlcihK
U0M6OkpTT2JqZWN0KiBvYmplY3QsIFBhc3NSZWZQdHI8SlNDOjpCaW5kaW5nczo6Um9vdE9iamVj
dD4gb3JpZ2luLCBQYXNzUmVmUHRyPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+IHJvb3QpCit7
CiAgICAgaWYgKGlkIHdyYXBwZXIgPSBnZXRKU1dyYXBwZXIob2JqZWN0KSkKLSAgICAgICAgcmV0
dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7CiAgICAgcmV0dXJuIFtbW1dlYlNjcmlwdE9iamVjdCBhbGxvY10gX2luaXRXaXRoSlNPYmpl
Y3Q6b2JqZWN0IG9yaWdpblJvb3RPYmplY3Q6b3JpZ2luIHJvb3RPYmplY3Q6cm9vdF0gYXV0b3Jl
bGVhc2VdOwogfQogCkBAIC0xNDgsOSArMTY3LDYgQEAgLSAodm9pZClfc2V0SW1wOihKU09iamVj
dCopaW1wIG9yaWdpblJvbwogICAgIF9wcml2YXRlLT5yb290T2JqZWN0ID0gcm9vdE9iamVjdC5s
ZWFrUmVmKCk7CiAgICAgX3ByaXZhdGUtPm9yaWdpblJvb3RPYmplY3QgPSBvcmlnaW5Sb290T2Jq
ZWN0LmxlYWtSZWYoKTsKIAotICAgIC8vIE5TTWFwIGlzIG5vdCB0aHJlYWQgc2FmZSwgaG9sZCB0
aGUgSlNDIEFQSSBsb2NrLgotICAgIEpTQzo6SlNMb2NrSG9sZGVyIGhvbGRlcihKU0RPTVdpbmRv
d0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKLQogICAgIFdlYkNvcmU6OmFkZEpTV3JhcHBl
cihzZWxmLCBpbXApOwogCiAgICAgaWYgKF9wcml2YXRlLT5yb290T2JqZWN0KQpAQCAtMjMxLDE1
ICsyNDcsOSBAQCAtIChCT09MKV9pc1NhZmVTY3JpcHQKIAogLSAob25ld2F5IHZvaWQpcmVsZWFz
ZQogewotICAgIHsKLSAgICAgICAgLy8gTlNNYXAgaXMgbm90IHRocmVhZCBzYWZlLCBob2xkIHRo
ZSBKU0MgQVBJIGxvY2s7IGFsc28gc3luY2hyb25pemUgdGhpcyB2cy4gZ2V0SlNXcmFwcGVyLgot
ICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBob2xkZXIoSlNET01XaW5kb3dCYXNlOjpjb21tb25K
U0dsb2JhbERhdGEoKSk7Ci0KLSAgICAgICAgLy8gSWYgd2UncmUgcmVsZWFzaW5nIHRoZSBsYXN0
IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdCwgcmVtb3ZlIGlmIGZyb20gdGhlIG1hcCwKLSAgICAg
ICAgLy8gdGhpcyB3aWxsIHByZXZlbnQgdGhpcyBvYmplY3QgZnJvbSBiZWluZyByZXR1cm5lZCBi
eSBnZXRKU1dyYXBwZXIuCi0gICAgICAgIGlmIChfcHJpdmF0ZS0+aW1wICYmIFtzZWxmIHJldGFp
bkNvdW50XSA9PSAxKQotICAgICAgICAgICAgV2ViQ29yZTo6cmVtb3ZlSlNXcmFwcGVyKF9wcml2
YXRlLT5pbXApOwotICAgIH0KKyAgICAvLyBJZiB3ZSdyZSByZWxlYXNpbmcgdGhlIGxhc3QgcmVm
ZXJlbmNlIHRvIHRoaXMgb2JqZWN0LCByZW1vdmUgaWYgZnJvbSB0aGUgbWFwLgorICAgIGlmIChf
cHJpdmF0ZS0+aW1wKQorICAgICAgICBXZWJDb3JlOjpyZW1vdmVKU1dyYXBwZXJJZlJldGFpbkNv
dW50T25lKHNlbGYsIF9wcml2YXRlLT5pbXApOwogCiAgICAgW3N1cGVyIHJlbGVhc2VdOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151994</attachid>
            <date>2012-07-12 10:40:35 -0700</date>
            <delta_ts>2012-07-12 11:40:53 -0700</delta_ts>
            <desc>+ ASSERTs</desc>
            <filename>90849.3.patch</filename>
            <type>text/plain</type>
            <size>5419</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjQyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA3LTEyICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBUaHJlYWRzYWZl
dHkgaXNzdWVzIGluIFdlYlNjcmlwdE9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA4NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIGZpeCBmb3IgdGhpcyBidWcuIFRha2luZyB0aGUg
SlNDIEFQSSBsb2NrIGZyb20gV2ViU2NyaXB0T2JqZWN0OjpyZWxlYXNlCisgICAgICAgIG1heSBu
b3QgYmUgc2FmZTsgYmV0dGVyIHRvIGp1c3QgZ3VhcmQgdGhlIEpTV3JhcHBlckNhY2hlIHdpdGgg
aXRzIG93biBzcGlubG9jay4KKworICAgICAgICAqIGJpbmRpbmdzL29iamMvV2ViU2NyaXB0T2Jq
ZWN0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SlNXcmFwcGVyKToKKyAgICAgICAgICAgIC0g
QWRkZWQgc3BpbmxvY2s7IGFsc28gcmV0YWluL2F1dG9yZWxlYXNlIHRoZSByZXR1cm5lZCB3cmFw
cGVyIC0gaXQgaXMgdW5zYWZlCisgICAgICAgICAgICAgIHRvIHdhaXQgZm9yIHRoZSBjYWxsZXIg
dG8gZG8gc28sIGR1ZSB0byBhIHJhY2UgY29uZGl0aW9uIHZzIHJlbGVhc2UgcmVtb3ZpbmcKKyAg
ICAgICAgICAgICAgdGhlIHdyYXBwZXIgZnJvbSB0aGUgbWFwLgorICAgICAgICAoV2ViQ29yZTo6
YWRkSlNXcmFwcGVyKToKKyAgICAgICAgICAgIC0gSW5pdGlhbGl6ZSAoJiB0YWtlKSB0aGUgc3Bp
bmxvY2sgZ3VhcmRpbmcgdGhlIGNhY2hlLgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlSlNXcmFw
cGVyKToKKyAgICAgICAgICAgIC0gVGFrZSB0aGUgc3BpbmxvY2sgZ3VhcmRpbmcgdGhlIGNhY2hl
LgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlSlNXcmFwcGVySWZSZXRhaW5Db3VudE9uZSk6Cisg
ICAgICAgICAgICAtIFRha2UgdGhlIHNwaW5sb2NrIGd1YXJkaW5nIHRoZSBjYWNoZSwgcmVtb3Zl
IHRoZSB3cmFwcGVyIGlmIHJldGFpbkNvdW50IGlzIG9uZS4KKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUpTV3JhcHBlcik6CisgICAgICAgICAgICAtIFJlbW92ZSB0aGUgQVBJIGxvY2s7IHRoaXMg
bWV0aG9kIG5vIGxvbmdlciBuZWVkcyB0byByZXRhaW4vYXV0b3JlbGVhc2UgKHRoaXMgaXMKKyAg
ICAgICAgICAgICAgZG9uZSBieSBnZXRKU1dyYXBwZXIpLgorICAgICAgICAoLVtXZWJTY3JpcHRP
YmplY3QgX3NldEltcDpvcmlnaW5Sb290T2JqZWN0OnJvb3RPYmplY3Q6XSk6CisgICAgICAgICAg
ICAtIFJlbW92ZSB0aGUgQVBJIGxvY2suCisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCByZWxl
YXNlXSk6CisgICAgICAgICAgICAtIFJlbW92ZSB0aGUgQVBJIGxvY2ssIHJldGFpbkNvdW50IGNo
ZWNrIG1vdmVkIGludG8gcmVtb3ZlSlNXcmFwcGVySWZSZXRhaW5Db3VudE9uZS4KKwogMjAxMi0w
Ny0xMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS10gQWRkIHdlYmtpdF9jb29raWVfbWFuYWdlcl9zZXRfcGVyc2lzdGVudF9zdG9yYWdl
KCkgdG8gV2ViS2l0MiBHVEsrIEFQSQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9XZWJTY3JpcHRPYmplY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0JKHJldmlzaW9uIDEyMjQyOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC01MCw2ICs1MCw3IEBACiAjaW1wb3J0IDxydW50aW1lL0pTTG9jay5oPgogI2ltcG9ydCA8cnVu
dGltZS9Db21wbGV0aW9uLmg+CiAjaW1wb3J0IDxydW50aW1lL0NvbXBsZXRpb24uaD4KKyNpbXBv
cnQgPHd0Zi9UQ1NwaW5Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+CiAKIApAQCAt
NjAsMTggKzYxLDMxIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGF0aWMgTlNNYXBUYWJsZSogSlNXcmFwcGVyQ2FjaGU7CitzdGF0aWMgU3Bpbkxv
Y2sqIEpTV3JhcHBlckNhY2hlU3BpbkxvY2sgPSAwOwogCiBOU09iamVjdCogZ2V0SlNXcmFwcGVy
KEpTT2JqZWN0KiBpbXBsKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICBp
ZiAoIUpTV3JhcHBlckNhY2hlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxOU09iamVjdCo+KE5TTWFwR2V0KEpTV3JhcHBlckNhY2hlLCBpbXBsKSk7CisKKyAg
ICBTcGluTG9ja0hvbGRlciBob2xkZXIoSlNXcmFwcGVyQ2FjaGVTcGluTG9jayk7CisgICAgTlNP
YmplY3QqIHdyYXBwZXIgPSBzdGF0aWNfY2FzdDxOU09iamVjdCo+KE5TTWFwR2V0KEpTV3JhcHBl
ckNhY2hlLCBpbXBsKSk7CisgICAgcmV0dXJuIHdyYXBwZXIgPyBbW3dyYXBwZXIgcmV0YWluXSBh
dXRvcmVsZWFzZV0gOiBuaWw7CiB9CiAKIHZvaWQgYWRkSlNXcmFwcGVyKE5TT2JqZWN0KiB3cmFw
cGVyLCBKU09iamVjdCogaW1wbCkKIHsKLSAgICBpZiAoIUpTV3JhcHBlckNhY2hlKQorICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoIUpTV3JhcHBlckNhY2hlKSB7CiAgICAg
ICAgIEpTV3JhcHBlckNhY2hlID0gY3JlYXRlV3JhcHBlckNhY2hlKCk7CisgICAgICAgIEpTV3Jh
cHBlckNhY2hlU3BpbkxvY2sgPSBuZXcgU3BpbkxvY2s7CisgICAgICAgIEpTV3JhcHBlckNhY2hl
U3BpbkxvY2stPkluaXQoKTsKKyAgICB9CisKKyAgICBTcGluTG9ja0hvbGRlciBob2xkZXIoSlNX
cmFwcGVyQ2FjaGVTcGluTG9jayk7CiAgICAgTlNNYXBJbnNlcnQoSlNXcmFwcGVyQ2FjaGUsIGlt
cGwsIHdyYXBwZXIpOwogfQogCkBAIC03OSwxNiArOTMsMjUgQEAgdm9pZCByZW1vdmVKU1dyYXBw
ZXIoSlNPYmplY3QqIGltcGwpCiB7CiAgICAgaWYgKCFKU1dyYXBwZXJDYWNoZSkKICAgICAgICAg
cmV0dXJuOworCisgICAgU3BpbkxvY2tIb2xkZXIgaG9sZGVyKEpTV3JhcHBlckNhY2hlU3Bpbkxv
Y2spOwogICAgIE5TTWFwUmVtb3ZlKEpTV3JhcHBlckNhY2hlLCBpbXBsKTsKIH0KIAotaWQgY3Jl
YXRlSlNXcmFwcGVyKEpTQzo6SlNPYmplY3QqIG9iamVjdCwgUGFzc1JlZlB0cjxKU0M6OkJpbmRp
bmdzOjpSb290T2JqZWN0PiBvcmlnaW4sIFBhc3NSZWZQdHI8SlNDOjpCaW5kaW5nczo6Um9vdE9i
amVjdD4gcm9vdCkKK3N0YXRpYyB2b2lkIHJlbW92ZUpTV3JhcHBlcklmUmV0YWluQ291bnRPbmUo
TlNPYmplY3QqIHdyYXBwZXIsIEpTT2JqZWN0KiBpbXBsKQogewotICAgIC8vIE5TTWFwIGlzIG5v
dCB0aHJlYWQgc2FmZSwgaG9sZCB0aGUgSlNDIEFQSSBsb2NrOyBhbHNvIHN5bmNocm9uaXplIHRo
aXMgdnMuIHJlbGVhc2UuCi0gICAgSlNDOjpKU0xvY2tIb2xkZXIgaG9sZGVyKEpTRE9NV2luZG93
QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOworICAgIGlmICghSlNXcmFwcGVyQ2FjaGUpCisg
ICAgICAgIHJldHVybjsKKworICAgIFNwaW5Mb2NrSG9sZGVyIGhvbGRlcihKU1dyYXBwZXJDYWNo
ZVNwaW5Mb2NrKTsKKyAgICBpZiAoW3dyYXBwZXIgcmV0YWluQ291bnRdID09IDEpCisgICAgICAg
IE5TTWFwUmVtb3ZlKEpTV3JhcHBlckNhY2hlLCBpbXBsKTsKK30KIAoraWQgY3JlYXRlSlNXcmFw
cGVyKEpTQzo6SlNPYmplY3QqIG9iamVjdCwgUGFzc1JlZlB0cjxKU0M6OkJpbmRpbmdzOjpSb290
T2JqZWN0PiBvcmlnaW4sIFBhc3NSZWZQdHI8SlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdD4gcm9v
dCkKK3sKICAgICBpZiAoaWQgd3JhcHBlciA9IGdldEpTV3JhcHBlcihvYmplY3QpKQotICAgICAg
ICByZXR1cm4gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdOworICAgICAgICByZXR1cm4g
d3JhcHBlcjsKICAgICByZXR1cm4gW1tbV2ViU2NyaXB0T2JqZWN0IGFsbG9jXSBfaW5pdFdpdGhK
U09iamVjdDpvYmplY3Qgb3JpZ2luUm9vdE9iamVjdDpvcmlnaW4gcm9vdE9iamVjdDpyb290XSBh
dXRvcmVsZWFzZV07CiB9CiAKQEAgLTE0OCw5ICsxNzEsNiBAQCAtICh2b2lkKV9zZXRJbXA6KEpT
T2JqZWN0KilpbXAgb3JpZ2luUm9vCiAgICAgX3ByaXZhdGUtPnJvb3RPYmplY3QgPSByb290T2Jq
ZWN0LmxlYWtSZWYoKTsKICAgICBfcHJpdmF0ZS0+b3JpZ2luUm9vdE9iamVjdCA9IG9yaWdpblJv
b3RPYmplY3QubGVha1JlZigpOwogCi0gICAgLy8gTlNNYXAgaXMgbm90IHRocmVhZCBzYWZlLCBo
b2xkIHRoZSBKU0MgQVBJIGxvY2suCi0gICAgSlNDOjpKU0xvY2tIb2xkZXIgaG9sZGVyKEpTRE9N
V2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkpOwotCiAgICAgV2ViQ29yZTo6YWRkSlNX
cmFwcGVyKHNlbGYsIGltcCk7CiAKICAgICBpZiAoX3ByaXZhdGUtPnJvb3RPYmplY3QpCkBAIC0y
MzEsMTUgKzI1MSw5IEBAIC0gKEJPT0wpX2lzU2FmZVNjcmlwdAogCiAtIChvbmV3YXkgdm9pZCly
ZWxlYXNlCiB7Ci0gICAgewotICAgICAgICAvLyBOU01hcCBpcyBub3QgdGhyZWFkIHNhZmUsIGhv
bGQgdGhlIEpTQyBBUEkgbG9jazsgYWxzbyBzeW5jaHJvbml6ZSB0aGlzIHZzLiBnZXRKU1dyYXBw
ZXIuCi0gICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGhvbGRlcihKU0RPTVdpbmRvd0Jhc2U6OmNv
bW1vbkpTR2xvYmFsRGF0YSgpKTsKLQotICAgICAgICAvLyBJZiB3ZSdyZSByZWxlYXNpbmcgdGhl
IGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0LCByZW1vdmUgaWYgZnJvbSB0aGUgbWFwLAot
ICAgICAgICAvLyB0aGlzIHdpbGwgcHJldmVudCB0aGlzIG9iamVjdCBmcm9tIGJlaW5nIHJldHVy
bmVkIGJ5IGdldEpTV3JhcHBlci4KLSAgICAgICAgaWYgKF9wcml2YXRlLT5pbXAgJiYgW3NlbGYg
cmV0YWluQ291bnRdID09IDEpCi0gICAgICAgICAgICBXZWJDb3JlOjpyZW1vdmVKU1dyYXBwZXIo
X3ByaXZhdGUtPmltcCk7Ci0gICAgfQorICAgIC8vIElmIHdlJ3JlIHJlbGVhc2luZyB0aGUgbGFz
dCByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3QsIHJlbW92ZSBpZiBmcm9tIHRoZSBtYXAuCisgICAg
aWYgKF9wcml2YXRlLT5pbXApCisgICAgICAgIFdlYkNvcmU6OnJlbW92ZUpTV3JhcHBlcklmUmV0
YWluQ291bnRPbmUoc2VsZiwgX3ByaXZhdGUtPmltcCk7CiAKICAgICBbc3VwZXIgcmVsZWFzZV07
CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152012</attachid>
            <date>2012-07-12 11:40:53 -0700</date>
            <delta_ts>2012-07-12 11:49:24 -0700</delta_ts>
            <desc>Simplify spinlock initialization</desc>
            <filename>90849.4.patch</filename>
            <type>text/plain</type>
            <size>5267</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjQyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA3LTEyICBHYXZpbiBC
YXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBUaHJlYWRzYWZl
dHkgaXNzdWVzIGluIFdlYlNjcmlwdE9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA4NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIGZpeCBmb3IgdGhpcyBidWcuIFRha2luZyB0aGUg
SlNDIEFQSSBsb2NrIGZyb20gV2ViU2NyaXB0T2JqZWN0OjpyZWxlYXNlCisgICAgICAgIG1heSBu
b3QgYmUgc2FmZTsgYmV0dGVyIHRvIGp1c3QgZ3VhcmQgdGhlIEpTV3JhcHBlckNhY2hlIHdpdGgg
aXRzIG93biBzcGlubG9jay4KKworICAgICAgICAqIGJpbmRpbmdzL29iamMvV2ViU2NyaXB0T2Jq
ZWN0Lm1tOgorICAgICAgICAoV2ViQ29yZTo6Z2V0SlNXcmFwcGVyKToKKyAgICAgICAgICAgIC0g
QWRkZWQgc3BpbmxvY2s7IGFsc28gcmV0YWluL2F1dG9yZWxlYXNlIHRoZSByZXR1cm5lZCB3cmFw
cGVyIC0gaXQgaXMgdW5zYWZlCisgICAgICAgICAgICAgIHRvIHdhaXQgZm9yIHRoZSBjYWxsZXIg
dG8gZG8gc28sIGR1ZSB0byBhIHJhY2UgY29uZGl0aW9uIHZzIHJlbGVhc2UgcmVtb3ZpbmcKKyAg
ICAgICAgICAgICAgdGhlIHdyYXBwZXIgZnJvbSB0aGUgbWFwLgorICAgICAgICAoV2ViQ29yZTo6
YWRkSlNXcmFwcGVyKToKKyAgICAgICAgICAgIC0gVGFrZSB0aGUgc3BpbmxvY2sgZ3VhcmRpbmcg
dGhlIGNhY2hlLgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlSlNXcmFwcGVyKToKKyAgICAgICAg
ICAgIC0gVGFrZSB0aGUgc3BpbmxvY2sgZ3VhcmRpbmcgdGhlIGNhY2hlLgorICAgICAgICAoV2Vi
Q29yZTo6cmVtb3ZlSlNXcmFwcGVySWZSZXRhaW5Db3VudE9uZSk6CisgICAgICAgICAgICAtIFRh
a2UgdGhlIHNwaW5sb2NrIGd1YXJkaW5nIHRoZSBjYWNoZSwgcmVtb3ZlIHRoZSB3cmFwcGVyIGlm
IHJldGFpbkNvdW50IGlzIG9uZS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUpTV3JhcHBlcik6
CisgICAgICAgICAgICAtIFJlbW92ZSB0aGUgQVBJIGxvY2s7IHRoaXMgbWV0aG9kIG5vIGxvbmdl
ciBuZWVkcyB0byByZXRhaW4vYXV0b3JlbGVhc2UgKHRoaXMgaXMKKyAgICAgICAgICAgICAgZG9u
ZSBieSBnZXRKU1dyYXBwZXIpLgorICAgICAgICAoLVtXZWJTY3JpcHRPYmplY3QgX3NldEltcDpv
cmlnaW5Sb290T2JqZWN0OnJvb3RPYmplY3Q6XSk6CisgICAgICAgICAgICAtIFJlbW92ZSB0aGUg
QVBJIGxvY2suCisgICAgICAgICgtW1dlYlNjcmlwdE9iamVjdCByZWxlYXNlXSk6CisgICAgICAg
ICAgICAtIFJlbW92ZSB0aGUgQVBJIGxvY2ssIHJldGFpbkNvdW50IGNoZWNrIG1vdmVkIGludG8g
cmVtb3ZlSlNXcmFwcGVySWZSZXRhaW5Db3VudE9uZS4KKwogMjAxMi0wNy0xMSAgQ2FybG9zIEdh
cmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIHdl
YmtpdF9jb29raWVfbWFuYWdlcl9zZXRfcGVyc2lzdGVudF9zdG9yYWdlKCkgdG8gV2ViS2l0MiBH
VEsrIEFQSQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmpl
Y3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3Jp
cHRPYmplY3QubW0JKHJldmlzaW9uIDEyMjQyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBA
CiAjaW1wb3J0IDxydW50aW1lL0pTTG9jay5oPgogI2ltcG9ydCA8cnVudGltZS9Db21wbGV0aW9u
Lmg+CiAjaW1wb3J0IDxydW50aW1lL0NvbXBsZXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9UQ1NwaW5M
b2NrLmg+CiAjaW1wb3J0IDx3dGYvVGhyZWFkaW5nLmg+CiAKIApAQCAtNjAsMTYgKzYxLDI0IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMg
TlNNYXBUYWJsZSogSlNXcmFwcGVyQ2FjaGU7CitzdGF0aWMgU3BpbkxvY2sgc3BpbmxvY2sgPSBT
UElOTE9DS19JTklUSUFMSVpFUjsKIAogTlNPYmplY3QqIGdldEpTV3JhcHBlcihKU09iamVjdCog
aW1wbCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFNwaW5Mb2NrSG9sZGVy
IGhvbGRlcigmc3BpbkxvY2spOworCiAgICAgaWYgKCFKU1dyYXBwZXJDYWNoZSkKICAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TlNPYmplY3QqPihOU01hcEdldChK
U1dyYXBwZXJDYWNoZSwgaW1wbCkpOworICAgIE5TT2JqZWN0KiB3cmFwcGVyID0gc3RhdGljX2Nh
c3Q8TlNPYmplY3QqPihOU01hcEdldChKU1dyYXBwZXJDYWNoZSwgaW1wbCkpOworICAgIHJldHVy
biB3cmFwcGVyID8gW1t3cmFwcGVyIHJldGFpbl0gYXV0b3JlbGVhc2VdIDogbmlsOwogfQogCiB2
b2lkIGFkZEpTV3JhcHBlcihOU09iamVjdCogd3JhcHBlciwgSlNPYmplY3QqIGltcGwpCiB7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBTcGluTG9ja0hvbGRlciBob2xkZXIoJnNw
aW5Mb2NrKTsKKwogICAgIGlmICghSlNXcmFwcGVyQ2FjaGUpCiAgICAgICAgIEpTV3JhcHBlckNh
Y2hlID0gY3JlYXRlV3JhcHBlckNhY2hlKCk7CiAgICAgTlNNYXBJbnNlcnQoSlNXcmFwcGVyQ2Fj
aGUsIGltcGwsIHdyYXBwZXIpOwpAQCAtNzcsMTggKzg2LDI3IEBAIHZvaWQgYWRkSlNXcmFwcGVy
KE5TT2JqZWN0KiB3cmFwcGVyLCBKU08KIAogdm9pZCByZW1vdmVKU1dyYXBwZXIoSlNPYmplY3Qq
IGltcGwpCiB7CisgICAgU3BpbkxvY2tIb2xkZXIgaG9sZGVyKCZzcGluTG9jayk7CisKICAgICBp
ZiAoIUpTV3JhcHBlckNhY2hlKQogICAgICAgICByZXR1cm47CiAgICAgTlNNYXBSZW1vdmUoSlNX
cmFwcGVyQ2FjaGUsIGltcGwpOwogfQogCi1pZCBjcmVhdGVKU1dyYXBwZXIoSlNDOjpKU09iamVj
dCogb2JqZWN0LCBQYXNzUmVmUHRyPEpTQzo6QmluZGluZ3M6OlJvb3RPYmplY3Q+IG9yaWdpbiwg
UGFzc1JlZlB0cjxKU0M6OkJpbmRpbmdzOjpSb290T2JqZWN0PiByb290KQorc3RhdGljIHZvaWQg
cmVtb3ZlSlNXcmFwcGVySWZSZXRhaW5Db3VudE9uZShOU09iamVjdCogd3JhcHBlciwgSlNPYmpl
Y3QqIGltcGwpCiB7Ci0gICAgLy8gTlNNYXAgaXMgbm90IHRocmVhZCBzYWZlLCBob2xkIHRoZSBK
U0MgQVBJIGxvY2s7IGFsc28gc3luY2hyb25pemUgdGhpcyB2cy4gcmVsZWFzZS4KLSAgICBKU0M6
OkpTTG9ja0hvbGRlciBob2xkZXIoSlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEo
KSk7CisgICAgU3BpbkxvY2tIb2xkZXIgaG9sZGVyKCZzcGluTG9jayk7CisKKyAgICBpZiAoIUpT
V3JhcHBlckNhY2hlKQorICAgICAgICByZXR1cm47CisgICAgaWYgKFt3cmFwcGVyIHJldGFpbkNv
dW50XSA9PSAxKQorICAgICAgICBOU01hcFJlbW92ZShKU1dyYXBwZXJDYWNoZSwgaW1wbCk7Cit9
CiAKK2lkIGNyZWF0ZUpTV3JhcHBlcihKU0M6OkpTT2JqZWN0KiBvYmplY3QsIFBhc3NSZWZQdHI8
SlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdD4gb3JpZ2luLCBQYXNzUmVmUHRyPEpTQzo6QmluZGlu
Z3M6OlJvb3RPYmplY3Q+IHJvb3QpCit7CiAgICAgaWYgKGlkIHdyYXBwZXIgPSBnZXRKU1dyYXBw
ZXIob2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIFtbd3JhcHBlciByZXRhaW5dIGF1dG9yZWxlYXNl
XTsKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgcmV0dXJuIFtbW1dlYlNjcmlwdE9iamVj
dCBhbGxvY10gX2luaXRXaXRoSlNPYmplY3Q6b2JqZWN0IG9yaWdpblJvb3RPYmplY3Q6b3JpZ2lu
IHJvb3RPYmplY3Q6cm9vdF0gYXV0b3JlbGVhc2VdOwogfQogCkBAIC0xNDgsOSArMTY2LDYgQEAg
LSAodm9pZClfc2V0SW1wOihKU09iamVjdCopaW1wIG9yaWdpblJvbwogICAgIF9wcml2YXRlLT5y
b290T2JqZWN0ID0gcm9vdE9iamVjdC5sZWFrUmVmKCk7CiAgICAgX3ByaXZhdGUtPm9yaWdpblJv
b3RPYmplY3QgPSBvcmlnaW5Sb290T2JqZWN0LmxlYWtSZWYoKTsKIAotICAgIC8vIE5TTWFwIGlz
IG5vdCB0aHJlYWQgc2FmZSwgaG9sZCB0aGUgSlNDIEFQSSBsb2NrLgotICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGhvbGRlcihKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKLQog
ICAgIFdlYkNvcmU6OmFkZEpTV3JhcHBlcihzZWxmLCBpbXApOwogCiAgICAgaWYgKF9wcml2YXRl
LT5yb290T2JqZWN0KQpAQCAtMjMxLDE1ICsyNDYsOSBAQCAtIChCT09MKV9pc1NhZmVTY3JpcHQK
IAogLSAob25ld2F5IHZvaWQpcmVsZWFzZQogewotICAgIHsKLSAgICAgICAgLy8gTlNNYXAgaXMg
bm90IHRocmVhZCBzYWZlLCBob2xkIHRoZSBKU0MgQVBJIGxvY2s7IGFsc28gc3luY2hyb25pemUg
dGhpcyB2cy4gZ2V0SlNXcmFwcGVyLgotICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBob2xkZXIo
SlNET01XaW5kb3dCYXNlOjpjb21tb25KU0dsb2JhbERhdGEoKSk7Ci0KLSAgICAgICAgLy8gSWYg
d2UncmUgcmVsZWFzaW5nIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdCwgcmVtb3Zl
IGlmIGZyb20gdGhlIG1hcCwKLSAgICAgICAgLy8gdGhpcyB3aWxsIHByZXZlbnQgdGhpcyBvYmpl
Y3QgZnJvbSBiZWluZyByZXR1cm5lZCBieSBnZXRKU1dyYXBwZXIuCi0gICAgICAgIGlmIChfcHJp
dmF0ZS0+aW1wICYmIFtzZWxmIHJldGFpbkNvdW50XSA9PSAxKQotICAgICAgICAgICAgV2ViQ29y
ZTo6cmVtb3ZlSlNXcmFwcGVyKF9wcml2YXRlLT5pbXApOwotICAgIH0KKyAgICAvLyBJZiB3ZSdy
ZSByZWxlYXNpbmcgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0LCByZW1vdmUgaWYg
ZnJvbSB0aGUgbWFwLgorICAgIGlmIChfcHJpdmF0ZS0+aW1wKQorICAgICAgICBXZWJDb3JlOjpy
ZW1vdmVKU1dyYXBwZXJJZlJldGFpbkNvdW50T25lKHNlbGYsIF9wcml2YXRlLT5pbXApOwogCiAg
ICAgW3N1cGVyIHJlbGVhc2VdOwogfQo=
</data>
<flag name="review"
          id="160601"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="160604"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>