Found during check why SIGSEGV handler could interrupt SIGALRM handler (which does not happen on Linux):
https://sourceware.org/pipermail/cygwin-patches/2025q2/013703.html

Testcase:

$ uname -r # Also occurs with 3.6.1-1.x86_64
3.7.0-0.95.g854150fda310.x86_64

$ cat sigsegv.c
int main()
{
  *(volatile char *)0 = 0;
  return 42; // NOTREACHED
}

$ gcc -o sigsegv sigsegv.c

$ ./sigsegv # OK
Segmentation fault

$ echo $?
139

$ (sleep 5; taskkill /f /im strace.exe) & strace ./sigsegv # Infinite loop
...
--- Process 11224 (pid: 2162), exception c0000005 at 0000000100401092
--- Process 11224 (pid: 2162), exception c0000005 at 0000000100401092
--- Process 11224 (pid: 2162), exception c0000005 at 0000000100401092
--- Process 11224 (pid: 2162), exception c0000005 at 0000000100401092
--- Process 11224 (pid: 2162), exception c0000005 at 0000000100401092
--- Process 11224 (pid: 2162), exception c0000005 at 0000000100401092
--- Process 11224 (pid: 2162), exception c0000005 at 0000000100401092
--- Process 11224 (pid: 2162), exception c0000005 at 0000000
SUCCESS: ... (localized message from taskkill)


The problem also occurs if a SIGSEGV handler is present. The handler code is not executed if strace is used but works as expected without strace.

--
Regards,
Christian


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