]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add --event-horizon=yes|no [yes] so that the limit on errors shown
authorJulian Seward <jseward@acm.org>
Thu, 13 Jun 2002 17:23:38 +0000 (17:23 +0000)
committerJulian Seward <jseward@acm.org>
Thu, 13 Jun 2002 17:23:38 +0000 (17:23 +0000)
can be disabled if desired.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@414

coregrind/valgrind.in
coregrind/vg_errcontext.c
coregrind/vg_include.h
coregrind/vg_main.c
valgrind.in
vg_errcontext.c
vg_include.h
vg_main.c

index 713506f5f7259c3ad975aeedf8b717417af27f3b..fbec27c0a4eabda62205c5d40108ef0e9c951384 100755 (executable)
@@ -41,6 +41,8 @@ do
     --verbose)              vgopts="$vgopts -v"; shift;;
     -q)                     vgopts="$vgopts $arg"; shift;;
     --quiet)                vgopts="$vgopts $arg"; shift;;
+    --event-horizon=no)     vgopts="$vgopts $arg"; shift;;
+    --event-horizon=yes)    vgopts="$vgopts $arg"; shift;;
     --check-addrVs=no)      vgopts="$vgopts $arg"; shift;;
     --check-addrVs=yes)     vgopts="$vgopts $arg"; shift;;
     --gdb-attach=no)        vgopts="$vgopts $arg"; shift;;
@@ -121,6 +123,7 @@ if [ $# = 0 ] || [ z"$dousage" = z1 ]; then
    echo "    --gdb-attach=no|yes       start GDB when errors detected? [no]"
    echo "    --demangle=no|yes         automatically demangle C++ names? [yes]"
    echo "    --num-callers=<number>    show <num> callers in stack traces [4]"
+   echo "    --event-horizon=no|yes    stop showing new errors if too many? [yes]"
    echo "    --partial-loads-ok=no|yes too hard to explain here; see manual [yes]"
    echo "    --leak-check=no|yes       search for memory leaks at exit? [no]"
    echo "    --leak-resolution=low|med|high"
index d5e0abb43dfd12bebbf5a043e8f4190ec7523105..60eaba05e2dbb01024c64bb7078fc5060e7ab073 100644 (file)
@@ -497,8 +497,9 @@ static void VG_(maybe_add_context) ( ErrContext* ec )
       the burden of the error-management system becoming excessive in
       extremely buggy programs, although it does make it pretty
       pointless to continue the Valgrind run after this point. */
-   if (vg_n_errs_shown >= M_VG_COLLECT_NO_ERRORS_AFTER_SHOWN
-       || vg_n_errs_found >= M_VG_COLLECT_NO_ERRORS_AFTER_FOUND) {
+   if (VG_(clo_event_horizon) 
+       && (vg_n_errs_shown >= M_VG_COLLECT_NO_ERRORS_AFTER_SHOWN
+           || vg_n_errs_found >= M_VG_COLLECT_NO_ERRORS_AFTER_FOUND)) {
       if (!stopping_message) {
          VG_(message)(Vg_UserMsg, "");
 
@@ -516,6 +517,12 @@ static void VG_(maybe_add_context) ( ErrContext* ec )
 
          VG_(message)(Vg_UserMsg, 
             "Final error counts will be inaccurate.  Go fix your program!");
+         VG_(message)(Vg_UserMsg, 
+            "Rerun with --event-horizon=no to disable this cutoff.  Note");
+         VG_(message)(Vg_UserMsg, 
+            "that your program may now segfault without prior warning from");
+         VG_(message)(Vg_UserMsg, 
+            "Valgrind, because errors are no longer being displayed.");
          VG_(message)(Vg_UserMsg, "");
          stopping_message = True;
          vg_ignore_errors = True;
index a48076515e7e897b6268a962804653d4311c4fa1..97d6b4e3d6ed0b0c0414908f081405568c6b01b5 100644 (file)
@@ -218,8 +218,10 @@ typedef struct {
 
 #define VG_CLO_MAX_SFILES 10
 
+/* Should we stop collecting errors if too many appear?  default: YES */
+extern Bool  VG_(clo_event_horizon);
 /* Shall we V-check addrs (they are always A checked too): default: YES */
-extern Bool VG_(clo_check_addrVs);
+extern Bool  VG_(clo_check_addrVs);
 /* Enquire about whether to attach to GDB at errors?   default: NO */
 extern Bool  VG_(clo_GDB_attach);
 /* Sanity-check level: 0 = none, 1 (default), > 1 = expensive. */
index 29cd3d631e0ba160e388070f6aecced60c867800..ceec5d0452fa378393d67cd3fc9ebae2ef78f113 100644 (file)
@@ -399,6 +399,7 @@ UInt VG_(num_scheduling_events_MAJOR) = 0;
    Values derived from command-line options.
    ------------------------------------------------------------------ */
 
+Bool   VG_(clo_event_horizon);
 Bool   VG_(clo_check_addrVs);
 Bool   VG_(clo_GDB_attach);
 Int    VG_(sanity_level);
@@ -532,6 +533,7 @@ static void process_cmd_line_options ( void )
 #  define STREQN(nn,s1,s2) (0==VG_(strncmp_ws)((s1),(s2),(nn)))
 
    /* Set defaults. */
+   VG_(clo_event_horizon)    = True;
    VG_(clo_check_addrVs)     = True;
    VG_(clo_GDB_attach)       = False;
    VG_(sanity_level)         = 1;
@@ -708,6 +710,11 @@ static void process_cmd_line_options ( void )
       else if (STREQ(argv[i], "-q") || STREQ(argv[i], "--quiet"))
          VG_(clo_verbosity)--;
 
+      else if (STREQ(argv[i], "--event-horizon=yes"))
+         VG_(clo_event_horizon) = True;
+      else if (STREQ(argv[i], "--event-horizon=no"))
+         VG_(clo_event_horizon) = False;
+
       else if (STREQ(argv[i], "--check-addrVs=yes"))
          VG_(clo_check_addrVs) = True;
       else if (STREQ(argv[i], "--check-addrVs=no"))
index 713506f5f7259c3ad975aeedf8b717417af27f3b..fbec27c0a4eabda62205c5d40108ef0e9c951384 100755 (executable)
@@ -41,6 +41,8 @@ do
     --verbose)              vgopts="$vgopts -v"; shift;;
     -q)                     vgopts="$vgopts $arg"; shift;;
     --quiet)                vgopts="$vgopts $arg"; shift;;
+    --event-horizon=no)     vgopts="$vgopts $arg"; shift;;
+    --event-horizon=yes)    vgopts="$vgopts $arg"; shift;;
     --check-addrVs=no)      vgopts="$vgopts $arg"; shift;;
     --check-addrVs=yes)     vgopts="$vgopts $arg"; shift;;
     --gdb-attach=no)        vgopts="$vgopts $arg"; shift;;
@@ -121,6 +123,7 @@ if [ $# = 0 ] || [ z"$dousage" = z1 ]; then
    echo "    --gdb-attach=no|yes       start GDB when errors detected? [no]"
    echo "    --demangle=no|yes         automatically demangle C++ names? [yes]"
    echo "    --num-callers=<number>    show <num> callers in stack traces [4]"
+   echo "    --event-horizon=no|yes    stop showing new errors if too many? [yes]"
    echo "    --partial-loads-ok=no|yes too hard to explain here; see manual [yes]"
    echo "    --leak-check=no|yes       search for memory leaks at exit? [no]"
    echo "    --leak-resolution=low|med|high"
index d5e0abb43dfd12bebbf5a043e8f4190ec7523105..60eaba05e2dbb01024c64bb7078fc5060e7ab073 100644 (file)
@@ -497,8 +497,9 @@ static void VG_(maybe_add_context) ( ErrContext* ec )
       the burden of the error-management system becoming excessive in
       extremely buggy programs, although it does make it pretty
       pointless to continue the Valgrind run after this point. */
-   if (vg_n_errs_shown >= M_VG_COLLECT_NO_ERRORS_AFTER_SHOWN
-       || vg_n_errs_found >= M_VG_COLLECT_NO_ERRORS_AFTER_FOUND) {
+   if (VG_(clo_event_horizon) 
+       && (vg_n_errs_shown >= M_VG_COLLECT_NO_ERRORS_AFTER_SHOWN
+           || vg_n_errs_found >= M_VG_COLLECT_NO_ERRORS_AFTER_FOUND)) {
       if (!stopping_message) {
          VG_(message)(Vg_UserMsg, "");
 
@@ -516,6 +517,12 @@ static void VG_(maybe_add_context) ( ErrContext* ec )
 
          VG_(message)(Vg_UserMsg, 
             "Final error counts will be inaccurate.  Go fix your program!");
+         VG_(message)(Vg_UserMsg, 
+            "Rerun with --event-horizon=no to disable this cutoff.  Note");
+         VG_(message)(Vg_UserMsg, 
+            "that your program may now segfault without prior warning from");
+         VG_(message)(Vg_UserMsg, 
+            "Valgrind, because errors are no longer being displayed.");
          VG_(message)(Vg_UserMsg, "");
          stopping_message = True;
          vg_ignore_errors = True;
index a48076515e7e897b6268a962804653d4311c4fa1..97d6b4e3d6ed0b0c0414908f081405568c6b01b5 100644 (file)
@@ -218,8 +218,10 @@ typedef struct {
 
 #define VG_CLO_MAX_SFILES 10
 
+/* Should we stop collecting errors if too many appear?  default: YES */
+extern Bool  VG_(clo_event_horizon);
 /* Shall we V-check addrs (they are always A checked too): default: YES */
-extern Bool VG_(clo_check_addrVs);
+extern Bool  VG_(clo_check_addrVs);
 /* Enquire about whether to attach to GDB at errors?   default: NO */
 extern Bool  VG_(clo_GDB_attach);
 /* Sanity-check level: 0 = none, 1 (default), > 1 = expensive. */
index 29cd3d631e0ba160e388070f6aecced60c867800..ceec5d0452fa378393d67cd3fc9ebae2ef78f113 100644 (file)
--- a/vg_main.c
+++ b/vg_main.c
@@ -399,6 +399,7 @@ UInt VG_(num_scheduling_events_MAJOR) = 0;
    Values derived from command-line options.
    ------------------------------------------------------------------ */
 
+Bool   VG_(clo_event_horizon);
 Bool   VG_(clo_check_addrVs);
 Bool   VG_(clo_GDB_attach);
 Int    VG_(sanity_level);
@@ -532,6 +533,7 @@ static void process_cmd_line_options ( void )
 #  define STREQN(nn,s1,s2) (0==VG_(strncmp_ws)((s1),(s2),(nn)))
 
    /* Set defaults. */
+   VG_(clo_event_horizon)    = True;
    VG_(clo_check_addrVs)     = True;
    VG_(clo_GDB_attach)       = False;
    VG_(sanity_level)         = 1;
@@ -708,6 +710,11 @@ static void process_cmd_line_options ( void )
       else if (STREQ(argv[i], "-q") || STREQ(argv[i], "--quiet"))
          VG_(clo_verbosity)--;
 
+      else if (STREQ(argv[i], "--event-horizon=yes"))
+         VG_(clo_event_horizon) = True;
+      else if (STREQ(argv[i], "--event-horizon=no"))
+         VG_(clo_event_horizon) = False;
+
       else if (STREQ(argv[i], "--check-addrVs=yes"))
          VG_(clo_check_addrVs) = True;
       else if (STREQ(argv[i], "--check-addrVs=no"))