Opened 11 years ago
Closed 11 years ago
#5837 closed Bugs (invalid)
tss_dll: does not appear to allocate TLS storage at the proper time
Reported by: | Owned by: | Anthony Williams | |
---|---|---|---|
Milestone: | To Be Determined | Component: | thread |
Version: | Boost 1.47.0 | Severity: | Problem |
Keywords: | tss | Cc: | noloader@… |
Description
When a Windows process loads a DLL, DllMain will recieve DLL_PROCESS_ATTACH. According to MSDN process can use the opportunity to allocate thread storage [1]. Interestingly, on_process_enter() (and on_thread_enter()) does not perform the initialization. Note that on_process_enter() is the Boost routine for DLL_PROCESS_ATTACH; and on_thread_enter() is called for DLL_THREAD_ATTACH.
From tss_hooks.cpp:
extern "C" BOOST_THREAD_DECL void on_process_enter() { }
and
extern "C" BOOST_THREAD_DECL void on_thread_enter() { }
Even more bizarre, on_thread_exit() appears to allocate the thread local storage:
extern "C" BOOST_THREAD_DECL void on_thread_exit() { // Initializing tls_key here ensures its proper visibility boost::call_once( init_tls_key, once_init_tls_key ); // Get the exit handlers list for the current thread from tls. if( tls_key == invalid_tls_key ) { return; } ...
Perhaps it would be a good idea to review the MSDN documentation, and perfom TLS initialization according to Microsoft recommendations.
[1] http://msdn.microsoft.com/en-us/library/ms682583(v=vs.85).aspx
Change History (3)
comment:1 by , 11 years ago
Cc: | added |
---|---|
Component: | None → thread |
Owner: | set to |
comment:2 by , 11 years ago
Keywords: | tss added |
---|
comment:3 by , 11 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
Closed as the file tss_hooks.cpp doesn't exists
The current code is