This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Wolfram Gloger <wmglo@dent.med.uni-muenchen.de> writes: |> > There is a race condition in linuxthreads during thread creation on |> > architectures that use a dedicated thread register. Between the point the |> > thread is created and inserted in the list of active threads, and the |> > point the thread register is initialized in the child a cancel signal may |> > arrive, with the thread manager calling pthread_handle_exit. |> ... |> > To fix this race I have blocked the cancel signal in the manager around |> > the clone call, so that the child does not call the signal handler before |> > thread_self is initialized. |> |> Wouldn't it be enough to check for this special case in |> pthread_handle_sigcancel(), like so: |> |> static void pthread_handle_sigcancel(int sig) |> { |> pthread_descr self = thread_self(); |> sigjmp_buf * jmpbuf; |> |> if (self == &__pthread_manager_thread) |> { |> if (thread_self_stack() == &__pthread_manager_thread) |> { |> __pthread_manager_sighandler(sig); |> return; |> } |> /* Oops, thread_self() isn't working yet.. */ |> self = thread_self_stack(); |> } |> ... |> |> with thread_self_stack() being the current 'normal' thread_self(). Would this thread_self_stack work with FLOATING_STACKS? What if the stack size of the new thread is wildly different from STACK_SIZE? I don't think that thread_self_stack can always return a valid thread descriptor. Andreas. -- Andreas Schwab "And now for something Andreas.Schwab@suse.de completely different." SuSE Labs, SuSE GmbH, Schanzäckerstr. 10, D-90443 Nürnberg Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |