<?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>64465</bug_id>
          
          <creation_ts>2011-07-13 10:41:57 -0700</creation_ts>
          <short_desc>Possible race condition in ThreadIdentifierData::initializeKeyOnce and shouldCallRealDebugger.</short_desc>
          <delta_ts>2011-07-13 12:19:42 -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>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</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="David Levin">levin</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>andersca</cc>
    
    <cc>dimich</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>436513</commentid>
    <comment_count>0</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-07-13 10:41:57 -0700</bug_when>
    <thetext>The race condition is highly unlikely and was only noticed through code inspection but it is trivial to make the code correct.

The race would happen if the static initialization starts to happen on two threads. 
Thread 1 does the initialization and Thread 2 is at the initialization code but hasn&apos;t yet executed it. 
Thread 1 finishes the pthread_once call and then Thread 2 initializes onceControl to PTHREAD_ONCE_INIT.
Thread 2 does the pthread_once call which happens again now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436520</commentid>
    <comment_count>1</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-07-13 10:52:20 -0700</bug_when>
    <thetext>All other instances do this correctly now.

Source/JavaScriptCore/runtime/JSLock.cpp:pthread_once_t createJSLockCountOnce = PTHREAD_ONCE_INIT;
Source/JavaScriptCore/wtf/FastMalloc.cpp:static pthread_once_t isForbiddenKeyOnce = PTHREAD_ONCE_INIT;
Source/JavaScriptCore/wtf/MainThread.cpp:static pthread_once_t initializeMainThreadKeyOnce = PTHREAD_ONCE_INIT;
Source/JavaScriptCore/wtf/ThreadIdentifierDataPthreads.cpp:static pthread_once_t onceControl = PTHREAD_ONCE_INIT;
Source/JavaScriptGlue/JSUtils.cpp:static pthread_once_t globalObjectKeyOnce = PTHREAD_ONCE_INIT;
Source/WebCore/bridge/jni/jni_jsobject.mm:static pthread_once_t javaScriptAccessLockOnce = PTHREAD_ONCE_INIT;
Source/WebKit/mac/Misc/WebKitErrors.m:static pthread_once_t registerErrorsControl = PTHREAD_ONCE_INIT;
Source/WebKit/mac/Misc/WebKitSystemBits.m:static pthread_once_t initControl = PTHREAD_ONCE_INIT;
Source/WebKit/mac/Misc/WebNSURLExtras.mm:static pthread_once_t IDNScriptWhiteListFileRead = PTHREAD_ONCE_INIT;
Source/WebKit2/WebProcess/WebCoreSupport/mac/WebErrorsMac.mm:static pthread_once_t registerErrorsControl = PTHREAD_ONCE_INIT;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436528</commentid>
    <comment_count>2</comment_count>
      <attachid>100687</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-07-13 11:03:31 -0700</bug_when>
    <thetext>Created attachment 100687
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436568</commentid>
    <comment_count>3</comment_count>
      <attachid>100687</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-07-13 11:43:12 -0700</bug_when>
    <thetext>Comment on attachment 100687
Patch

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436595</commentid>
    <comment_count>4</comment_count>
      <attachid>100687</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-13 12:19:38 -0700</bug_when>
    <thetext>Comment on attachment 100687
Patch

Clearing flags on attachment: 100687

Committed r90939: &lt;http://trac.webkit.org/changeset/90939&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436596</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-13 12:19:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100687</attachid>
            <date>2011-07-13 11:03:31 -0700</date>
            <delta_ts>2011-07-13 12:19:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64465-20110713110330.patch</filename>
            <type>text/plain</type>
            <size>4061</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA5MzMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGEz
NWVmM2MzOGY4MzViMjViYmUyMTRjMGRjZGUyMjdkMDBlNTlhYTYuLmFjZWM1MjllZjczMDVkN2Fk
YjIwZTE0YWQ2ZTcyMjExNDhhNDI2MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDExLTA3LTEzICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4K
KworICAgICAgICBQb3NzaWJsZSByYWNlIGNvbmRpdGlvbiBpbiBUaHJlYWRJZGVudGlmaWVyRGF0
YTo6aW5pdGlhbGl6ZUtleU9uY2UgYW5kIHNob3VsZENhbGxSZWFsRGVidWdnZXIuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDQ2NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlIGlzbid0IGEgZ29v
ZCB3YXkgdG8gdGVzdCB0aGlzIGFzIGl0IGlzIHZlcnkgaGlnaGx5IHVubGlrZWx5IHRvIG9jY3Vy
LgorCisgICAgICAgICogd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwOgorICAg
ICAgICAoV1RGOjpUaHJlYWRJZGVudGlmaWVyRGF0YTo6aW5pdGlhbGl6ZUtleU9uY2UpOiBTaW5j
ZSBzY29wZWQgc3RhdGljIGluaXRpYWxpemF0aW9uCisgICAgICAgIGlzbid0IHRocmVhZC1zYWZl
LCBjaGFuZ2UgdGhlIGluaXRpYWxpemF0aW9uIHRvIGJlIGdsb2JhbC4KKwogMjAxMS0wNy0xMyAg
QWRlbWFyIGRlIFNvdXphIFJlaXMgSnIuICA8YWRlbWFyLnJlaXNAb3BlbmJvc3NhLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkSWRlbnRpZmllckRhdGFQdGhyZWFkcy5jcHAKaW5k
ZXggMDQyZDQ5ZTlmYzZkYWI5OTU4NTA4NWIwZWVlZTM1YzQ3YjBkMzFiZi4uZGNiYzk2ZmZjNDRi
MDMyNjBhNTc3ZjJkOTU1OWVhY2ZkZmMzNDMyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9UaHJlYWRJZGVudGlmaWVyRGF0YVB0aHJlYWRzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZElkZW50aWZpZXJEYXRhUHRocmVhZHMuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC0zOSw2ICszOSw3IEBACiBuYW1lc3BhY2UgV1RGIHsKIAogcHRocmVhZF9rZXlfdCBUaHJlYWRJ
ZGVudGlmaWVyRGF0YTo6bV9rZXk7CitzdGF0aWMgcHRocmVhZF9vbmNlX3Qgb25jZUNvbnRyb2wg
PSBQVEhSRUFEX09OQ0VfSU5JVDsKIAogdm9pZCBjbGVhclB0aHJlYWRIYW5kbGVGb3JJZGVudGlm
aWVyKFRocmVhZElkZW50aWZpZXIpOwogCkBAIC04Niw3ICs4Nyw2IEBAIHZvaWQgVGhyZWFkSWRl
bnRpZmllckRhdGE6OmluaXRpYWxpemVLZXlPbmNlSGVscGVyKCkKIAogdm9pZCBUaHJlYWRJZGVu
dGlmaWVyRGF0YTo6aW5pdGlhbGl6ZUtleU9uY2UoKQogewotICAgIHN0YXRpYyBwdGhyZWFkX29u
Y2VfdCBvbmNlQ29udHJvbCA9IFBUSFJFQURfT05DRV9JTklUOwogICAgIGlmIChwdGhyZWFkX29u
Y2UoJm9uY2VDb250cm9sLCBpbml0aWFsaXplS2V5T25jZUhlbHBlcikpCiAgICAgICAgIENSQVNI
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDAwNTU5ODRkN2NhMzQyZTIzNTUwOThiOTgwNWE1MzdkZDhi
ZDA0Zi4uMmE4OTg5NTlkMmJlNDFmODA2NmZmZDdjMWJlNzA3Y2FmMzk1NDkwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDExLTA3LTEzICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBQb3NzaWJsZSByYWNlIGNvbmRpdGlvbiBpbiBUaHJlYWRJZGVu
dGlmaWVyRGF0YTo6aW5pdGlhbGl6ZUtleU9uY2UgYW5kIHNob3VsZENhbGxSZWFsRGVidWdnZXIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDQ2NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXJlIGlz
bid0IGEgZ29vZCB3YXkgdG8gdGVzdCB0aGlzIGFzIGl0IGlzIHZlcnkgaGlnaGx5IHVubGlrZWx5
IHRvIG9jY3VyLgorCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6c2hvdWxkQ2FsbFJlYWxEZWJ1Z2dlcik6IDpTaW5jZSBz
Y29wZWQgc3RhdGljIGluaXRpYWxpemF0aW9uCisgICAgICAgIGlzbid0IHRocmVhZC1zYWZlLCBj
aGFuZ2UgdGhlIGluaXRpYWxpemF0aW9uIHRvIGJlIGdsb2JhbC4KKwogMjAxMS0wNy0xMyAgQW5k
cmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtXSzJdIFJlbW92
ZSBpbnZhbGlkIHNpZ25hbC9zbG90IGNvbm5lY3Rpb24gaW4gUVRvdWNoV2ViVmlldy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1t
CmluZGV4IDEwMWI3OWFhYTNlMTQyNTM0NjYxZmE4YmM2OTVjYjM4YTk0ZmU2Y2QuLmZhYjkyMWU3
NTE0MGJiODM3NDFlZTBhNGJmZmVhMzIzMjIwODEzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQpAQCAtMSw1ICsxLDYg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM5LDYgKzQwLDggQEAKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0YXRpYyBwdGhyZWFkX29uY2VfdCBzaG91bGRDYWxsUmVh
bERlYnVnZ2VyT25jZSA9IFBUSFJFQURfT05DRV9JTklUOworCiBjbGFzcyBGdWxsc2NyZWVuV2lu
ZG93VHJhY2tlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnVsbHNjcmVlbldpbmRvd1Ry
YWNrZXIpOwogCkBAIC0xMzIsNyArMTM1LDYgQEAgc3RhdGljIHZvaWQgaW5pdFNob3VsZENhbGxS
ZWFsRGVidWdnZXIoKQogCiBzdGF0aWMgYm9vbCBzaG91bGRDYWxsUmVhbERlYnVnZ2VyKCkKIHsK
LSAgICBzdGF0aWMgcHRocmVhZF9vbmNlX3Qgc2hvdWxkQ2FsbFJlYWxEZWJ1Z2dlck9uY2UgPSBQ
VEhSRUFEX09OQ0VfSU5JVDsKICAgICBwdGhyZWFkX29uY2UoJnNob3VsZENhbGxSZWFsRGVidWdn
ZXJPbmNlLCBpbml0U2hvdWxkQ2FsbFJlYWxEZWJ1Z2dlcik7CiAgICAgCiAgICAgcmV0dXJuIGlz
VXNlcmJyZWFrU2V0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>