> Can you reproduce the problem with the current sources? Works like a charm on Donut. Should have realized it but I missed the significance of the libc preinit first time around when reading your second commit ;-)
Thanks for the heads up ! On Wed, Sep 9, 2009 at 4:22 AM, David Turner<[email protected]> wrote: > I believe this bug has been fixed in the donut dynamic linker / C library. > Yes, the first commit was not ok, was reverted, and another fix was > submitted. > > Can you reproduce the problem with the current sources? > > On Mon, Sep 7, 2009 at 3:10 AM, Surinder <[email protected]> wrote: >> >> Hi, >> >> I would like to highlight an issue related to calling functions that >> create application specific TLS keys from within functions marked as >> __attribute__ ((constructor)). >> >> For e.g. consider the following routine: >> >> static void __attribute__ ((constructor)) foo(void) >> { >> ... >> pthread_key_create(..); >> ... >> } >> >> bionic/linker/linker.c:__linker_init() calls foo() and the >> pthread_key_create() would use the temporary TLS bionic/linker/ >> linker.c:__tls_area which is OK, until the main thread's TLS is >> initialized in bionic/libc/bionic/libc_init_common.c and thus the key >> created in the old TLS is no longer accessible resulting in the app >> segfaulting. >> >> This situation actually occurs when trying to port the gcc OpenMP >> runtime. Although for the moment, I've worked around the problem among >> others and am able to successfully execute OpenMP apps under Android. >> >> In fact, I've seen a commit >> >> http://android.git.kernel.org/?p=platform/bionic.git;a=commit;h=03eabfe65e1e2c36f4d26c78a730fa19a3bdada3 >> which, by re-using the temporary TLS for the main thread would >> actually fix the problem I've described but I noticed that this commit >> has been reverted and a different solution was committed later. >> >> Cheers, >> surinder >> >> > > > > > --~--~---------~--~----~------------~-------~--~----~ unsubscribe: [email protected] website: http://groups.google.com/group/android-porting -~----------~----~----~----~------~----~------~--~---
