With (set-signal-mask! (list signal/pipe)) you get a Chicken error instead of a dead process. Is there a compelling reason not to make this the default? I don't really know what other effects masking the signal has, but a little googling shows that this is the most common way to deal with this problem.