<?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>61516</bug_id>
          
          <creation_ts>2011-05-26 03:24:39 -0700</creation_ts>
          <short_desc>LevelDB: turn on paranoid checks and verify checksums, log errors</short_desc>
          <delta_ts>2011-05-27 03:37:43 -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="Hans Wennborg">hans</reporter>
          <assigned_to name="Hans Wennborg">hans</assigned_to>
          <cc>andreip</cc>
    
    <cc>dgrogan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>410330</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-05-26 03:24:39 -0700</bug_when>
    <thetext>LevelDB: turn on paranoid checks and verify checksums, log errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410332</commentid>
    <comment_count>1</comment_count>
      <attachid>94953</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-05-26 03:27:58 -0700</bug_when>
    <thetext>Created attachment 94953
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410742</commentid>
    <comment_count>2</comment_count>
      <attachid>94953</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-05-26 12:48:11 -0700</bug_when>
    <thetext>Comment on attachment 94953
Patch

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

LGTM

&gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:130
&gt; +    if (s.IsNotFound())

What circumstances cause a Put to return IsNotFound?

&gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:259
&gt; +    readOptions.verify_checksums = true;

Do you know how much performance impact this is expected to have?  What happens if a checksum doesn&apos;t check out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411272</commentid>
    <comment_count>3</comment_count>
      <attachid>95143</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-05-27 01:48:08 -0700</bug_when>
    <thetext>Created attachment 95143
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411275</commentid>
    <comment_count>4</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-05-27 01:49:39 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 94953 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=94953&amp;action=review
&gt; 
&gt; LGTM
&gt; 
&gt; &gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:130
&gt; &gt; +    if (s.IsNotFound())
&gt; 
&gt; What circumstances cause a Put to return IsNotFound?
None; good catch. Removed.
&gt; 
&gt; &gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:259
&gt; &gt; +    readOptions.verify_checksums = true;
&gt; 
&gt; Do you know how much performance impact this is expected to have?  What happens if a checksum doesn&apos;t check out?

Then operations start failing with a Status that indicated corruption.

I don&apos;t know the exact performance impact, but I don&apos;t expect it to be bad. The checksum is just a CRC, and I&apos;d rather turn it on now and consider relaxing it later when we start tuning if it turns up as a bottleneck.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411301</commentid>
    <comment_count>5</comment_count>
      <attachid>95143</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-05-27 03:11:28 -0700</bug_when>
    <thetext>Comment on attachment 95143
Patch

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

&gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:257
&gt; +    readOptions.verify_checksums = true;

To David&apos;s point, perhaps just add a FIXME here mentioning that removing this might be a perf win once the API is more stable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411310</commentid>
    <comment_count>6</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-05-27 03:36:55 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 95143 [details])
Thanks for the review!


&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=95143&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:257
&gt; &gt; +    readOptions.verify_checksums = true;
&gt; 
&gt; To David&apos;s point, perhaps just add a FIXME here mentioning that removing this might be a perf win once the API is more stable.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411311</commentid>
    <comment_count>7</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-05-27 03:37:43 -0700</bug_when>
    <thetext>Committed r87490: &lt;http://trac.webkit.org/changeset/87490&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94953</attachid>
            <date>2011-05-26 03:27:58 -0700</date>
            <delta_ts>2011-05-27 01:48:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61516-20110526112756.patch</filename>
            <type>text/plain</type>
            <size>6691</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODczNzEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwOTI1MWQyNTJiMzI4NzA2
YTA0NTYzNmJlZTA3Nzc3ZDBkYjA4ZWE5Li45ODVjOWE0ODg0ZmVmOTkwZjBmYmMzZjA5MGVhNGQ5
NDI0ZTM3N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDUtMjYgIEhhbnMg
V2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBMZXZlbERCOiB0dXJuIG9uIHBhcmFub2lkIGNoZWNrcyBh
bmQgdmVyaWZ5IGNoZWNrc3VtcywgbG9nIGVycm9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE1MTYKKworICAgICAgICBUaGlzIGFsbG93cyBmb3Ig
ZGV0ZWN0aW9uIG9mIGNvcnJ1cHRlZCBkYXRhYmFzZXMuCisgICAgICAgIEV2ZW4gaWYgd2UgY2Fu
J3QgcmVjb3ZlciBmcm9tIGEgY29ycnVwdGVkIGRhdGFiYXNlLCBkaXNjb3ZlcmluZyB0aGUKKyAg
ICAgICAgcHJvYmxlbSBpcyBhIHN0ZXAgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbi4KKworICAgICAg
ICBObyBuZXcgZnVuY3Rpb25hbGl0eSwgbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogcGxhdGZv
cm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxE
QkRhdGFiYXNlOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkxldmVsREJEYXRhYmFzZTo6cHV0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxldmVsREJEYXRhYmFzZTo6cmVtb3ZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxldmVsREJEYXRhYmFzZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkxldmVs
REJEYXRhYmFzZTo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6SXRlcmF0b3JJbXBsOjpjaGVj
a1N0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpJdGVyYXRvckltcGw6OnNlZWtUb0xhc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SXRlcmF0b3JJbXBsOjpzZWVrKToKKyAgICAgICAgKFdlYkNvcmU6
Okl0ZXJhdG9ySW1wbDo6bmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJdGVyYXRvckltcGw6OnBy
ZXYpOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQkRhdGFiYXNlOjpjcmVhdGVJdGVyYXRvcik6
CisKIDIwMTEtMDUtMjYgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcAppbmRleCAzODZmNWRkOTk1NGYz
MDBlMjE4N2NkNDE4YzQwNTIyY2QyNjJmY2M0Li42NTA4MmVjYTg1MmJiYWM1MWNhNzUzMDUzNjlj
Mjc0ZjAxYzY2MmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRi
L0xldmVsREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxk
Yi9MZXZlbERCRGF0YWJhc2UuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTGV2ZWxE
Qkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQlNsaWNlLmgiCiAjaW5jbHVkZSAiTGV2ZWxE
QldyaXRlQmF0Y2guaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8bGV2ZWxkYi9j
b21wYXJhdG9yLmg+CiAjaW5jbHVkZSA8bGV2ZWxkYi9kYi5oPgogI2luY2x1ZGUgPGxldmVsZGIv
c2xpY2UuaD4KQEAgLTk4LDE3ICs5OSwxOSBAQCBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4g
TGV2ZWxEQkRhdGFiYXNlOjpvcGVuKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0CiB7CiAg
ICAgT3duUHRyPENvbXBhcmF0b3JBZGFwdGVyPiBjb21wYXJhdG9yQWRhcHRlciA9IGFkb3B0UHRy
KG5ldyBDb21wYXJhdG9yQWRhcHRlcihjb21wYXJhdG9yKSk7CiAKLSAgICBPd25QdHI8TGV2ZWxE
QkRhdGFiYXNlPiByZXN1bHQgPSBhZG9wdFB0cihuZXcgTGV2ZWxEQkRhdGFiYXNlKTsKLQogICAg
IGxldmVsZGI6Ok9wdGlvbnMgb3B0aW9uczsKICAgICBvcHRpb25zLmNvbXBhcmF0b3IgPSBjb21w
YXJhdG9yQWRhcHRlci5nZXQoKTsKICAgICBvcHRpb25zLmNyZWF0ZV9pZl9taXNzaW5nID0gdHJ1
ZTsKKyAgICBvcHRpb25zLnBhcmFub2lkX2NoZWNrcyA9IHRydWU7CiAgICAgbGV2ZWxkYjo6REIq
IGRiOwotICAgIGxldmVsZGI6OlN0YXR1cyBzID0gbGV2ZWxkYjo6REI6Ok9wZW4ob3B0aW9ucywg
ZmlsZU5hbWUudXRmOCgpLmRhdGEoKSwgJmRiKTsKKyAgICBjb25zdCBsZXZlbGRiOjpTdGF0dXMg
cyA9IGxldmVsZGI6OkRCOjpPcGVuKG9wdGlvbnMsIGZpbGVOYW1lLnV0ZjgoKS5kYXRhKCksICZk
Yik7CiAKLSAgICBpZiAoIXMub2soKSkKKyAgICBpZiAoIXMub2soKSkgeworICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBvcGVuIExldmVsREIgZGF0YWJhc2UgZnJvbSAlczogJXMiLCBmaWxl
TmFtZS5hc2NpaSgpLmRhdGEoKSwgcy5Ub1N0cmluZygpLmNfc3RyKCkpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CiAKKyAgICBPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiByZXN1bHQg
PSBhZG9wdFB0cihuZXcgTGV2ZWxEQkRhdGFiYXNlKTsKICAgICByZXN1bHQtPm1fZGIgPSBhZG9w
dFB0cihkYik7CiAgICAgcmVzdWx0LT5tX2NvbXBhcmF0b3JBZGFwdGVyID0gY29tcGFyYXRvckFk
YXB0ZXIucmVsZWFzZSgpOwogICAgIHJlc3VsdC0+bV9jb21wYXJhdG9yID0gY29tcGFyYXRvcjsK
QEAgLTEyMSw3ICsxMjQsMTMgQEAgYm9vbCBMZXZlbERCRGF0YWJhc2U6OnB1dChjb25zdCBMZXZl
bERCU2xpY2UmIGtleSwgY29uc3QgVmVjdG9yPGNoYXI+JiB2YWx1ZSkKICAgICBsZXZlbGRiOjpX
cml0ZU9wdGlvbnMgd3JpdGVPcHRpb25zOwogICAgIHdyaXRlT3B0aW9ucy5zeW5jID0gdHJ1ZTsK
IAotICAgIHJldHVybiBtX2RiLT5QdXQod3JpdGVPcHRpb25zLCBtYWtlU2xpY2Uoa2V5KSwgbWFr
ZVNsaWNlKHZhbHVlKSkub2soKTsKKyAgICBjb25zdCBsZXZlbGRiOjpTdGF0dXMgcyA9IG1fZGIt
PlB1dCh3cml0ZU9wdGlvbnMsIG1ha2VTbGljZShrZXkpLCBtYWtlU2xpY2UodmFsdWUpKTsKKyAg
ICBpZiAocy5vaygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAocy5Jc05vdEZvdW5k
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBMT0dfRVJST1IoIkxldmVsREIgcHV0IGZh
aWxlZDogJXMiLCBzLlRvU3RyaW5nKCkuY19zdHIoKSk7CisgICAgcmV0dXJuIGZhbHNlOwogfQog
CiBib29sIExldmVsREJEYXRhYmFzZTo6cmVtb3ZlKGNvbnN0IExldmVsREJTbGljZSYga2V5KQpA
QCAtMTI5LDE3ICsxMzgsMzAgQEAgYm9vbCBMZXZlbERCRGF0YWJhc2U6OnJlbW92ZShjb25zdCBM
ZXZlbERCU2xpY2UmIGtleSkKICAgICBsZXZlbGRiOjpXcml0ZU9wdGlvbnMgd3JpdGVPcHRpb25z
OwogICAgIHdyaXRlT3B0aW9ucy5zeW5jID0gdHJ1ZTsKIAotICAgIHJldHVybiBtX2RiLT5EZWxl
dGUod3JpdGVPcHRpb25zLCBtYWtlU2xpY2Uoa2V5KSkub2soKTsKKyAgICBjb25zdCBsZXZlbGRi
OjpTdGF0dXMgcyA9IG1fZGItPkRlbGV0ZSh3cml0ZU9wdGlvbnMsIG1ha2VTbGljZShrZXkpKTsK
KyAgICBpZiAocy5vaygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAocy5Jc05vdEZv
dW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBMT0dfRVJST1IoIkxldmVsREIgcmVt
b3ZlIGZhaWxlZDogJXMiLCBzLlRvU3RyaW5nKCkuY19zdHIoKSk7CisgICAgcmV0dXJuIGZhbHNl
OwogfQogCiBib29sIExldmVsREJEYXRhYmFzZTo6Z2V0KGNvbnN0IExldmVsREJTbGljZSYga2V5
LCBWZWN0b3I8Y2hhcj4mIHZhbHVlKQogewogICAgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKLSAgICBp
ZiAoIW1fZGItPkdldChsZXZlbGRiOjpSZWFkT3B0aW9ucygpLCBtYWtlU2xpY2Uoa2V5KSwgJnJl
c3VsdCkub2soKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGxldmVsZGI6OlJlYWRPcHRp
b25zIHJlYWRPcHRpb25zOworICAgIHJlYWRPcHRpb25zLnZlcmlmeV9jaGVja3N1bXMgPSB0cnVl
OwogCi0gICAgdmFsdWUgPSBtYWtlVmVjdG9yKHJlc3VsdCk7Ci0gICAgcmV0dXJuIHRydWU7Cisg
ICAgY29uc3QgbGV2ZWxkYjo6U3RhdHVzIHMgPSBtX2RiLT5HZXQocmVhZE9wdGlvbnMsIG1ha2VT
bGljZShrZXkpLCAmcmVzdWx0KTsKKyAgICBpZiAocy5vaygpKSB7CisgICAgICAgIHZhbHVlID0g
bWFrZVZlY3RvcihyZXN1bHQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgaWYg
KHMuSXNOb3RGb3VuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgTE9HX0VSUk9SKCJM
ZXZlbERCIGdldCBmYWlsZWQ6ICVzIiwgcy5Ub1N0cmluZygpLmNfc3RyKCkpOworICAgIHJldHVy
biBmYWxzZTsKIH0KIAogYm9vbCBMZXZlbERCRGF0YWJhc2U6OndyaXRlKExldmVsREJXcml0ZUJh
dGNoJiB3cml0ZUJhdGNoKQpAQCAtMTQ3LDcgKzE2OSwxMSBAQCBib29sIExldmVsREJEYXRhYmFz
ZTo6d3JpdGUoTGV2ZWxEQldyaXRlQmF0Y2gmIHdyaXRlQmF0Y2gpCiAgICAgbGV2ZWxkYjo6V3Jp
dGVPcHRpb25zIHdyaXRlT3B0aW9uczsKICAgICB3cml0ZU9wdGlvbnMuc3luYyA9IHRydWU7CiAK
LSAgICByZXR1cm4gbV9kYi0+V3JpdGUod3JpdGVPcHRpb25zLCB3cml0ZUJhdGNoLm1fd3JpdGVC
YXRjaC5nZXQoKSkub2soKTsKKyAgICBjb25zdCBsZXZlbGRiOjpTdGF0dXMgcyA9IG1fZGItPldy
aXRlKHdyaXRlT3B0aW9ucywgd3JpdGVCYXRjaC5tX3dyaXRlQmF0Y2guZ2V0KCkpOworICAgIGlm
IChzLm9rKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIExPR19FUlJPUigiTGV2ZWxEQiB3
cml0ZSBmYWlsZWQ6ICVzIiwgcy5Ub1N0cmluZygpLmNfc3RyKCkpOworICAgIHJldHVybiBmYWxz
ZTsKIH0KIAogbmFtZXNwYWNlIHsKQEAgLTE2Niw2ICsxOTIsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpMZXZlbERCRGF0YWJhc2U7CiAgICAgSXRlcmF0
b3JJbXBsKFBhc3NPd25QdHI8bGV2ZWxkYjo6SXRlcmF0b3I+KTsKKyAgICB2b2lkIGNoZWNrU3Rh
dHVzKCk7CiAKICAgICBPd25QdHI8bGV2ZWxkYjo6SXRlcmF0b3I+IG1faXRlcmF0b3I7CiB9OwpA
QCAtMTc2LDYgKzIwMywxMyBAQCBJdGVyYXRvckltcGw6Okl0ZXJhdG9ySW1wbChQYXNzT3duUHRy
PGxldmVsZGI6Okl0ZXJhdG9yPiBpdCkKIHsKIH0KIAordm9pZCBJdGVyYXRvckltcGw6OmNoZWNr
U3RhdHVzKCkKK3sKKyAgICBjb25zdCBsZXZlbGRiOjpTdGF0dXMgcyA9IG1faXRlcmF0b3ItPnN0
YXR1cygpOworICAgIGlmICghcy5vaygpKQorICAgICAgICBMT0dfRVJST1IoIkxldmVsREIgaXRl
cmF0b3IgZXJyb3I6ICVzIiwgcy5Ub1N0cmluZygpLmNfc3RyKCkpOworfQorCiBib29sIEl0ZXJh
dG9ySW1wbDo6aXNWYWxpZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faXRlcmF0b3ItPlZhbGlk
KCk7CkBAIC0xODQsMjMgKzIxOCwyNyBAQCBib29sIEl0ZXJhdG9ySW1wbDo6aXNWYWxpZCgpIGNv
bnN0CiB2b2lkIEl0ZXJhdG9ySW1wbDo6c2Vla1RvTGFzdCgpCiB7CiAgICAgbV9pdGVyYXRvci0+
U2Vla1RvTGFzdCgpOworICAgIGNoZWNrU3RhdHVzKCk7CiB9CiAKIHZvaWQgSXRlcmF0b3JJbXBs
OjpzZWVrKGNvbnN0IExldmVsREJTbGljZSYgdGFyZ2V0KQogewogICAgIG1faXRlcmF0b3ItPlNl
ZWsobWFrZVNsaWNlKHRhcmdldCkpOworICAgIGNoZWNrU3RhdHVzKCk7CiB9CiAKIHZvaWQgSXRl
cmF0b3JJbXBsOjpuZXh0KCkKIHsKICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKICAgICBtX2l0ZXJh
dG9yLT5OZXh0KCk7CisgICAgY2hlY2tTdGF0dXMoKTsKIH0KIAogdm9pZCBJdGVyYXRvckltcGw6
OnByZXYoKQogewogICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogICAgIG1faXRlcmF0b3ItPlByZXYo
KTsKKyAgICBjaGVja1N0YXR1cygpOwogfQogCiBMZXZlbERCU2xpY2UgSXRlcmF0b3JJbXBsOjpr
ZXkoKSBjb25zdApAQCAtMjE3LDcgKzI1NSw5IEBAIExldmVsREJTbGljZSBJdGVyYXRvckltcGw6
OnZhbHVlKCkgY29uc3QKIAogUGFzc093blB0cjxMZXZlbERCSXRlcmF0b3I+IExldmVsREJEYXRh
YmFzZTo6Y3JlYXRlSXRlcmF0b3IoKQogewotICAgIE93blB0cjxsZXZlbGRiOjpJdGVyYXRvcj4g
aSA9IGFkb3B0UHRyKG1fZGItPk5ld0l0ZXJhdG9yKGxldmVsZGI6OlJlYWRPcHRpb25zKCkpKTsK
KyAgICBsZXZlbGRiOjpSZWFkT3B0aW9ucyByZWFkT3B0aW9uczsKKyAgICByZWFkT3B0aW9ucy52
ZXJpZnlfY2hlY2tzdW1zID0gdHJ1ZTsKKyAgICBPd25QdHI8bGV2ZWxkYjo6SXRlcmF0b3I+IGkg
PSBhZG9wdFB0cihtX2RiLT5OZXdJdGVyYXRvcihyZWFkT3B0aW9ucykpOwogICAgIGlmICghaSkg
Ly8gRklYTUU6IERvdWJsZSBjaGVjayBpZiB3ZSBhY3R1YWxseSBuZWVkIHRvIGNoZWNrIHRoaXMu
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBhZG9wdFB0cihuZXcgSXRlcmF0
b3JJbXBsKGkucmVsZWFzZSgpKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95143</attachid>
            <date>2011-05-27 01:48:08 -0700</date>
            <delta_ts>2011-05-27 03:11:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61516-20110527094806.patch</filename>
            <type>text/plain</type>
            <size>6643</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODczNzEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwOTI1MWQyNTJiMzI4NzA2
YTA0NTYzNmJlZTA3Nzc3ZDBkYjA4ZWE5Li45ODVjOWE0ODg0ZmVmOTkwZjBmYmMzZjA5MGVhNGQ5
NDI0ZTM3N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDUtMjYgIEhhbnMg
V2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBMZXZlbERCOiB0dXJuIG9uIHBhcmFub2lkIGNoZWNrcyBh
bmQgdmVyaWZ5IGNoZWNrc3VtcywgbG9nIGVycm9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE1MTYKKworICAgICAgICBUaGlzIGFsbG93cyBmb3Ig
ZGV0ZWN0aW9uIG9mIGNvcnJ1cHRlZCBkYXRhYmFzZXMuCisgICAgICAgIEV2ZW4gaWYgd2UgY2Fu
J3QgcmVjb3ZlciBmcm9tIGEgY29ycnVwdGVkIGRhdGFiYXNlLCBkaXNjb3ZlcmluZyB0aGUKKyAg
ICAgICAgcHJvYmxlbSBpcyBhIHN0ZXAgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbi4KKworICAgICAg
ICBObyBuZXcgZnVuY3Rpb25hbGl0eSwgbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogcGxhdGZv
cm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxE
QkRhdGFiYXNlOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OkxldmVsREJEYXRhYmFzZTo6cHV0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxldmVsREJEYXRhYmFzZTo6cmVtb3ZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkxldmVsREJEYXRhYmFzZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkxldmVs
REJEYXRhYmFzZTo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6SXRlcmF0b3JJbXBsOjpjaGVj
a1N0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpJdGVyYXRvckltcGw6OnNlZWtUb0xhc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SXRlcmF0b3JJbXBsOjpzZWVrKToKKyAgICAgICAgKFdlYkNvcmU6
Okl0ZXJhdG9ySW1wbDo6bmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJdGVyYXRvckltcGw6OnBy
ZXYpOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQkRhdGFiYXNlOjpjcmVhdGVJdGVyYXRvcik6
CisKIDIwMTEtMDUtMjYgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcAppbmRleCAzODZmNWRkOTk1NGYz
MDBlMjE4N2NkNDE4YzQwNTIyY2QyNjJmY2M0Li5iMjFiYmJlNmM1YjczMjUxYTQ2MTA0YzkzYzEx
NGIzYTdmNjM4NzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRi
L0xldmVsREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxk
Yi9MZXZlbERCRGF0YWJhc2UuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTGV2ZWxE
Qkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQlNsaWNlLmgiCiAjaW5jbHVkZSAiTGV2ZWxE
QldyaXRlQmF0Y2guaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8bGV2ZWxkYi9j
b21wYXJhdG9yLmg+CiAjaW5jbHVkZSA8bGV2ZWxkYi9kYi5oPgogI2luY2x1ZGUgPGxldmVsZGIv
c2xpY2UuaD4KQEAgLTk4LDE3ICs5OSwxOSBAQCBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4g
TGV2ZWxEQkRhdGFiYXNlOjpvcGVuKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0CiB7CiAg
ICAgT3duUHRyPENvbXBhcmF0b3JBZGFwdGVyPiBjb21wYXJhdG9yQWRhcHRlciA9IGFkb3B0UHRy
KG5ldyBDb21wYXJhdG9yQWRhcHRlcihjb21wYXJhdG9yKSk7CiAKLSAgICBPd25QdHI8TGV2ZWxE
QkRhdGFiYXNlPiByZXN1bHQgPSBhZG9wdFB0cihuZXcgTGV2ZWxEQkRhdGFiYXNlKTsKLQogICAg
IGxldmVsZGI6Ok9wdGlvbnMgb3B0aW9uczsKICAgICBvcHRpb25zLmNvbXBhcmF0b3IgPSBjb21w
YXJhdG9yQWRhcHRlci5nZXQoKTsKICAgICBvcHRpb25zLmNyZWF0ZV9pZl9taXNzaW5nID0gdHJ1
ZTsKKyAgICBvcHRpb25zLnBhcmFub2lkX2NoZWNrcyA9IHRydWU7CiAgICAgbGV2ZWxkYjo6REIq
IGRiOwotICAgIGxldmVsZGI6OlN0YXR1cyBzID0gbGV2ZWxkYjo6REI6Ok9wZW4ob3B0aW9ucywg
ZmlsZU5hbWUudXRmOCgpLmRhdGEoKSwgJmRiKTsKKyAgICBjb25zdCBsZXZlbGRiOjpTdGF0dXMg
cyA9IGxldmVsZGI6OkRCOjpPcGVuKG9wdGlvbnMsIGZpbGVOYW1lLnV0ZjgoKS5kYXRhKCksICZk
Yik7CiAKLSAgICBpZiAoIXMub2soKSkKKyAgICBpZiAoIXMub2soKSkgeworICAgICAgICBMT0df
RVJST1IoIkZhaWxlZCB0byBvcGVuIExldmVsREIgZGF0YWJhc2UgZnJvbSAlczogJXMiLCBmaWxl
TmFtZS5hc2NpaSgpLmRhdGEoKSwgcy5Ub1N0cmluZygpLmNfc3RyKCkpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CiAKKyAgICBPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiByZXN1bHQg
PSBhZG9wdFB0cihuZXcgTGV2ZWxEQkRhdGFiYXNlKTsKICAgICByZXN1bHQtPm1fZGIgPSBhZG9w
dFB0cihkYik7CiAgICAgcmVzdWx0LT5tX2NvbXBhcmF0b3JBZGFwdGVyID0gY29tcGFyYXRvckFk
YXB0ZXIucmVsZWFzZSgpOwogICAgIHJlc3VsdC0+bV9jb21wYXJhdG9yID0gY29tcGFyYXRvcjsK
QEAgLTEyMSw3ICsxMjQsMTEgQEAgYm9vbCBMZXZlbERCRGF0YWJhc2U6OnB1dChjb25zdCBMZXZl
bERCU2xpY2UmIGtleSwgY29uc3QgVmVjdG9yPGNoYXI+JiB2YWx1ZSkKICAgICBsZXZlbGRiOjpX
cml0ZU9wdGlvbnMgd3JpdGVPcHRpb25zOwogICAgIHdyaXRlT3B0aW9ucy5zeW5jID0gdHJ1ZTsK
IAotICAgIHJldHVybiBtX2RiLT5QdXQod3JpdGVPcHRpb25zLCBtYWtlU2xpY2Uoa2V5KSwgbWFr
ZVNsaWNlKHZhbHVlKSkub2soKTsKKyAgICBjb25zdCBsZXZlbGRiOjpTdGF0dXMgcyA9IG1fZGIt
PlB1dCh3cml0ZU9wdGlvbnMsIG1ha2VTbGljZShrZXkpLCBtYWtlU2xpY2UodmFsdWUpKTsKKyAg
ICBpZiAocy5vaygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBMT0dfRVJST1IoIkxldmVs
REIgcHV0IGZhaWxlZDogJXMiLCBzLlRvU3RyaW5nKCkuY19zdHIoKSk7CisgICAgcmV0dXJuIGZh
bHNlOwogfQogCiBib29sIExldmVsREJEYXRhYmFzZTo6cmVtb3ZlKGNvbnN0IExldmVsREJTbGlj
ZSYga2V5KQpAQCAtMTI5LDE3ICsxMzYsMzAgQEAgYm9vbCBMZXZlbERCRGF0YWJhc2U6OnJlbW92
ZShjb25zdCBMZXZlbERCU2xpY2UmIGtleSkKICAgICBsZXZlbGRiOjpXcml0ZU9wdGlvbnMgd3Jp
dGVPcHRpb25zOwogICAgIHdyaXRlT3B0aW9ucy5zeW5jID0gdHJ1ZTsKIAotICAgIHJldHVybiBt
X2RiLT5EZWxldGUod3JpdGVPcHRpb25zLCBtYWtlU2xpY2Uoa2V5KSkub2soKTsKKyAgICBjb25z
dCBsZXZlbGRiOjpTdGF0dXMgcyA9IG1fZGItPkRlbGV0ZSh3cml0ZU9wdGlvbnMsIG1ha2VTbGlj
ZShrZXkpKTsKKyAgICBpZiAocy5vaygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAo
cy5Jc05vdEZvdW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBMT0dfRVJST1IoIkxl
dmVsREIgcmVtb3ZlIGZhaWxlZDogJXMiLCBzLlRvU3RyaW5nKCkuY19zdHIoKSk7CisgICAgcmV0
dXJuIGZhbHNlOwogfQogCiBib29sIExldmVsREJEYXRhYmFzZTo6Z2V0KGNvbnN0IExldmVsREJT
bGljZSYga2V5LCBWZWN0b3I8Y2hhcj4mIHZhbHVlKQogewogICAgIHN0ZDo6c3RyaW5nIHJlc3Vs
dDsKLSAgICBpZiAoIW1fZGItPkdldChsZXZlbGRiOjpSZWFkT3B0aW9ucygpLCBtYWtlU2xpY2Uo
a2V5KSwgJnJlc3VsdCkub2soKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGxldmVsZGI6
OlJlYWRPcHRpb25zIHJlYWRPcHRpb25zOworICAgIHJlYWRPcHRpb25zLnZlcmlmeV9jaGVja3N1
bXMgPSB0cnVlOwogCi0gICAgdmFsdWUgPSBtYWtlVmVjdG9yKHJlc3VsdCk7Ci0gICAgcmV0dXJu
IHRydWU7CisgICAgY29uc3QgbGV2ZWxkYjo6U3RhdHVzIHMgPSBtX2RiLT5HZXQocmVhZE9wdGlv
bnMsIG1ha2VTbGljZShrZXkpLCAmcmVzdWx0KTsKKyAgICBpZiAocy5vaygpKSB7CisgICAgICAg
IHZhbHVlID0gbWFrZVZlY3RvcihyZXN1bHQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgaWYgKHMuSXNOb3RGb3VuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgTE9H
X0VSUk9SKCJMZXZlbERCIGdldCBmYWlsZWQ6ICVzIiwgcy5Ub1N0cmluZygpLmNfc3RyKCkpOwor
ICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBMZXZlbERCRGF0YWJhc2U6OndyaXRlKExldmVs
REJXcml0ZUJhdGNoJiB3cml0ZUJhdGNoKQpAQCAtMTQ3LDcgKzE2NywxMSBAQCBib29sIExldmVs
REJEYXRhYmFzZTo6d3JpdGUoTGV2ZWxEQldyaXRlQmF0Y2gmIHdyaXRlQmF0Y2gpCiAgICAgbGV2
ZWxkYjo6V3JpdGVPcHRpb25zIHdyaXRlT3B0aW9uczsKICAgICB3cml0ZU9wdGlvbnMuc3luYyA9
IHRydWU7CiAKLSAgICByZXR1cm4gbV9kYi0+V3JpdGUod3JpdGVPcHRpb25zLCB3cml0ZUJhdGNo
Lm1fd3JpdGVCYXRjaC5nZXQoKSkub2soKTsKKyAgICBjb25zdCBsZXZlbGRiOjpTdGF0dXMgcyA9
IG1fZGItPldyaXRlKHdyaXRlT3B0aW9ucywgd3JpdGVCYXRjaC5tX3dyaXRlQmF0Y2guZ2V0KCkp
OworICAgIGlmIChzLm9rKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIExPR19FUlJPUigi
TGV2ZWxEQiB3cml0ZSBmYWlsZWQ6ICVzIiwgcy5Ub1N0cmluZygpLmNfc3RyKCkpOworICAgIHJl
dHVybiBmYWxzZTsKIH0KIAogbmFtZXNwYWNlIHsKQEAgLTE2Niw2ICsxOTAsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpMZXZlbERCRGF0YWJhc2U7CiAg
ICAgSXRlcmF0b3JJbXBsKFBhc3NPd25QdHI8bGV2ZWxkYjo6SXRlcmF0b3I+KTsKKyAgICB2b2lk
IGNoZWNrU3RhdHVzKCk7CiAKICAgICBPd25QdHI8bGV2ZWxkYjo6SXRlcmF0b3I+IG1faXRlcmF0
b3I7CiB9OwpAQCAtMTc2LDYgKzIwMSwxMyBAQCBJdGVyYXRvckltcGw6Okl0ZXJhdG9ySW1wbChQ
YXNzT3duUHRyPGxldmVsZGI6Okl0ZXJhdG9yPiBpdCkKIHsKIH0KIAordm9pZCBJdGVyYXRvcklt
cGw6OmNoZWNrU3RhdHVzKCkKK3sKKyAgICBjb25zdCBsZXZlbGRiOjpTdGF0dXMgcyA9IG1faXRl
cmF0b3ItPnN0YXR1cygpOworICAgIGlmICghcy5vaygpKQorICAgICAgICBMT0dfRVJST1IoIkxl
dmVsREIgaXRlcmF0b3IgZXJyb3I6ICVzIiwgcy5Ub1N0cmluZygpLmNfc3RyKCkpOworfQorCiBi
b29sIEl0ZXJhdG9ySW1wbDo6aXNWYWxpZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faXRlcmF0
b3ItPlZhbGlkKCk7CkBAIC0xODQsMjMgKzIxNiwyNyBAQCBib29sIEl0ZXJhdG9ySW1wbDo6aXNW
YWxpZCgpIGNvbnN0CiB2b2lkIEl0ZXJhdG9ySW1wbDo6c2Vla1RvTGFzdCgpCiB7CiAgICAgbV9p
dGVyYXRvci0+U2Vla1RvTGFzdCgpOworICAgIGNoZWNrU3RhdHVzKCk7CiB9CiAKIHZvaWQgSXRl
cmF0b3JJbXBsOjpzZWVrKGNvbnN0IExldmVsREJTbGljZSYgdGFyZ2V0KQogewogICAgIG1faXRl
cmF0b3ItPlNlZWsobWFrZVNsaWNlKHRhcmdldCkpOworICAgIGNoZWNrU3RhdHVzKCk7CiB9CiAK
IHZvaWQgSXRlcmF0b3JJbXBsOjpuZXh0KCkKIHsKICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKICAg
ICBtX2l0ZXJhdG9yLT5OZXh0KCk7CisgICAgY2hlY2tTdGF0dXMoKTsKIH0KIAogdm9pZCBJdGVy
YXRvckltcGw6OnByZXYoKQogewogICAgIEFTU0VSVChpc1ZhbGlkKCkpOwogICAgIG1faXRlcmF0
b3ItPlByZXYoKTsKKyAgICBjaGVja1N0YXR1cygpOwogfQogCiBMZXZlbERCU2xpY2UgSXRlcmF0
b3JJbXBsOjprZXkoKSBjb25zdApAQCAtMjE3LDcgKzI1Myw5IEBAIExldmVsREJTbGljZSBJdGVy
YXRvckltcGw6OnZhbHVlKCkgY29uc3QKIAogUGFzc093blB0cjxMZXZlbERCSXRlcmF0b3I+IExl
dmVsREJEYXRhYmFzZTo6Y3JlYXRlSXRlcmF0b3IoKQogewotICAgIE93blB0cjxsZXZlbGRiOjpJ
dGVyYXRvcj4gaSA9IGFkb3B0UHRyKG1fZGItPk5ld0l0ZXJhdG9yKGxldmVsZGI6OlJlYWRPcHRp
b25zKCkpKTsKKyAgICBsZXZlbGRiOjpSZWFkT3B0aW9ucyByZWFkT3B0aW9uczsKKyAgICByZWFk
T3B0aW9ucy52ZXJpZnlfY2hlY2tzdW1zID0gdHJ1ZTsKKyAgICBPd25QdHI8bGV2ZWxkYjo6SXRl
cmF0b3I+IGkgPSBhZG9wdFB0cihtX2RiLT5OZXdJdGVyYXRvcihyZWFkT3B0aW9ucykpOwogICAg
IGlmICghaSkgLy8gRklYTUU6IERvdWJsZSBjaGVjayBpZiB3ZSBhY3R1YWxseSBuZWVkIHRvIGNo
ZWNrIHRoaXMuCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgSXRlcmF0b3JJbXBsKGkucmVsZWFzZSgpKSk7Cg==
</data>
<flag name="review"
          id="88580"
          type_id="1"
          status="+"
          setter="tonyg"
    />
          </attachment>
      

    </bug>

</bugzilla>