Ok, I reproduced assertion failure this in a debug build: STR: * Run a debug build * Go to https://profiler.firefox.com/ * Install the Gecko Profiler Add-on and open the menu * Enable "Main thread IO" under features * Click "Start" * Click "Discard and Stop" * Wait a second and the tab crashes ``` Assertion failure: curThreadData, at /Users/gregorytatum/dev/gecko/xpcom/build/IOInterposer.cpp:505 #01: nsThread::ThreadFunc(void*)[/Users/gregorytatum/dev/gecko/obj-ff-dbg/dist/NightlyDebug.app/Contents/MacOS/XUL +0x1472da] #02: _pt_root[/Users/gregorytatum/dev/gecko/obj-ff-dbg/dist/NightlyDebug.app/Contents/MacOS/libnss3.dylib +0x16e8b0] #03: _pthread_body[/usr/lib/system/libsystem_pthread.dylib +0x3305] #04: _pthread_start[/usr/lib/system/libsystem_pthread.dylib +0x626f] ``` Looking in searchfox, it appears that [IOInterposer::RegisterCurrentThread](https://searchfox.org/mozilla-central/search?q=symbol:_ZN7mozilla12IOInterposer21RegisterCurrentThreadEb&redirect=false) is being called before initialization, so we are missing those registrations. I'm not sure what the desired behavior is, should we ignore this, or somehow keep a list of these, and only register them once the interposer is initiated?
Bug 1529125 Comment 1 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
Ok, I reproduced this assertion failure in a debug build: STR: * Run a debug build * Go to https://profiler.firefox.com/ * Install the Gecko Profiler Add-on and open the menu * Enable "Main thread IO" under features * Click "Start" * Click "Discard and Stop" * Wait a second and the tab crashes ``` Assertion failure: curThreadData, at /Users/gregorytatum/dev/gecko/xpcom/build/IOInterposer.cpp:505 #01: nsThread::ThreadFunc(void*)[/Users/gregorytatum/dev/gecko/obj-ff-dbg/dist/NightlyDebug.app/Contents/MacOS/XUL +0x1472da] #02: _pt_root[/Users/gregorytatum/dev/gecko/obj-ff-dbg/dist/NightlyDebug.app/Contents/MacOS/libnss3.dylib +0x16e8b0] #03: _pthread_body[/usr/lib/system/libsystem_pthread.dylib +0x3305] #04: _pthread_start[/usr/lib/system/libsystem_pthread.dylib +0x626f] ``` Looking in searchfox, it appears that [IOInterposer::RegisterCurrentThread](https://searchfox.org/mozilla-central/search?q=symbol:_ZN7mozilla12IOInterposer21RegisterCurrentThreadEb&redirect=false) is being called before initialization, so we are missing those registrations. I'm not sure what the desired behavior is, should we ignore this, or somehow keep a list of these, and only register them once the interposer is initiated?