<?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>94761</bug_id>
          
          <creation_ts>2012-08-22 17:31:19 -0700</creation_ts>
          <short_desc>ThreadRestrictionVerifier should be opt-in, not opt-out</short_desc>
          <delta_ts>2012-08-24 15:56:04 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>levin</cc>
    
    <cc>levin+threading</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>702549</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-22 17:31:19 -0700</bug_when>
    <thetext>ThreadRestrictionVerifier should be opt-in, not opt-out</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702561</commentid>
    <comment_count>1</comment_count>
      <attachid>160047</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-22 17:38:52 -0700</bug_when>
    <thetext>Created attachment 160047
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702570</commentid>
    <comment_count>2</comment_count>
      <attachid>160047</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-08-22 17:47:04 -0700</bug_when>
    <thetext>Comment on attachment 160047
Patch

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

r=me!

&gt; Source/ThirdParty/ANGLE/ChangeLog:8
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).

Where did this ChangeLog come from?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702573</commentid>
    <comment_count>3</comment_count>
      <attachid>160047</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2012-08-22 17:51:20 -0700</bug_when>
    <thetext>Comment on attachment 160047
Patch

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

This change appears to make it easier for JSC code to turn this off which is good.

How does the rest of the code continue to get the benefit from this automatically as it has in the past? (There have been several issues uncovered by this which would have resulted in hard to figure out memory corruptions.)

&gt; Source/WTF/ChangeLog:23
&gt; +        to maintain with default off, so I removed them.

Actually they aren&apos;t. They simply assert that the method calls were only made when the class was in its initial state.  It is only the change to make m_mode NoVerificationMode that makes them fire.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702583</commentid>
    <comment_count>4</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-08-22 18:03:32 -0700</bug_when>
    <thetext>It sounds like the concern is that jsc is the primary place where threading is done so this is the place bitten by this assert most often.

Honestly, I&apos;m not very connected lately with WebKit so if folks actively working on the project feel this is best. Please go ahead!

Thanks for taking the time to response to me in irc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702593</commentid>
    <comment_count>5</comment_count>
      <attachid>160047</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-08-22 18:11:29 -0700</bug_when>
    <thetext>Comment on attachment 160047
Patch

It looks like David is ok with this, so r=me again!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702612</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-22 18:32:53 -0700</bug_when>
    <thetext>Committed r126379: &lt;http://trac.webkit.org/changeset/126379&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703088</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-23 09:51:33 -0700</bug_when>
    <thetext>I strongly object to this change. ThreadRestrictionVerifier has been finding bugs in places we would never think of oping in for verification. JavaScriptCore is certainly not the only part of WebKit that does threading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703243</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-23 12:17:54 -0700</bug_when>
    <thetext>&gt; I strongly object to this change.

OK, I hear your objection.

Do you have a proposal for how to make our tests stop ASSERTing for any client that uses threads?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703363</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-23 14:21:33 -0700</bug_when>
    <thetext>Do we know when ASSERTing started, and what specific parts of JSC cause it?

DumpRenderTree runs code at startup that uses threads, so one can definitely use JSC API from a thread - otherwise, no regression tests would run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703530</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-23 16:39:33 -0700</bug_when>
    <thetext>&gt; Do we know when ASSERTing started, and what specific parts of JSC cause it?

This mechanism has caused ASSERTs to fire in JSC since its first introduction. It was designed with the assumption of a single-threaded VM (v8).

The ASSERTs fire for anything RefPtr in Source/WTF or Source/JavaScriptCore.

&gt; DumpRenderTree runs code at startup that uses threads, so one can definitely use JSC API from a thread - otherwise, no regression tests would run.

DumpRenderTree doesn&apos;t use the feature of using an object on multiple threads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703537</commentid>
    <comment_count>11</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-08-23 16:46:55 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; Do we know when ASSERTing started, and what specific parts of JSC cause it?
&gt; 
&gt; This mechanism has caused ASSERTs to fire in JSC since its first introduction. It was designed with the assumption of a single-threaded VM (v8).

fwiw, I didn&apos;t design it for single-thread vm. v8 doesn&apos;t even use wtf as far as I know.

I did it for WebCore (workers, icon db, index db, which use multiple threads, etc), etc. I tried to quiet JSC things that I hit. (I had intended to add something JSC specific that could check for locks rather than just turning it off but it still would need to go in each ref counted class in JSC -- I just never got around to it before I mostly disappeared).


&gt; 
&gt; The ASSERTs fire for anything RefPtr in Source/WTF or Source/JavaScriptCore.
&gt; 
&gt; &gt; DumpRenderTree runs code at startup that uses threads, so one can definitely use JSC API from a thread - otherwise, no regression tests would run.
&gt; 
&gt; DumpRenderTree doesn&apos;t use the feature of using an object on multiple threads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703580</commentid>
    <comment_count>12</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-23 17:23:07 -0700</bug_when>
    <thetext>&gt; &gt; This mechanism has caused ASSERTs to fire in JSC since its first introduction. It was designed with the assumption of a single-threaded VM (v8).
&gt; 
&gt; fwiw, I didn&apos;t design it for single-thread vm. v8 doesn&apos;t even use wtf as far as I know.

OK, it was designed with the assumption that WebCore is the only client of WTF (which is only true in Chromium).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703721</commentid>
    <comment_count>13</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-08-23 21:31:37 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; &gt; This mechanism has caused ASSERTs to fire in JSC since its first introduction. It was designed with the assumption of a single-threaded VM (v8).
&gt; &gt; 
&gt; &gt; fwiw, I didn&apos;t design it for single-thread vm. v8 doesn&apos;t even use wtf as far as I know.
&gt; 
&gt; OK, it was designed with the assumption that WebCore is the only client of WTF (which is only true in Chromium).

I appreciate that you&apos;re trying to be generous, and I&apos;m sorry that it didn&apos;t accomodate JSC better.

Rather than wax poetically about my intentions, here&apos;s the data I see:

JavaScriptCore, 12 classes which use RefCounted as a base class.

http://code.google.com/p/chromium/source/search?q=c%5C+RefCounted%5C%3C+file%3Athird_party%2FWebKit%2FSource%2FJavaScriptCore&amp;origq=c%5C+RefCounted%5C%3C+file%3Athird_party%2FWebKit%2FSource%2FJavaScriptCore&amp;btnG=Search+Trunk

WTF, 5 classes which use RefCounted as a base classes.

http://code.google.com/p/chromium/source/search?q=c%5C+RefCounted%5C%3C+file%3Athird_party%2FWebKit%2FSource%2FWTF&amp;origq=c%5C+RefCounted%5C%3C+file%3Athird_party%2FWebKit%2FSource%2FWTF&amp;btnG=Search+Trunk

Other directories, ~500 classes which use RefCounted as a base class.

http://code.google.com/p/chromium/source/search?q=c%5C+RefCounted%5C%3C+file%3Athird_party%2FWebKit&amp;origq=c%5C+RefCounted%5C%3C+file%3Athird_party%2FWebKit&amp;btnG=Search+Trunk

The default was set for those 500 classes in WebKit (not the other 17). The thread checker class had escape hatches for the special cases (which I put in places as I encountered them and I tried JSC in DRT and my debug WebKit build in Safari -- though any of my WebKit builds always hung due to some plugin thing in the Safari side of the code).

As to this patch, folks working on WebKit should decide what is the best code to run in WebKit (that isn&apos;t me at present).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703745</commentid>
    <comment_count>14</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-23 22:15:17 -0700</bug_when>
    <thetext>&gt; JavaScriptCore, 12 classes which use RefCounted as a base class.
&gt; WTF, 5 classes which use RefCounted as a base classes.

OK, does anybody have a proposal for what to do with these 17 classes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703747</commentid>
    <comment_count>15</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-08-23 22:25:28 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; JavaScriptCore, 12 classes which use RefCounted as a base class.
&gt; &gt; WTF, 5 classes which use RefCounted as a base classes.
&gt; 
&gt; OK, does anybody have a proposal for what to do with these 17 classes?

Call &quot;turnOffVerifier();&quot; in their constructors? (Or just leave in this patch.)

I didn&apos;t do this by default in the past because my approach with this was only to add that when I hit an assert (or someone else hit one, etc.) because I felt like this was the cautious path (verifying that each class I added it to was indeed an exception).  However, I now realize that was over cautious for these classes.

Ideally this wouldn&apos;t be in the 5 wtf classes unless they were used by JSC. However, if they are used in JSC,  turning off the checking for them seems like a fine compromise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704286</commentid>
    <comment_count>16</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-24 11:41:29 -0700</bug_when>
    <thetext>&gt; Call &quot;turnOffVerifier();&quot; in their constructors?

I would probably use a super-type of RefCounted (UnverifiedRefCounted? FreedomRefCounted?), to make the find-and-replace simpler, and leave a clearer message to future coders about the design rule.

But...

&gt; Ideally this wouldn&apos;t be in the 5 wtf classes unless they were used by JSC.

JSC uses fundamental WTF types, like StringImpl. So, a solution to turn things on by default in WebCore will still leave the verifier off for many of the classes in which it has caught bugs before.

My understanding is that those WTF classes gave us most of the value before, which is why I didn&apos;t see much difference between a targeted solution and just turning it all off: either way, to get the value out of the verifier, you have to pick specific strings, etc., in WebCore and opt them into verification.

Alexey, David, do you like the solution of &quot;off by default in WTF and JSC types, on by default in WebCore types&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704376</commentid>
    <comment_count>17</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-08-24 13:16:02 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; Call &quot;turnOffVerifier();&quot; in their constructors?
&gt; 
&gt; I would probably use a super-type of RefCounted (UnverifiedRefCounted? FreedomRefCounted?), to make the find-and-replace simpler, and leave a clearer message to future coders about the design rule.
&gt; 
&gt; But...
&gt; 
&gt; &gt; Ideally this wouldn&apos;t be in the 5 wtf classes unless they were used by JSC.
&gt; 
&gt; JSC uses fundamental WTF types, like StringImpl. So, a solution to turn things on by default in WebCore will still leave the verifier off for many of the classes in which it has caught bugs before.
&gt; 
&gt; My understanding is that those WTF classes gave us most of the value before, which is why I didn&apos;t see much difference between a targeted solution and just turning it all off: either way, to get the value out of the verifier, you have to pick specific strings, etc., in WebCore and opt them into verification.
&gt; 
&gt; Alexey, David, do you like the solution of &quot;off by default in WTF and JSC types, on by default in WebCore types&quot;?

fwiw, imo, that is a fine compromise. I don&apos;t remember any instances in which those found issues anyway.

More context:
The WebCore types (and higher) are actually the places where I have seen usefulness.

fwiw, StringImpl doesn&apos;t use RefCounted so unfortunately strings never get this check. There are likely issue with strings. Do I need to say that it was on mental list to get to it (but then I did a DB Cooper -- w/o the extortion and ransom)? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>704479</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-24 15:56:04 -0700</bug_when>
    <thetext>&gt; Alexey, David, do you like the solution of &quot;off by default in WTF and JSC types, on by default in WebCore types&quot;?

Makes sense to me, too.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160047</attachid>
            <date>2012-08-22 17:38:52 -0700</date>
            <delta_ts>2012-08-22 18:11:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94761-20120822173849.patch</filename>
            <type>text/plain</type>
            <size>5689</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI2MzY4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBA
CisyMDEyLTA4LTIyICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllciBzaG91bGQgYmUgb3B0LWluLCBub3Qgb3B0LW91
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ3NjEK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVk
IGV4cGxpY2l0IGNhbGxzIHRvIGRpc2FibGUgdGhlIHZlcmlmaWVyLCBzaW5jZSBpdCdzIG9mZiBi
eSBkZWZhdWx0IG5vdy4KKworICAgICAgICAqIHBhcnNlci9Tb3VyY2VQcm92aWRlci5oOgorICAg
ICAgICAoSlNDOjpTb3VyY2VQcm92aWRlcjo6U291cmNlUHJvdmlkZXIpOgorICAgICAgICAoU291
cmNlUHJvdmlkZXIpOgorICAgICAgICAqIHJ1bnRpbWUvU3ltYm9sVGFibGUuaDoKKyAgICAgICAg
KEpTQzo6U2hhcmVkU3ltYm9sVGFibGU6OlNoYXJlZFN5bWJvbFRhYmxlKToKKwogMjAxMi0wOC0y
MiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIFNl
cGFyYXRlIE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEgZnJvbSBNYXJrU3RhY2sKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmgJKHJldmlzaW9u
IDEyNjM2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNDksOCArNDksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgICwgbV9jYWNoZShjYWNoZSA/IGNhY2hlIDogbmV3IFNvdXJjZVByb3ZpZGVyQ2FjaGUp
CiAgICAgICAgICAgICAsIG1fY2FjaGVPd25lZCghY2FjaGUpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHR1cm5PZmZWZXJpZmllcigpOwogICAgICAgICB9CisKICAgICAgICAgdmlydHVhbCB+U291
cmNlUHJvdmlkZXIoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9jYWNoZU93bmVkKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sVGFibGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJsZS5oCShyZXZp
c2lvbiAxMjYzNjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xUYWJs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzAsNyArMzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRTeW1ib2xUYWJsZT4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXJlZFN5bWJvbFRhYmxlKTsgfQogICAg
IHByaXZhdGU6Ci0gICAgICAgIFNoYXJlZFN5bWJvbFRhYmxlKCkgeyB0dXJuT2ZmVmVyaWZpZXIo
KTsgfQorICAgICAgICBTaGFyZWRTeW1ib2xUYWJsZSgpIHsgfQogICAgIH07CiAgICAgCiB9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEyNjM2OCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA4LTIyICBHZW9mZnJleSBHYXJlbiAgPGdnYXJl
bkBhcHBsZS5jb20+CisKKyAgICAgICAgVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllciBzaG91bGQg
YmUgb3B0LWluLCBub3Qgb3B0LW91dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTQ3NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBh
cyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlv
bnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIEFOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisKIDIwMTItMDctMTggIEtyaXN0w7NmIEtvc3p0ecOzICA8a2tyaXN0b2ZAaW5mLnUt
c3plZ2VkLmh1PgogCiAgICAgICAgIFtRdF0gQnVpbGRmaXggYWZ0ZXIgcjEyMjg3MC4KSW5kZXg6
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMjYzNjgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA4LTIyICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBh
cHBsZS5jb20+CisKKyAgICAgICAgVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllciBzaG91bGQgYmUg
b3B0LWluLCBub3Qgb3B0LW91dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTQ3NjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZWJLaXQncyBKYXZhU2NyaXB0IGVuZ2luZSBzdXBwb3J0cyB1c2Ugb24gbXVs
dGlwbGUgdGhyZWFkcywgc28gZGVmYXVsdC1vbgorICAgICAgICBpcyBub3QgYXBwcm9wcmlhdGUg
Zm9yIG1vc3Qgb2Ygb3VyIG9iamVjdHMsIGFuZCBpdCBjYXVzZXMgbG90cyBvZiBzdXByaW91cwor
ICAgICAgICBhc3NlcnRpb25zLgorCisgICAgICAgICogd3RmL01ldGFBbGxvY2F0b3IuY3BwOgor
ICAgICAgICAoV1RGOjpNZXRhQWxsb2NhdG9ySGFuZGxlOjpNZXRhQWxsb2NhdG9ySGFuZGxlKTog
Tm8gbmVlZCB0byB0dXJuIG9mZgorICAgICAgICBleHBsaWNpdGx5LCBzaW5jZSBpdCdzIG9mZiBi
eSBkZWZhdWx0IG5vdy4KKworICAgICAgICAqIHd0Zi9UaHJlYWRSZXN0cmljdGlvblZlcmlmaWVy
Lmg6CisgICAgICAgIChXVEY6OlRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXI6OlRocmVhZFJlc3Ry
aWN0aW9uVmVyaWZpZXIpOiBUdXJuIG9mZiBieSBkZWZhdWx0LgorCisgICAgICAgIChXVEY6OlRo
cmVhZFJlc3RyaWN0aW9uVmVyaWZpZXI6OnNldE11dGV4TW9kZSk6CisgICAgICAgIChXVEY6OlRo
cmVhZFJlc3RyaWN0aW9uVmVyaWZpZXI6OnNldERpc3BhdGNoUXVldWVNb2RlKToKKyAgICAgICAg
KFdURjo6VGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllcjo6dHVybk9mZlZlcmlmaWNhdGlvbik6IFRo
ZXNlIGFzc2VydGlvbnMKKyAgICAgICAgYWJvdXQgc3RhdGUgdHJhbnNpdGlvbnMgd2VyZSBpbmNv
bnNpc3RlbnQgd2l0aCBlYWNoIG90aGVyLCBhbmQgaW1wb3NzaWJsZQorICAgICAgICB0byBtYWlu
dGFpbiB3aXRoIGRlZmF1bHQgb2ZmLCBzbyBJIHJlbW92ZWQgdGhlbS4KKwogMjAxMi0wOC0yMiAg
QWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAgICAg
ICBbUXRdIE9wdGlvbmFsbHkgc3VwcG9ydCBzbW9vdGgtc2Nyb2xsaW5nIG9uIGFsbCBwbGF0Zm9y
bXMKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL01ldGFBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL01ldGFBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAxMjYzNjgpCisrKyBT
b3VyY2UvV1RGL3d0Zi9NZXRhQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNyAr
NzksNiBAQCBNZXRhQWxsb2NhdG9ySGFuZGxlOjpNZXRhQWxsb2NhdG9ySGFuZGxlCiAgICAgQVNT
RVJUKGFsbG9jYXRvcik7CiAgICAgQVNTRVJUKHN0YXJ0KTsKICAgICBBU1NFUlQoc2l6ZUluQnl0
ZXMpOwotICAgIHR1cm5PZmZWZXJpZmllcigpOwogfQogCiBNZXRhQWxsb2NhdG9ySGFuZGxlOjp+
TWV0YUFsbG9jYXRvckhhbmRsZSgpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9UaHJlYWRSZXN0cmlj
dGlvblZlcmlmaWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVGhyZWFkUmVzdHJp
Y3Rpb25WZXJpZmllci5oCShyZXZpc2lvbiAxMjYzNjgpCisrKyBTb3VyY2UvV1RGL3d0Zi9UaHJl
YWRSZXN0cmljdGlvblZlcmlmaWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUwLDExIEBA
IG5hbWVzcGFjZSBXVEYgewogY2xhc3MgVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllciB7CiBwdWJs
aWM6CiAgICAgVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllcigpCisjaWYgVVNFKEpTQykKKyAgICAg
ICAgOiBtX21vZGUoTm9WZXJpZmljYXRpb25Nb2RlKQorI2Vsc2UKICAgICAgICAgOiBtX21vZGUo
U2luZ2xlVGhyZWFkVmVyaWZpY2F0aW9uTW9kZSkKKyNlbmRpZgogICAgICAgICAsIG1fc2hhcmVk
KGZhbHNlKQogICAgICAgICAsIG1fb3duaW5nVGhyZWFkKDApCiAgICAgICAgICwgbV9tdXRleCgw
KQpAQCAtNzAsNyArNzQsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldE11dGV4TW9kZShNdXRl
eCYgbXV0ZXgpCiAgICAgewotICAgICAgICBBU1NFUlQobV9tb2RlID09IFNpbmdsZVRocmVhZFZl
cmlmaWNhdGlvbk1vZGUgfHwgKG1fbW9kZSA9PSBNdXRleFZlcmlmaWNhdGlvbk1vZGUgJiYgJm11
dGV4ID09IG1fbXV0ZXgpKTsKICAgICAgICAgbV9tb2RlID0gTXV0ZXhWZXJpZmljYXRpb25Nb2Rl
OwogICAgICAgICBtX211dGV4ID0gJm11dGV4OwogICAgIH0KQEAgLTc4LDcgKzgxLDYgQEAgcHVi
bGljOgogI2lmIEhBVkUoRElTUEFUQ0hfSCkKICAgICB2b2lkIHNldERpc3BhdGNoUXVldWVNb2Rl
KGRpc3BhdGNoX3F1ZXVlX3QgcXVldWUpCiAgICAgewotICAgICAgICBBU1NFUlQobV9tb2RlID09
IFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGUpOwogICAgICAgICBtX21vZGUgPSBTaW5nbGVE
aXNwYXRjaFF1ZXVlVmVyaWZpY2F0aW9uTW9kZTsKICAgICAgICAgbV9vd25pbmdRdWV1ZSA9IHF1
ZXVlOwogICAgICAgICBkaXNwYXRjaF9yZXRhaW4obV9vd25pbmdRdWV1ZSk7CkBAIC04Nyw3ICs4
OSw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdHVybk9mZlZlcmlmaWNhdGlvbigpCiAgICAgewot
ICAgICAgICBBU1NFUlQobV9tb2RlID09IFNpbmdsZVRocmVhZFZlcmlmaWNhdGlvbk1vZGUpOwog
ICAgICAgICBtX21vZGUgPSBOb1ZlcmlmaWNhdGlvbk1vZGU7CiAgICAgfQogCg==
</data>
<flag name="review"
          id="170513"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>