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

Reply via email to