mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-03 10:05:29 +00:00
After the thread is detached not all thread memory is freed. This memory (dtv-dynamic thread vector) can be used by the main thread. There are two types of run-time handling of TLS. Difference is in the position of memory. It can be either before the thread pointer or after the thread pointer. Taken form the document http://www.akkadia.org/drepper/tls.pdf: "Variant I for the thread-local storage data structures were developed as part of the IA-64 ABI. Being brand-new, compatibility was no issue. The thread register for thread t is denoted by tpt. It points to a Thread Control Block (TCB) which contains at offset zero a pointer to the dynamic thread vector dtvt for the thread. Variant II has a similar structure. The only difference is that the thread pointer points to a Thread Control Block of unspecified size and content. Somewhere the TCB contains a pointer to the dynamic thread vector but it is not specified where. This is under control of the run-time environment and the pointer must not be assumed to be directly accessible; compilers are not allowed to emit code which directly access the dtvt." Because of this we have two types of error when the program ends: possibly lost, and definitely lost. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13761