summaryrefslogtreecommitdiff
path: root/rts/Trace.c
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2010-02-26 09:32:15 +0000
committerSimon Marlow <marlowsd@gmail.com>2010-02-26 09:32:15 +0000
commit91bfa780ddd229cff6c3d86a8f05e3898ef65e53 (patch)
tree97d9e42d73089f9b7a8aadfc3435a45b97d61227 /rts/Trace.c
parentb1b95df69d97f279018b08d9e7c672318055bac4 (diff)
downloadhaskell-91bfa780ddd229cff6c3d86a8f05e3898ef65e53.tar.gz
Fix crash when using printf format specifiers in traceEvent (#3874)
Diffstat (limited to 'rts/Trace.c')
-rw-r--r--rts/Trace.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/rts/Trace.c b/rts/Trace.c
index a1da9911a7..c8a0285837 100644
--- a/rts/Trace.c
+++ b/rts/Trace.c
@@ -299,21 +299,29 @@ void trace_(char *msg, ...)
va_end(ap);
}
-void traceUserMsg(Capability *cap, char *msg)
+static void traceFormatUserMsg(Capability *cap, char *msg, ...)
{
+ va_list ap;
+ va_start(ap,msg);
+
#ifdef DEBUG
if (RtsFlags.TraceFlags.tracing == TRACE_STDERR) {
- traceCap_stderr(cap, msg, NULL);
+ traceCap_stderr(cap, msg, ap);
} else
#endif
{
if (eventlog_enabled) {
- postUserMsg(cap, msg);
+ postUserMsg(cap, msg, ap);
}
}
dtraceUserMsg(cap->no, msg);
}
+void traceUserMsg(Capability *cap, char *msg)
+{
+ traceFormatUserMsg(cap, "%s", msg);
+}
+
void traceThreadStatus_ (StgTSO *tso USED_IF_DEBUG)
{
#ifdef DEBUG