diff options
author | Tim Chevalier <chevalier@alum.wellesley.edu> | 2007-04-26 19:18:57 +0000 |
---|---|---|
committer | Tim Chevalier <chevalier@alum.wellesley.edu> | 2007-04-26 19:18:57 +0000 |
commit | ed95d86d82a3ea4cf95906e500873a1cb3f91e4e (patch) | |
tree | bcd02b51cf3622b00564e9b820d8d04e0558865a /rts/Ticky.c | |
parent | cdfe9b087902b321b56dd58df7d996a966947585 (diff) | |
download | haskell-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/Ticky.c')
-rw-r--r-- | rts/Ticky.c | 8 |
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", |