This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
Re: [libc-alpha] mt-application hanging in exit()
Bertold Kolics <Bertold.Kolics@Sun.COM> writes:
> Hi Kaz,
>
> Thanks for the prompt answer.
>
> Kaz Kylheku wrote:
>>
>> On Fri, 18 Jan 2002, Bertold Kolics wrote:
>> [ reformated to 79 cols ]
>
> I am sorry about that.
>
>> > I suspect that this race condition only happens if the *only* thing
>> > the thread manager has to do is to send a restart signal to the issuing
>> > thread when servicing a REQ_PROCESS_EXIT request. Otherwise, the thread
>> > manager will send cancel signals to the other threads and thus will give
>> > a chance to the suspend() to finish in the main thread before sending
>> > a restart signal to it.
>>
>> suspend() and restart() are fundamental to all synchronization in
>> LinuxThreads. If they are broken, then the problem is much more serious
>> than hanging in exit() symptom you are seeing, and requires a real fix.
>
> Then we must have a problem. I can reproduce it each & every time. I have run
> my app under strace using microsec timestamping, and I could see the restart
> signal arriving before the signal mask modification is done inside suspend().
Please send a *small* program that shows the problem,
Andreas
--
Andreas Jaeger
SuSE Labs aj@suse.de
private aj@arthur.inka.de
http://www.suse.de/~aj