>> `compilation-start' needs to check if the process is running >> before calling `process-send-eof': > > That's odd. AFAICT no blobking operation takes place between the > start-process and the process-send-eof, so the process-status should still > be `run' no matter how quickly the process exits (because Emacs shouldn't > process the SIGCHLD it receives until later). > > What am I missing?
The process exits during execution of create_process. The gdb log below with a breakpoint on sigchld_handler demonstrates what really happens: Breakpoint 4, sigchld_handler (signo=17) at process.c:6249 6249 XSETINT (p->raw_status_low, u.i & 0xffff); (gdb) n 6250 XSETINT (p->raw_status_high, u.i >> 16); (gdb) n 6253 if ((WIFSIGNALED (w) || WIFEXITED (w)) (gdb) n 6260 FD_CLR (XINT (p->infd), &input_wait_mask); (gdb) n 6261 FD_CLR (XINT (p->infd), &non_keyboard_wait_mask); (gdb) p w $1 = 512 <-- WIFEXITED (gdb) bt #0 sigchld_handler (signo=17) at process.c:6261 #1 <signal handler called> #2 0x4031f784 in sigprocmask () from /lib/libc.so.6 #3 0x0817af28 in create_process (process=141365940, new_argv=0xbfffe954, current_dir=140249731) at process.c:2153 #4 0x0817a97d in Fstart_process (nargs=5, args=0xbfffea94) at process.c:1695 ... (gdb) fr 3 #3 0x0817af28 in create_process (process=141365940, new_argv=0xbfffe954, current_dir=140249731) at process.c:2153 2153 sigprocmask (SIG_SETMASK, &procmask, 0); -- Juri Linkov http://www.jurta.org/emacs/ _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel