On 21.06.2013 22:34, John Cowan wrote: > I can confirm that on 32-bit Linux. On Cygwin, however, typing ^\ does > trigger a SIGSEGV with dumped core (except that it doesn't actually dump > core because the Windows kernel can't do that). Both systems are running > version 4.8.2 (rev ea02c9a), and there is no .csirc file. Readline is > not involved: the config line says "manyargs dload ptables" only.
Right. $ cat ^\ Segmentation fault (core dumped) But: $ cat test.c #include <stdio.h> #include <signal.h> #include <unistd.h> void sighandler(int sig) { printf("Caught signal: %d\n", sig); } main() { struct sigaction s; memset(&s, 0, sizeof(s)); s.sa_handler = sighandler; sigaction(SIGSEGV, &s, 0); sigaction(SIGQUIT, &s, 0); while (1) sleep(1); return 0; } $ ./test & [2] 3720 $ kill -QUIT %2 Caught signal: 3 $ kill -SEGV %2 Caught signal: 11 $ ./test ^\ Caught signal: 3 If you comment out sigaction(SIGQUIT, &s, 0); it prints Segmentation fault (core dumped) although it is actually killed by SIGQUIT, not SIGSEGV. This leads me to believe that something inside Cygwin just prints the wrong string for some reason, like for instance Windows or Cygwin returning a bogus value for WTERMSIG in the wait-syscall the shell makes, and that this is not a Chicken bug. However, this puzzles me: $ find >/dev/null ^\ Quit (core dumped) $ cat >/dev/null ^\ Segmentation fault (core dumped) $ cat /dev/zero >/dev/null ^\ Quit (core dumped) So it might be that processes which are killed while doing I/O print "Quit" and "Segmentation fault" otherwise. Best regards, Moritz _______________________________________________ Chicken-users mailing list Chicken-users@nongnu.org https://lists.nongnu.org/mailman/listinfo/chicken-users