From 4c1c247028fb42eed9f9b460f5c75996a70a98a0 Mon Sep 17 00:00:00 2001 From: Bart House Date: Sun, 14 Jul 2019 21:10:39 -0700 Subject: [PATCH] Revert "Fuzzer improvements." This reverts commit 435f1c46267a194e44f0b75c7348be5a900d8ede. --- include/decl.h | 4 - include/extern.h | 9 -- include/flag.h | 4 - src/allmain.c | 131 -------------------------- src/hacklib.c | 12 +-- src/restore.c | 2 - src/rnd.c | 29 +----- src/save.c | 14 +-- sys/winnt/nttty.c | 10 +- sys/winnt/windmain.c | 19 +--- win/win32/scripts/fuzzer/clean.bat | 8 -- win/win32/scripts/fuzzer/longtest.bat | 23 ----- win/win32/scripts/fuzzer/restore.bat | 7 -- win/win32/scripts/fuzzer/runtill.bat | 73 -------------- 14 files changed, 8 insertions(+), 337 deletions(-) delete mode 100644 win/win32/scripts/fuzzer/clean.bat delete mode 100644 win/win32/scripts/fuzzer/longtest.bat delete mode 100644 win/win32/scripts/fuzzer/restore.bat delete mode 100644 win/win32/scripts/fuzzer/runtill.bat diff --git a/include/decl.h b/include/decl.h index 711ba614e..834b14ab8 100644 --- a/include/decl.h +++ b/include/decl.h @@ -462,10 +462,6 @@ struct ptr_array { }; typedef struct ptr_array ptr_array_t; -/* logging verbosity levels */ -#define LOG_MINIMAL 0 -#define LOG_VERBOSE 1 - #undef E #endif /* DECL_H */ diff --git a/include/extern.h b/include/extern.h index 3c74bfda0..d2ed2ff9e 100644 --- a/include/extern.h +++ b/include/extern.h @@ -27,13 +27,6 @@ E void NDECL(newgame); E void FDECL(welcome, (BOOLEAN_P)); E time_t NDECL(get_realtime); E int FDECL(argcheck, (int, char **, enum earlyarg)); -E void NDECL(fuzzer_start); -E void NDECL(fuzzer_stop); -E void NDECL(fuzzer_toggle); -E void VDECL(fuzzer_log, (int, const char *, ...)) PRINTF_F(2, 3); -E void NDECL(fuzzer_check); -E void NDECL(fuzzer_auto_start); -E boolean FDECL(fuzzer_msg_history, (const char *)); /* ### apply.c ### */ @@ -957,7 +950,6 @@ E boolean FDECL(fuzzymatch, (const char *, const char *, const char *, BOOLEAN_P)); E void FDECL(init_random, (int FDECL((*fn), (int)))); E void FDECL(reseed_random, (int FDECL((*fn), (int)))); -E void FDECL(set_random, (unsigned long, int FDECL((*fn), (int)))); E time_t NDECL(getnow); E int NDECL(getyear); #if 0 @@ -2169,7 +2161,6 @@ E int FDECL(rnd, (int)); E int FDECL(d, (int, int)); E int FDECL(rne, (int)); E int FDECL(rnz, (int)); -E unsigned long NDECL(rul); /* ### role.c ### */ diff --git a/include/flag.h b/include/flag.h index 50f76c457..3ea3ada26 100644 --- a/include/flag.h +++ b/include/flag.h @@ -447,10 +447,6 @@ struct instance_flags { chosen_windowport[], but do not switch to it in the midst of options processing */ boolean obsolete; /* obsolete options can point at this, it isn't used */ - boolean fuzzer_auto_start; /* start fuzzer automatically */ - int fuzzer_stop_and_save; /* move when fuzzer stops and saves game */ - boolean fuzzer_saving; /* fuzzer is saving game */ - int verbose_logging_start; /* move when verbose fuzzer logging starts */ }; /* diff --git a/src/allmain.c b/src/allmain.c index cde2ef9a2..082447b3b 100644 --- a/src/allmain.c +++ b/src/allmain.c @@ -436,8 +436,6 @@ boolean resuming; #ifdef MAIL ckmailstatus(); #endif - fuzzer_check(); - rhack((char *) 0); } if (u.utotype) /* change dungeon level */ @@ -585,8 +583,6 @@ newgame() { int i; - fuzzer_auto_start(); - #ifdef MFLOPPY gameDiskPrompt(); #endif @@ -926,131 +922,4 @@ const char *opts; #endif return; } - -static FILE * g_fuzzer_log_file = NULL; -static int g_fuzzer_log_level = LOG_MINIMAL; - -/* fuzzer_start() starts the fuzzer opening the fuzzer log file */ -void -fuzzer_start() -{ - if (!iflags.debug_fuzzer) { - const char * fq_replay; - - iflags.debug_fuzzer = TRUE; - iflags.fuzzer_auto_start = FALSE; - - nhassert(g_fuzzer_log_file == NULL); - fq_replay = fqname("fuzzer.log", SAVEPREFIX, 0); - - g_fuzzer_log_file = fopen(fq_replay, "w"); - } -} - -/* fuzzer_stop() stops the fuzzer and close the fuzzer log file */ -void -fuzzer_stop() -{ - if (iflags.debug_fuzzer) { - if(g_fuzzer_log_file != NULL) { - fclose(g_fuzzer_log_file); - g_fuzzer_log_file = NULL; - } - } -} - -/* fuzzer_toggle() toggles fuzzer state */ -void -fuzzer_toggle() -{ - if (iflags.debug_fuzzer) - fuzzer_stop(); - else - fuzzer_start(); -} - -/* fuzzer_log() is used to place messages in the file 'fuzzer.log'. This - * log is the primary tool for monitoring fuzzer activity and tracking down - * issues that the fuzzer is able to reproduce. - */ -void -fuzzer_log -VA_DECL2(int, level, const char *, str) -{ - VA_START(str); - VA_INIT(str, char *); - - if (!g_fuzzer_log_file) - return; - - if (iflags.verbose_logging_start != 0 && moves >= iflags.verbose_logging_start) - g_fuzzer_log_level = LOG_VERBOSE; - - if (level <= g_fuzzer_log_level) - Vfprintf(g_fuzzer_log_file, str, VA_ARGS); - - VA_END(); -} - -/* fuzzer_check() is called prior to rhack(0) to allow the fuzzer to - * check if it should stop and to allow it to reseed the game. - */ -void -fuzzer_check() -{ - if (iflags.debug_fuzzer) - { - if (moves >= iflags.fuzzer_stop_and_save) { - iflags.fuzzer_saving = TRUE; - dosave0(); - exit_nhwindows("Goodbye from the fuzzer..."); - fuzzer_stop(); - nh_terminate(EXIT_SUCCESS); - } - - unsigned long seed = rul(); - set_random(seed, rn2); - fuzzer_log(LOG_MINIMAL, "SEED:%ld:%lu\n", moves, seed); - - } -} - -/* fuzzer_auto_start is called when creating a new game to allow - * the fuzzer to start itself. - */ -void -fuzzer_auto_start() -{ - if (iflags.fuzzer_auto_start) { - nhassert(!iflags.debug_fuzzer); - fuzzer_start(); - unsigned long seed = rul(); - set_random(seed, rn2); - fuzzer_log(LOG_MINIMAL, "START:%ld:%lu\n", moves, seed); - } -} - -/* fuzzer_msg_history is called during save file recovery to allow - * the fuzzer to snoop the messages being recovered. The fuzzer - * saves a seed as a message in save files and this is the mechanism - * used to recover that seed if the fuzzer is being auto started. - */ -boolean -fuzzer_msg_history(msg) - const char * msg; -{ - long saved_moves; - unsigned long saved_seed; - if (sscanf(msg, "SEED:%ld:%lu", &saved_moves, &saved_seed) == 2) { - nhassert(saved_moves == moves); - if (iflags.fuzzer_auto_start) { - fuzzer_start(); - set_random(saved_seed, rn2); - fuzzer_log(LOG_MINIMAL, "START:%ld:%lu\n", moves, saved_seed); - } - return TRUE; - } - - return FALSE; -} /*allmain.c*/ diff --git a/src/hacklib.c b/src/hacklib.c index 1f43325df..9fe316517 100644 --- a/src/hacklib.c +++ b/src/hacklib.c @@ -854,7 +854,7 @@ STATIC_DCL struct tm *NDECL(getlt); /* Sets the seed for the random number generator */ #ifdef USE_ISAAC64 -void +static void set_random(seed, fn) unsigned long seed; int FDECL((*fn), (int)); @@ -865,7 +865,7 @@ int FDECL((*fn), (int)); #else /* USE_ISAAC64 */ /*ARGSUSED*/ -void +static void set_random(seed, fn) unsigned long seed; int FDECL((*fn), (int)) UNUSED; @@ -917,7 +917,7 @@ int FDECL((*fn), (int)); { /* only reseed if we are certain that the seed generation is unguessable * by the players. */ - if (has_strong_rngseed && !iflags.debug_fuzzer) + if (has_strong_rngseed) init_random(fn); } @@ -1108,9 +1108,6 @@ phase_of_the_moon() /* 0-7, with 0: new, 4: full */ register struct tm *lt = getlt(); register int epact, diy, goldn; - if(iflags.debug_fuzzer) - return rn2(8); - diy = lt->tm_yday; goldn = (lt->tm_year % 19) + 1; epact = (11 * goldn + 18) % 30; @@ -1125,9 +1122,6 @@ friday_13th() { register struct tm *lt = getlt(); - if(iflags.debug_fuzzer) - return rn2(30); - /* tm_wday (day of week; 0==Sunday) == 5 => Friday */ return (boolean) (lt->tm_wday == 5 && lt->tm_mday == 13); } diff --git a/src/restore.c b/src/restore.c index 7d1f6d894..b6126a227 100644 --- a/src/restore.c +++ b/src/restore.c @@ -1231,8 +1231,6 @@ register int fd; panic("restore_msghistory: msg too big (%d)", msgsize); mread(fd, (genericptr_t) msg, msgsize); msg[msgsize] = '\0'; - if(fuzzer_msg_history(msg)) - continue; putmsghistory(msg, TRUE); ++msgcount; } diff --git a/src/rnd.c b/src/rnd.c index 5473be949..0ca649fbb 100644 --- a/src/rnd.c +++ b/src/rnd.c @@ -56,21 +56,10 @@ int FDECL((*fn), (int)); (int) sizeof seed); } -unsigned long -rul() -{ - unsigned long value; - - value = (unsigned long) isaac64_next_uint64(&rnglist[CORE].rng_state); - fuzzer_log(LOG_VERBOSE, "RANDOM:%llu\n", value); - - return value; -} - static int RND(int x) { - return (rul() % x); + return (isaac64_next_uint64(&rnglist[CORE].rng_state) % x); } /* 0 <= rn2(x) < x, but on a different sequence from the "main" rn2; @@ -80,8 +69,6 @@ int rn2_on_display_rng(x) register int x; { - if (iflags.debug_fuzzer) - return rn2(x); return (isaac64_next_uint64(&rnglist[DISP].rng_state) % x); } @@ -107,20 +94,6 @@ register int x; seed *= 2739110765; return (int)((seed >> 16) % (unsigned)x); } - -unsigned long -rul() -{ -#if defined(LINT) && defined(UNIX) - return (unsigned long) rand(); -#else /* LINT */ -#if defined(UNIX) || defined(RANDOM) - return (unsigned long) Rand(); -#else - return (unsigned long) (Rand() >> 3); -#endif /* defined(UNIX) || defined(RANDOM) */ -#endif /* LINT */ -} #endif /* USE_ISAAC64 */ /* 0 <= rn2(x) < x */ diff --git a/src/save.c b/src/save.c index e931eae76..e0af4b8d2 100644 --- a/src/save.c +++ b/src/save.c @@ -139,7 +139,7 @@ dosave0() return 0; #endif - HUP if (!iflags.debug_fuzzer && iflags.window_inited) { + HUP if (iflags.window_inited) { nh_uncompress(fq_save); fd = open_savefile(); if (fd > 0) { @@ -1238,18 +1238,6 @@ int fd, mode; bwrite(fd, (genericptr_t) msg, msglen); ++msgcount; } - /* If the fuzzer is stopping and saving, save a seed as a message. - In 3.7, we will modify the save file format and save the seed - directly in the saved game state. */ - if (iflags.fuzzer_saving) { - char message[BUFSIZ]; - unsigned long seed = rul(); - sprintf(message, "SEED:%ld:%lu", moves, seed); - fuzzer_log(LOG_MINIMAL, "STOP:%ld:%lu\n", moves, seed); - msglen = strlen(message); - bwrite(fd, (genericptr_t) &msglen, sizeof msglen); - bwrite(fd, (genericptr_t) message, msglen); - } bwrite(fd, (genericptr_t) &minusone, sizeof (int)); } debugpline1("Stored %d messages into savefile.", msgcount); diff --git a/sys/winnt/nttty.c b/sys/winnt/nttty.c index 4cca4dcbd..a8000bc05 100644 --- a/sys/winnt/nttty.c +++ b/sys/winnt/nttty.c @@ -475,14 +475,8 @@ int *x, *y, *mod; coord cc; DWORD count; really_move_cursor(); - if (iflags.debug_fuzzer) { - int poskey = randomkey(); - if (poskey == 0) { - *x = rn2(console.width); - *y = rn2(console.height); - } - return poskey; - } + if (iflags.debug_fuzzer) + return randomkey(); ch = (program_state.done_hup) ? '\033' : keyboard_handler.pCheckInput( diff --git a/sys/winnt/windmain.c b/sys/winnt/windmain.c index d1712ffe4..b2bb18e79 100644 --- a/sys/winnt/windmain.c +++ b/sys/winnt/windmain.c @@ -336,7 +336,7 @@ attempt_restore: resuming = TRUE; /* not starting new game */ if (discover) You("are in non-scoring discovery mode."); - if ((discover || wizard) && !iflags.fuzzer_auto_start) { + if (discover || wizard) { if (yn("Do you want to keep the save file?") == 'n') (void) delete_savefile(); else { @@ -461,23 +461,6 @@ char *argv[]; case 'X': discover = TRUE, wizard = FALSE; break; - case 'F': - { - iflags.fuzzer_auto_start = 1; - - if (argc > 1 && argv[1][0] != '-') { - argc--; - argv++; - iflags.fuzzer_stop_and_save = atoi(*argv); - - if (argc > 1 && argv[1][0] != '-') { - argc--; - argv++; - iflags.verbose_logging_start = atoi(*argv); - } - } - } - break; #ifdef NEWS case 'n': iflags.news = FALSE; diff --git a/win/win32/scripts/fuzzer/clean.bat b/win/win32/scripts/fuzzer/clean.bat deleted file mode 100644 index a02c48739..000000000 --- a/win/win32/scripts/fuzzer/clean.bat +++ /dev/null @@ -1,8 +0,0 @@ -set BIN_DIR=..\..\..\..\bin\Debug\Win32 - -set FUZZER_LOG=%BIN_DIR%\fuzzer.log -set FUZZER_DIR=%BIN_DIR%\fuzzer - -if exist %BIN_DIR%\%USERNAME%* del %BIN_DIR%\%USERNAME%* -if exist %FUZZER_LOG% del %FUZZER_LOG% - diff --git a/win/win32/scripts/fuzzer/longtest.bat b/win/win32/scripts/fuzzer/longtest.bat deleted file mode 100644 index e5e8d1529..000000000 --- a/win/win32/scripts/fuzzer/longtest.bat +++ /dev/null @@ -1,23 +0,0 @@ -echo off - -SETLOCAL ENABLEEXTENSIONS -SETLOCAL ENABLEDELAYEDEXPANSION - -set STEP_SIZE=5000 -set FINAL_MOVE=500000 -set START_MOVE=5000 - -for /L %%i in (%START_MOVE%, %STEP_SIZE%, %FINAL_MOVE%) do ( - - call runtill.bat %%i - - if ERRORLEVEL 1 ( - echo FAILED getting running to %%i. - exit /b 1 - ) - -) - -echo SUCCESS. - - diff --git a/win/win32/scripts/fuzzer/restore.bat b/win/win32/scripts/fuzzer/restore.bat deleted file mode 100644 index 9752fed96..000000000 --- a/win/win32/scripts/fuzzer/restore.bat +++ /dev/null @@ -1,7 +0,0 @@ -call clean.bat - -set BIN_DIR=..\..\..\..\bin\Debug\Win32 -set SAVED_GAME=%USERNAME%-wizard.NetHack-saved-game -set FUZZER_DIR=%BIN_DIR%\fuzzer - -copy %FUZZER_DIR%\%SAVED_GAME% %BIN_DIR%\%SAVED_GAME% diff --git a/win/win32/scripts/fuzzer/runtill.bat b/win/win32/scripts/fuzzer/runtill.bat deleted file mode 100644 index ebb5aa4b6..000000000 --- a/win/win32/scripts/fuzzer/runtill.bat +++ /dev/null @@ -1,73 +0,0 @@ -REM -REM runtill target_move -REM -echo off - -SETLOCAL ENABLEEXTENSIONS -SETLOCAL ENABLEDELAYEDEXPANSION - -set TARGET_MOVE=%1 - -if %TARGET_MOVE% == "" ( - echo Usage:runtill target_move - goto :eof -) - -set BIN_DIR=..\..\..\..\bin\Debug\Win32 -set SAVED_GAME=%USERNAME%-wizard.NetHack-saved-game -set LOG_FILE=%BIN_DIR%\runtil.log -set FUZZER_LOG=%BIN_DIR%\fuzzer.log -set FUZZER_DIR=%BIN_DIR%\fuzzer -set BASELINE=%FUZZER_DIR%\fuzzer.log - -if not exist %FUZZER_DIR% mkdir %FUZZER_DIR% - -call clean.bat - -if not exist %FUZZER_DIR%\%SAVED_GAME% ( - %BIN_DIR%\nethack -D -F 0 - - copy %BIN_DIR%\%SAVED_GAME% %FUZZER_DIR% -) - -call restore.bat - -%BIN_DIR%\nethack -D -F %TARGET_MOVE% - -move %BIN_DIR%\*.snap %BIN_DIR%\snapshots -copy %FUZZER_LOG% %BASELINE% - -for /f "tokens=2,3 delims=: usebackq" %%i in (`findstr /c:START %BASELINE%`) do ( - set START_SEED=%%j - set START_MOVE=%%i -) - -for /f "tokens=2,3 delims=: usebackq" %%i in (`findstr /c:STOP %BASELINE%`) do ( - set STOP_SEED=%%j - set STOP_MOVE=%%i -) - -if !STOP_MOVE! LSS %TARGET_MOVE% ( - cls - echo FAILED: Failed to reach target move. !STOP_MOVE! is not GTE %TARGET_MOVE%. - exit /b 1 -) - -call restore.bat - -%BIN_DIR%\nethack -D -F %TARGET_MOVE% - -fc %FUZZER_LOG% %BASELINE% - -if ERRORLEVEL 1 ( - cls - echo FAILED: Unable to reproduce same timeline - exit /b 1 -) - -del /q %FUZZER_DIR%\%SAVED_GAME% - -copy %BIN_DIR%\%SAVED_GAME% %FUZZER_DIR% - -echo !START_MOVE! to !STOP_MOVE!. -echo SUCCESS.