<?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>102411</bug_id>
          
          <creation_ts>2012-11-15 10:17:43 -0800</creation_ts>
          <short_desc>Windows Fibers can corrupt the cached StackBounds</short_desc>
          <delta_ts>2012-11-15 10:53:51 -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>JavaScriptCore</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="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>benjamin</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>768244</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-11-15 10:17:43 -0800</bug_when>
    <thetext>Windows has support for something called fibers, which are like lightweight versions of threads. Multiple fibers can run within the context of a single thread and they have access to the same thread local storage but have different stacks. If we create a new JSGlobalContext on one fiber, then switch to another fiber and create a JSGlobalContext there, we will call initializeThreading() once for each new JSGlobalContext created. However, since these fibers are technically running inside the same thread, they will clobber each other&apos;s wtfThreadData(), which is stored using thread local storage. This can lead to corruption of the WTFThreadData structure for the fibers other than the last one to create a new JSGlobalContext, including the StackBounds data structure which is used during conservative scanning, among other things. This can lead to crashes during garbage collection on Windows if fibers are used.

A quick fix would be to always get a fresh StackBounds data structure when asking for it instead of using the cached version from the thread local storage. There is a larger problem in that these fibers can corrupt other WebKit data that uses thread local storage. We&apos;ll leave those theoretical fixes for future theoretical bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768284</commentid>
    <comment_count>1</comment_count>
      <attachid>174485</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-11-15 10:42:31 -0800</bug_when>
    <thetext>Created attachment 174485
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768291</commentid>
    <comment_count>2</comment_count>
      <attachid>174485</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-11-15 10:46:58 -0800</bug_when>
    <thetext>Comment on attachment 174485
Patch

r=me

This will fix cases that schedule one fiber at a time; we still don&apos;t support fiber A switching to fiber B recursively, since the stack will be discontiguous in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768297</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-11-15 10:49:48 -0800</bug_when>
    <thetext>Where are we using fibers???</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768300</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-11-15 10:50:59 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Where are we using fibers???

Clients of JSC on Windows could use fibers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768302</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-11-15 10:52:42 -0800</bug_when>
    <thetext>&lt;rdar://problem/12679639&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768304</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-11-15 10:53:51 -0800</bug_when>
    <thetext>Committed r134797: &lt;http://trac.webkit.org/changeset/134797&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174485</attachid>
            <date>2012-11-15 10:42:31 -0800</date>
            <delta_ts>2012-11-15 10:46:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102411-20121115104028.patch</filename>
            <type>text/plain</type>
            <size>2762</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMzQ3OTQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEyLTExLTE1ICBNYXJrIEhhaG5lbmJlcmcgIDxt
aGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgV2luZG93cyBGaWJlcnMgY2FuIGNvcnJ1
cHQgdGhlIGNhY2hlZCBTdGFja0JvdW5kcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAyNDExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2luZG93cyBoYXMgc3VwcG9ydCBmb3Igc29tZXRoaW5nIGNhbGxl
ZCBmaWJlcnMsIHdoaWNoIGFyZSBsaWtlIGxpZ2h0d2VpZ2h0IHZlcnNpb25zIG9mIAorICAgICAg
ICB0aHJlYWRzLiBNdWx0aXBsZSBmaWJlcnMgY2FuIHJ1biB3aXRoaW4gdGhlIGNvbnRleHQgb2Yg
YSBzaW5nbGUgdGhyZWFkIGFuZCB0aGV5IGhhdmUgYWNjZXNzIAorICAgICAgICB0byB0aGUgc2Ft
ZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSBidXQgaGF2ZSBkaWZmZXJlbnQgc3RhY2tzLiBJZiB3ZSBj
cmVhdGUgYSBuZXcgSlNHbG9iYWxDb250ZXh0IAorICAgICAgICBvbiBvbmUgZmliZXIsIHRoZW4g
c3dpdGNoIHRvIGFub3RoZXIgZmliZXIgYW5kIGNyZWF0ZSBhIEpTR2xvYmFsQ29udGV4dCB0aGVy
ZSwgd2Ugd2lsbCBjYWxsIAorICAgICAgICBpbml0aWFsaXplVGhyZWFkaW5nKCkgb25jZSBmb3Ig
ZWFjaCBuZXcgSlNHbG9iYWxDb250ZXh0IGNyZWF0ZWQuIEhvd2V2ZXIsIHNpbmNlIHRoZXNlIGZp
YmVycyAKKyAgICAgICAgYXJlIHRlY2huaWNhbGx5IHJ1bm5pbmcgaW5zaWRlIHRoZSBzYW1lIHRo
cmVhZCwgdGhleSB3aWxsIGNsb2JiZXIgZWFjaCBvdGhlcidzIHd0ZlRocmVhZERhdGEoKSwgCisg
ICAgICAgIHdoaWNoIGlzIHN0b3JlZCB1c2luZyB0aHJlYWQgbG9jYWwgc3RvcmFnZS4gVGhpcyBj
YW4gbGVhZCB0byBjb3JydXB0aW9uIG9mIHRoZSBXVEZUaHJlYWREYXRhIAorICAgICAgICBzdHJ1
Y3R1cmUgZm9yIHRoZSBmaWJlcnMgb3RoZXIgdGhhbiB0aGUgbGFzdCBvbmUgdG8gY3JlYXRlIGEg
bmV3IEpTR2xvYmFsQ29udGV4dCwgaW5jbHVkaW5nIAorICAgICAgICB0aGUgU3RhY2tCb3VuZHMg
ZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggaXMgdXNlZCBkdXJpbmcgY29uc2VydmF0aXZlIHNjYW5uaW5n
LCBhbW9uZyBvdGhlciB0aGluZ3MuIAorICAgICAgICBUaGlzIGNhbiBsZWFkIHRvIGNyYXNoZXMg
ZHVyaW5nIGdhcmJhZ2UgY29sbGVjdGlvbiBvbiBXaW5kb3dzIGlmIGZpYmVycyBhcmUgdXNlZC4K
KworICAgICAgICBBIHF1aWNrIGZpeCB3b3VsZCBiZSB0byBhbHdheXMgZ2V0IGEgZnJlc2ggU3Rh
Y2tCb3VuZHMgZGF0YSBzdHJ1Y3R1cmUgd2hlbiBhc2tpbmcgZm9yIGl0IAorICAgICAgICBpbnN0
ZWFkIG9mIHVzaW5nIHRoZSBjYWNoZWQgdmVyc2lvbiBmcm9tIHRoZSB0aHJlYWQgbG9jYWwgc3Rv
cmFnZS4gVGhlcmUgaXMgYSBsYXJnZXIgcHJvYmxlbSAKKyAgICAgICAgaW4gdGhhdCB0aGVzZSBm
aWJlcnMgY2FuIGNvcnJ1cHQgb3RoZXIgV2ViS2l0IGRhdGEgdGhhdCB1c2VzIHRocmVhZCBsb2Nh
bCBzdG9yYWdlLiBXZSdsbCBsZWF2ZSAKKyAgICAgICAgdGhvc2UgdGhlb3JldGljYWwgZml4ZXMg
Zm9yIGZ1dHVyZSB0aGVvcmV0aWNhbCBidWdzLgorCisgICAgICAgICogd3RmL1dURlRocmVhZERh
dGEuaDoKKyAgICAgICAgKFdURjo6V1RGVGhyZWFkRGF0YTo6c3RhY2spOiBXZSBub3cgcmVmcmVz
aCB0aGUgbV9zdGFja0JvdW5kcyBmaWVsZCB3aGVuZXZlciBzb21lYm9keSBhc2tzIGZvciAKKyAg
ICAgICAgdGhlIFN0YWNrQm91bmRzLgorCiAyMDEyLTExLTE1ICBNYWNpZWogU3RhY2hvd2lhayAg
PG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGFuIGVycm9uZW91cyBjb21tZW50IGFib3V0
IHRoZSBvcGVyYXRvcnMgcmVxdWlyZWQgYnkgYmluYXJ5U2VhcmNoCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9XVEZUaHJlYWREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV1RGVGhy
ZWFkRGF0YS5oCShyZXZpc2lvbiAxMzQ3OTIpCisrKyBTb3VyY2UvV1RGL3d0Zi9XVEZUaHJlYWRE
YXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw4ICsxMDUsMTMgQEAgcHVibGljOgogICAgICAg
ICBtX2N1cnJlbnRJZGVudGlmaWVyVGFibGUgPSBtX2RlZmF1bHRJZGVudGlmaWVyVGFibGU7CiAg
ICAgfQogCi0gICAgY29uc3QgU3RhY2tCb3VuZHMmIHN0YWNrKCkgY29uc3QKKyAgICBjb25zdCBT
dGFja0JvdW5kcyYgc3RhY2soKQogICAgIHsKKyAgICAgICAgLy8gV2UgbmVlZCB0byBhbHdheXMg
Z2V0IGEgZnJlc2ggU3RhY2tCb3VuZHMgZnJvbSB0aGUgT1MgZHVlIHRvIGhvdyBmaWJlcnMgd29y
ay4KKyAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDI0MTEKKyNpZiBPUyhXSU5ET1dTKQorICAgICAgICBtX3N0YWNrQm91bmRzID0gU3RhY2tC
b3VuZHM6OmN1cnJlbnRUaHJlYWRTdGFja0JvdW5kcygpOworI2VuZGlmCiAgICAgICAgIHJldHVy
biBtX3N0YWNrQm91bmRzOwogICAgIH0KIAo=
</data>
<flag name="review"
          id="189556"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>