Open
Bug 756439
Opened 12 years ago
Updated 2 years ago
Replace NS_TLS/TlsAlloc with mozilla::ThreadLocal
Categories
(Core :: XPCOM, defect)
Tracking
()
NEW
People
(Reporter: glandium, Unassigned)
References
Details
Attachments
(1 file, 1 obsolete file)
No description provided.
Reporter | ||
Comment 1•12 years ago
|
||
This doesn't actually work correctly, because NS_IsCycleCollectorThread is called[1] before ThreadManager::Init. 1. The call stack is: #0 0x00007ffff7bcfefb in raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/pt-raise.c:41 #1 0x00007ffff2ef4435 in mozilla::ThreadLocal<mozilla::threads::ID>::get (this=0x7ffff52fab10) at ../../dist/include/mozilla/ThreadLocal.h:113 #2 0x00007ffff3d42dbb in NS_IsCycleCollectorThread_P () at ../../dist/include/nsCycleCollectorUtils.h:51 #3 nsDirEnumeratorUnix::AddRef (this=0x7ffff6b1e8c0) at /home/mh/mozilla-central/xpcom/io/nsLocalFileUnix.cpp:181 #4 0x00007ffff3d42280 in nsLocalFile::GetDirectoryEntries (this=this@entry=0x7ffff6b273c0, entries=entries@entry=0x7fffffffbe50) at /home/mh/mozilla-central/xpcom/io/nsLocalFileUnix.cpp:1708 #5 0x00007ffff2f00341 in nsXREDirProvider::LoadAppBundleDirs (this=this@entry=0x7fffffffc0b8) at /home/mh/mozilla-central/toolkit/xre/nsXREDirProvider.cpp:590 #6 0x00007ffff2f00652 in nsXREDirProvider::Initialize (this=0x7fffffffc0b8, aXULAppDir=0x7ffff6b27480, aGREDir=<optimized out>, aAppProvider=<optimized out>) at /home/mh/mozilla-central/toolkit/xre/nsXREDirProvider.cpp:147 #7 0x00007ffff2ef8c52 in XREMain::XRE_mainInit (this=this@entry=0x7fffffffc078, aAppData=aAppData@entry=0x61b5b0, aExitFlag=aExitFlag@entry=0x7fffffffc01f) at /home/mh/mozilla-central/toolkit/xre/nsAppRunner.cpp:2968 which also means the current windows implementation, using TlsAlloc/TlsGetValue, is fragile: gTLSThreadIDIndex is 0 before ThreadManager::Init. If something else already allocated a TLS key, TlsGetValue(0) may return an unrelated value. I'm tempted to say this is one of the rare cases where a static initializer would be better.
Reporter | ||
Comment 2•12 years ago
|
||
This variant works on debug builds, except windows debug.
Reporter | ||
Updated•12 years ago
|
Attachment #625565 -
Attachment is obsolete: true
Updated•2 years ago
|
Severity: normal → S3
You need to log in
before you can comment on or make changes to this bug.
Description
•