]> granicus.if.org Git - nethack/commitdiff
Revert "Fuzzer improvements."
authorBart House <bart@barthouse.com>
Mon, 15 Jul 2019 04:10:39 +0000 (21:10 -0700)
committerBart House <bart@barthouse.com>
Mon, 15 Jul 2019 04:10:39 +0000 (21:10 -0700)
This reverts commit 435f1c46267a194e44f0b75c7348be5a900d8ede.

14 files changed:
include/decl.h
include/extern.h
include/flag.h
src/allmain.c
src/hacklib.c
src/restore.c
src/rnd.c
src/save.c
sys/winnt/nttty.c
sys/winnt/windmain.c
win/win32/scripts/fuzzer/clean.bat [deleted file]
win/win32/scripts/fuzzer/longtest.bat [deleted file]
win/win32/scripts/fuzzer/restore.bat [deleted file]
win/win32/scripts/fuzzer/runtill.bat [deleted file]

index 711ba614e885674d0e7ee935c3961525066702d3..834b14ab89d727a3cbee68c96fcf3d927af193f8 100644 (file)
@@ -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 */
index 3c74bfda089c2766eba431d0ad3242cad224bdae..d2ed2ff9e5d2c66413381caf99ab8ae17dd266c6 100644 (file)
@@ -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 ### */
 
index 50f76c457601bb94dbd2aaefddff29ac3a00761e..3ea3ada261941589ba7cf3f9a3bd72c5ffa4e557 100644 (file)
@@ -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 */
 };
 
 /*
index cde2ef9a2381f67a44977389c13c42e5828647fd..082447b3be5ba9a63565ce6fed9f05aacf2cdec0 100644 (file)
@@ -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*/
index 1f43325dfc467701037c25794a340541147b6f76..9fe316517ee0c64baf04223ee743d05c8be09abf 100644 (file)
@@ -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);
 }
index 7d1f6d894bb350ad82b34782b7dba44b1ec3d41c..b6126a2279b3c87e3a0754ca94ba770902bdb4c0 100644 (file)
@@ -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;
     }
index 5473be9495eeb14aefad501d0bf935966344e361..0ca649fbb1d565a84bb58058fa5c744718dc1508 100644 (file)
--- 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 */
index e931eae767655171a02275a71ef046aa782e143b..e0af4b8d2f61a9561356e67b5d662323a8857c89 100644 (file)
@@ -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);
index 4cca4dcbd60f767be06cec957add738caa7cce93..a8000bc0502a4cf8907ed9e57f6674d655f4ff43 100644 (file)
@@ -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(
index d1712ffe4253c72f43a5011448fa6da6d6586c74..b2bb18e7946f1746de9c48741c748cdaf847161b 100644 (file)
@@ -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 (file)
index a02c487..0000000
+++ /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 (file)
index e5e8d15..0000000
+++ /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 (file)
index 9752fed..0000000
+++ /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 (file)
index ebb5aa4..0000000
+++ /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.