Re: Recent testsuite/winsup.api/pthread/cancel2 failure
Jon Turney via Cygwin <[email protected]>
| Newsgroups | gmane.os.cygwin |
|---|---|
| Message-ID | <[email protected]> |
On 14/12/2025 07:39, Takashi Yano via Cygwin wrote: > On Sun, 14 Dec 2025 16:26:37 +0900 > Takashi Yano via Cygwin <[email protected]> wrote: > >> Recently, I have concerned that testsuite winsup.api/pthread/cancel2 fails >> consistently. >> >> https://github.com/cygwin/cygwin/actions/runs/19926408142/job/57127200619 Thanks very much for looking into this! I have the vague idea that this problem started showing up (more?) when the CI VM was upgraded from Windows Server 2022 to Windows Server 2025, but I guess that's maybe just timings... >> >> I'm not sure why this happens, but it also falis in my local environment. >> I looked into this issue a bit, and found that access violation happnes >> in CloseHandle() in _cygtls::remove(). >> >> And I am also not sure why at all, cancel2 works if CloseHandle()'s are >> replaced with NtClose() as follows. I think this is just the difference between the two calls: CloseHandle generates an exception whereas NtClose returns an error code if the handle is invalid. Doesn't really explain whats wrong with the handle, though. >> >> diff --git a/winsup/cygwin/cygtls.cc b/winsup/cygwin/cygtls.cc >> index 13d133f47..249c8cb18 100644 >> --- a/winsup/cygwin/cygtls.cc >> +++ b/winsup/cygwin/cygtls.cc >> @@ -118,7 +118,7 @@ _cygtls::remove (DWORD wait) >> { >> HANDLE h = signal_arrived; >> signal_arrived = NULL; >> - CloseHandle (h); >> + NtClose (h); >> } >> >> if (locals.drivemappings) >> @@ -148,7 +148,7 @@ _cygtls::remove (DWORD wait) >> if (mutex) >> { >> ReleaseMutex (mutex); >> - CloseHandle (mutex); >> + NtClose (mutex); >> } >> } >> >> >> Any idea? > > I forgot to mention that the thread crashes when canceled with > PTHREAD_CANCEL_ASYNCHRONOUS. > > PTHREAD_CANCEL_DEFERRED works without the problem. -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple