<html>
<head>
<base href="https://bugs.webkit.org/" />
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW - [GTK][OSX] ThreadIdentifierData::initialize assertion fails: (m_key != PTHREAD_KEYS_MAX)"
href="https://bugs.webkit.org/show_bug.cgi?id=153176#c3">Comment # 3</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW - [GTK][OSX] ThreadIdentifierData::initialize assertion fails: (m_key != PTHREAD_KEYS_MAX)"
href="https://bugs.webkit.org/show_bug.cgi?id=153176">bug 153176</a>
from <span class="vcard"><a class="email" href="mailto:jeremyhu@apple.com" title="Jeremy Huddleston Sequoia <jeremyhu@apple.com>"> <span class="fn">Jeremy Huddleston Sequoia</span></a>
</span></b>
<pre>Oh, I missed it.
JSC::initializeThreading() calls WTF::initializeThreading(), and JSC::initializeThreading() is the first thing called by WebKit2::InitializeWebKit2
namespace JSC {
void initializeThreading()
{
static std::once_flag initializeThreadingOnceFlag;
std::call_once(initializeThreadingOnceFlag, []{
WTF::double_conversion::initialize();
WTF::initializeThreading();
...
---
void InitializeWebKit2()
{
#if PLATFORM(COCOA)
InitWebCoreSystemInterface();
#endif
#if PLATFORM(IOS)
InitWebCoreThreadSystemInterface();
#endif
JSC::initializeThreading();
WTF::initializeMainThread();
...
So that all looks OK, BUT the issue comes because of 2-level name-spacing. Here's the backtrace:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x00007fff8ac13f06 __pthread_kill + 10
1 libsystem_pthread.dylib 0x00007fff8fa204ec pthread_kill + 90
2 libsystem_c.dylib 0x00007fff8b86e6e7 abort + 129
3 libsystem_c.dylib 0x00007fff8b835df8 __assert_rtn + 321
4 libwebkit2gtk-4.0.37.dylib 0x000000010b27cb54 WTF::ThreadIdentifierData::identifier() + 68
5 libwebkit2gtk-4.0.37.dylib 0x000000010b27db3d WTF::currentThread() + 13
6 libwebkit2gtk-4.0.37.dylib 0x000000010b222e32 WTF::initializeMainThread() + 34
7 libwebkit2gtk-4.0.37.dylib 0x0000000108e0236e WebKit::InitializeWebKit2() + 14
libwebkit2gtk's WTF::initializeMainThread() was never called.
libjavascriptcoregtk has its own copy of WTF::initializeMainThread(), and THAT was what was called:
webkitgtk-2.11.3/lib $ nm libjavascriptcoregtk-4.0.dylib | grep initializeOnce
0000000000ac29a0 T __ZN3WTF20ThreadIdentifierData14initializeOnceEv
0000000000e3f9f0 b __ZZN3WTF12_GLOBAL__N_112myThreadDataEvE14initializeOnce
0000000000e3fa30 b __ZZN3WTF12_GLOBAL__N_112myThreadDataEvE14initializeOnce
webkitgtk-2.11.3/lib $ nm libwebkit2gtk-4.0.dylib | grep initializeOnce
0000000002634a00 T __ZN3WTF20ThreadIdentifierData14initializeOnceEv
0000000003702500 b __ZZN3WTF12_GLOBAL__N_112myThreadDataEvE14initializeOnce
00000000037024b0 b __ZZN3WTF12_GLOBAL__N_112myThreadDataEvE14initializeOnce</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>