summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2010-12-10 09:39:51 +0000
committerSimon Marlow <marlowsd@gmail.com>2010-12-10 09:39:51 +0000
commit00a4cdf7db3ac722db2346416a1b3b891dbc9a0a (patch)
tree2f3207b3f5254e8a8d101c744587fd93953b921f
parenta201afd3d2c4bef07e4e7682b129f60dbdde0e8a (diff)
downloadhaskell-00a4cdf7db3ac722db2346416a1b3b891dbc9a0a.tar.gz
Only reset the event log if logging is turned on (addendum to #4512)
-rw-r--r--rts/Schedule.c8
-rw-r--r--rts/Trace.c8
-rw-r--r--rts/Trace.h1
3 files changed, 13 insertions, 4 deletions
diff --git a/rts/Schedule.c b/rts/Schedule.c
index bf39c0ac14..0b1dec4085 100644
--- a/rts/Schedule.c
+++ b/rts/Schedule.c
@@ -1566,11 +1566,11 @@ forkProcess(HsStablePtr *entry
initMutex(&cap->running_task->lock);
#endif
-#if defined(TRACING)
- abortEventLogging(); // abort eventlog inherited from parent
- initEventLogging(); // child starts its own eventlog
+#ifdef TRACING
+ resetTracing();
#endif
- // Now, all OS threads except the thread that forked are
+
+ // Now, all OS threads except the thread that forked are
// stopped. We need to stop all Haskell threads, including
// those involved in foreign calls. Also we need to delete
// all Tasks, because they correspond to OS threads that are
diff --git a/rts/Trace.c b/rts/Trace.c
index be3fff72d4..53fc25a249 100644
--- a/rts/Trace.c
+++ b/rts/Trace.c
@@ -106,6 +106,14 @@ void freeTracing (void)
}
}
+void resetTracing (void)
+{
+ if (eventlog_enabled) {
+ abortEventLogging(); // abort eventlog inherited from parent
+ initEventLogging(); // child starts its own eventlog
+ }
+}
+
/* ---------------------------------------------------------------------------
Emitting trace messages/events
--------------------------------------------------------------------------- */
diff --git a/rts/Trace.h b/rts/Trace.h
index 4f3ebcec63..97d9514751 100644
--- a/rts/Trace.h
+++ b/rts/Trace.h
@@ -27,6 +27,7 @@
void initTracing (void);
void endTracing (void);
void freeTracing (void);
+void resetTracing (void);
#endif /* TRACING */