summaryrefslogtreecommitdiff
path: root/rts/RtsFlags.c
diff options
context:
space:
mode:
authorTobias Guggenmos <tguggenm@redhat.com>2019-09-07 15:32:06 +0200
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-10-03 12:17:33 -0400
commit47386fe85a412c8aa35f6bcbce0d41f0eed03b65 (patch)
treeeb269c7dd0f13ee5803d22a6bd5009596bcda17b /rts/RtsFlags.c
parentee6324adfed737fbf9ca3c36538145542b425617 (diff)
downloadhaskell-47386fe85a412c8aa35f6bcbce0d41f0eed03b65.tar.gz
Add new debug flag -DZ
Zeros heap memory after gc freed it.
Diffstat (limited to 'rts/RtsFlags.c')
-rw-r--r--rts/RtsFlags.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/rts/RtsFlags.c b/rts/RtsFlags.c
index cbc9a333ec..d4301c414f 100644
--- a/rts/RtsFlags.c
+++ b/rts/RtsFlags.c
@@ -181,6 +181,7 @@ void initRtsFlagsDefaults(void)
RtsFlags.DebugFlags.gc = false;
RtsFlags.DebugFlags.block_alloc = false;
RtsFlags.DebugFlags.sanity = false;
+ RtsFlags.DebugFlags.zero_on_gc = false;
RtsFlags.DebugFlags.stable = false;
RtsFlags.DebugFlags.stm = false;
RtsFlags.DebugFlags.prof = false;
@@ -405,6 +406,7 @@ usage_text[] = {
" -Dg DEBUG: gc",
" -Db DEBUG: block",
" -DS DEBUG: sanity",
+" -DZ DEBUG: zero freed memory during GC",
" -Dt DEBUG: stable",
" -Dp DEBUG: prof",
" -Da DEBUG: apply",
@@ -1861,6 +1863,9 @@ static void read_debug_flags(const char* arg)
case 'S':
RtsFlags.DebugFlags.sanity = true;
break;
+ case 'Z':
+ RtsFlags.DebugFlags.zero_on_gc = true;
+ break;
case 't':
RtsFlags.DebugFlags.stable = true;
break;
@@ -1895,6 +1900,12 @@ static void read_debug_flags(const char* arg)
// -Dx also turns on -v. Use -l to direct trace
// events to the .eventlog file instead.
RtsFlags.TraceFlags.tracing = TRACE_STDERR;
+
+ // sanity implies zero_on_gc
+ if(RtsFlags.DebugFlags.sanity){
+ RtsFlags.DebugFlags.zero_on_gc = true;
+ }
+
}
#endif