Mir

Comment 4 for bug 1280086

Revision history for this message
Alberto Aguirre (albaguirre) wrote :

Debugging further, I noticed that the gl android dispatcher table uses a fixed TLS slot ( slot 6 - offset #24 bytes).

The gnu linker/glibc libraries are not aware of this, so collisions can occur when using std::async or other c++11 constructs which uses thread local storage, which is why allocating dummy thread_local variables helps, since it pushes the slots used by std::async and others away from stomping over slot 6.

I don't think this can be solved in libhybris, short of rewriting the complete android gl dispatcher table.