I don't get why none of the strace/ktrace's showed any fork/exec/wait's. If they were visible then we would at least know that the main process was not doing the unlink's until the fork/exec was done and the child waited for.