[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: thread-stub related query
Yes i agree , but the scenarios like below get Aborted which
is not a problem with binary i believe.
1. Build the below test application without linking pthread
$ cat test.c
void *handle = dlopen("libexample.so", RTLD_NOW);
2. Build the library libxx.so linked with pthread from the following code
$ cat example.c
void __attribute__((constructor)) exinit(void)
void __attribute__((destructor)) exexit(void)
3. When the application is executed it aborts
This is because
1. In the application when the library libxx.so is opened the pthread
library constructor is called since libxx.so is linked with pthread ,
which sets the value __isthreaded to 1.
2. The application calls atexit() API which calls mutex_lock(), since
application is not linked with pthread stub function will be called.
3. As in step 1 the __isthreaded is set to 1 which is a global
variable across the library. When __isthreaded is set thread-stub
assumes that pthread library is present and pthread library function
should be called and if thread-stub is called it is treated as error
and sends ABORT signal to the application.
Could you please help me in resolving the above issue.
Thanks & Regards,
2009/7/3 Martin Husemann <martin%duskware.de@localhost>:
> On Fri, Jul 03, 2009 at 03:51:30PM +0530, Channa wrote:
>> All the below functions in thread-stub
>> Send SIGABRT signal when __isthreaded is set.
> In NetBSD this means you have a threaded program not linked with -pthread,
> i.e. something has gone very wrong when creating the binary. That's what the
> abort is catching - you need to rebuild your binary with proper compiler
> I am not sure how this translates into your environment though.
Main Index |
Thread Index |