Hi Joel, > In the create_pipe_bidi invocation above, I set the slave_process argument > to true. create_pipe_bidi passes that argument to create_pipe, which then > invokes register_slave_subprocess, which uses atexit to register a > function that invokes kill. > > Moreover the documentation in pipe.h, which contains create_pipe_bidi, > says: > > If slave_process is true, the child process will be terminated when > its creator receives a catchable fatal signal or exits normally. If > slave_process is false, the child process will continue running in > this case, until it is lucky enough to attempt to communicate with > its creator and thus get a SIGPIPE signal.
Oops, you're right. I had forgotten about this feature. > I figured that killing it wasn't working properly on the reported platform. Indeed. The code in bison-2.4.2/src/output.c looks fine. Can you help reproducing or debugging it, with just 2 executables: bison and m4? (I.e. give a "how to reproduce" that does not involve bison's testsuite? I'm not inclined to look into a 3 MB large machine generated shell script.) Bruno