Recently, I have concerned that testsuite winsup.api/pthread/cancel2 fails
consistently.

https://github.com/cygwin/cygwin/actions/runs/19926408142/job/57127200619

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.

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?

-- 
Takashi Yano <[email protected]>

-- 
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

Reply via email to