This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: Signal occasionally causes thread inside win32 api to be suspended?
- From: Jon TURNEY <jon dot turney at dronecode dot org dot uk>
- To: cygwin at cygwin dot com
- Date: Mon, 09 Dec 2013 20:59:26 +0000
- Subject: Re: Signal occasionally causes thread inside win32 api to be suspended?
- Authentication-results: sourceware.org; auth=none
- References: <52A4AE10 dot 8080303 at dronecode dot org dot uk> <20131209204759 dot GA1675 at ednor dot casa dot cgf dot cx>
On 09/12/2013 20:47, Christopher Faylor wrote:
> On Sun, Dec 08, 2013 at 05:36:16PM +0000, Jon TURNEY wrote:
>> I don't really understand the intricacies of cygwin signal delivery,
>> but I see that it can suspend the target thread to determine if it's in
>> a safe place to deliver the signal (outside a win32 API call). I think
>> that sometimes the thread is not correctly resumed.
>>
>> This appears to be the cause of been a long-standing problem with the
>> X.org X server on cygwin, which we work around by disabling
>> smart-scheduling (no great loss), but I've only just recently
>> understood enough about the problem to produce a STC.
>>
>> If you run the attached for a while, it stops. According to Process
>> Hacker, the main thread is in the suspended state, inside ntdll.dll.
>> e.g.:
>
> I think I have worked around the problem: calling GetModuleName for the
> address associated with ntdll.dll while the thread is suspended can cause
> the program (thread?) to hang.
Ah, makes sense. It's probably deadlocked on the global loader lock, if you
happen to suspend the thread while it is held.
> This should be rectified in today's snapshot.
--
Jon TURNEY
Volunteer Cygwin/X X Server maintainer
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple