yes, it should not happen. but maybe this stanza from perldoc -f system can shed some light on your problem: Beginning with v5.6.0, Perl will attempt to flush all files opened for output before any operation that may do a fork, but this may not be supported on some platforms (see perlport). To be safe, you may need to set $| ($AUTOFLUSH in English) or call the "autoflush()" method of "IO::Handle" on any open handles.
Comment on Re^3: Synchronizing Multiple System Processes
$| won't help. script1.pl flushed everything it had to flush on exit. (And if it didn't because of some crash, that data is gone forever. It was in the process, which longer exists. Waiting for it won't help.)