properly account for erroneous programs.

i.e. if they terminate before they hit our 'malloc' breakpoint,
that's not an error.. just a buggy program.
update hacky sync methodology.

to remove a race.  now the parent waits for the child to say "i
started up okay", THEN it freezes the child and does its magic.
finally, when its read all it needs, it completes the sync
procedure by writing a value into the file that says the child can
continue.

this removes a race between the child finishing 'badsync' and then
getting past our breakpoint before we can SIGSTOP the child and
*set* the breakpoint.
finally got the malloc detection stuff working!