3 changes: (1) abort/cancel if overlapping cgc; (2) moved printf from sigchld handler to child process to avoid deadlock in malloc; (3) continue if sigchld triggered but found no child.