summaryrefslogtreecommitdiff
path: root/rts
diff options
context:
space:
mode:
authorTim Chevalier <chevalier@alum.wellesley.edu>2007-04-26 19:18:57 +0000
committerTim Chevalier <chevalier@alum.wellesley.edu>2007-04-26 19:18:57 +0000
commited95d86d82a3ea4cf95906e500873a1cb3f91e4e (patch)
treebcd02b51cf3622b00564e9b820d8d04e0558865a /rts
parentcdfe9b087902b321b56dd58df7d996a966947585 (diff)
downloadhaskell-ed95d86d82a3ea4cf95906e500873a1cb3f91e4e.tar.gz
Avoid segfault when ticky file argument is stderr
If you compiled a program with -ticky and ran it with: ./foo +RTS -rstderr -RTS the result would be a segfault. This was because the RTS interprets stderr to mean "use debugBelch to print out messages," and sets the ticky file pointer to NULL as a result, but PrintTickyInfo (the function in Ticky.c that prints out the ticky report) wasn't checking for NULL. I changed PrintTickyInfo to check whether the ticky file pointer is NULL and output to stderr if so. Also removed an unused import from CodeOutput.lhs.
Diffstat (limited to 'rts')
-rw-r--r--rts/Ticky.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/rts/Ticky.c b/rts/Ticky.c
index 89013317c0..2cd3740def 100644
--- a/rts/Ticky.c
+++ b/rts/Ticky.c
@@ -110,6 +110,14 @@ PrintTickyInfo(void)
FILE *tf = RtsFlags.TickyFlags.tickyFile;
+ /* If tf = NULL, that means the user passed in stderr for the ticky stats
+ file. According to a comment in RtsFlags.c, this means to use
+ debugBelch to print out messages. But this function prints out a lot
+ of stuff so in order to avoid changing a lot of code, we just dump
+ the same output to stderr (for now). */
+ if( tf == NULL )
+ tf = stderr;
+
/* krc: avoid dealing with this just now */
#if FALSE
fprintf(tf,"\n\nALLOCATIONS: %ld (%ld words total: %ld admin, %ld goods, %ld slop)\n",