In src/isolate.cc in function Isolate::EnsureDefaultIsolate() a bunch of
TLS indices are allocated:
isolate_key_ = Thread::CreateThreadLocalKey();
thread_id_key_ = Thread::CreateThreadLocalKey();
per_isolate_thread_data_key_ = Thread::CreateThreadLocalKey();
However they are never deleted. When running under Application Verifier on
Windows I got this stop at shutdown:
VERIFIER STOP 0000000000000350: pid 0x1658: Unloading DLL that allocated
TLS index that was not freed.
000000000046ABBA : TLS index
000007FEC7381B8B : Address of the code that allocated this TLS index.
000000004B99FFD6 : DLL name address. Use du to dump it.
000007FEC7050000 : DLL base address.
I ended up deleting those with Thread::DeleteThreadLocalKey() in the
destructor of StaticInitializer class.
Also I noticed that Isolate::ThreadDataTable::~ThreadDataTable destructor
is declared in isolate.h but never implemented anywhere. Trying to
delete thread_data_table_ leads to a link error.
--
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users