diff -urpN john-1.8.0.orig/src/john.c john-1.8.0/src/john.c --- john-1.8.0.orig/src/john.c 2013-05-29 23:27:25.000000000 +0000 +++ john-1.8.0/src/john.c 2014-04-08 08:55:01.557044952 +0000 @@ -480,8 +480,13 @@ static void john_load(void) } #if OS_FORK - if (options.fork) + if (options.fork) { + /* + * flush before forking, to avoid multple log entries + */ + log_flush(); john_fork(); + } #endif } } @@ -575,10 +580,18 @@ static void john_run(void) database.format->methods.reset(&database); log_init(LOG_NAME, POT_NAME, options.session); status_init(NULL, 1); - john_log_format(); - if (idle_requested(database.format)) - log_event("- Configured to use otherwise idle " - "processor cycles only"); + if (john_main_process) { + john_log_format(); + if (idle_requested(database.format)) + log_event("- Configured to use otherwise idle " + "processor cycles only"); + /* + * flush log entries to make sure they appear + * before the "Proceeding with ... mode" entries + * of other processes + */ + log_flush(); + } } tty_init(options.flags & FLG_STDIN_CHK);