Close ticky profiling file stream after printing (#9405)
authorFlaviu Andrei Csernik <fcsernik@gmail.com>
Wed, 23 Mar 2016 15:18:11 +0000 (16:18 +0100)
committerBen Gamari <ben@smart-cactus.org>
Thu, 24 Mar 2016 09:53:27 +0000 (10:53 +0100)
Test Plan: T9405

Reviewers: simonmar, austin, bgamari

Reviewed By: simonmar, bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D2008

GHC Trac Issues: #9405

rts/RtsFlags.c
rts/RtsStartup.c
testsuite/tests/rts/Makefile
testsuite/tests/rts/T9405.hs [new file with mode: 0644]
testsuite/tests/rts/all.T

index 3d0d7a4..cce799e 100644 (file)
@@ -590,9 +590,11 @@ void setupRtsFlags (int *argc, char *argv[], RtsConfig rts_config)
     if (RtsFlags.GcFlags.statsFile != NULL) {
         initStatsFile (RtsFlags.GcFlags.statsFile);
     }
+#ifdef TICKY_TICKY
     if (RtsFlags.TickyFlags.tickyFile != NULL) {
-        initStatsFile (RtsFlags.GcFlags.statsFile);
+        initStatsFile (RtsFlags.TickyFlags.tickyFile);
     }
+#endif
 }
 
 /* -----------------------------------------------------------------------------
index bd6a6ae..4b9d947 100644 (file)
@@ -408,6 +408,9 @@ hs_exit_(rtsBool wait_foreign)
 
 #if defined(TICKY_TICKY)
     if (RtsFlags.TickyFlags.showTickyStats) PrintTickyInfo();
+
+    FILE *tf = RtsFlags.TickyFlags.tickyFile;
+    if (tf != NULL) fclose(tf);
 #endif
 
 #if defined(mingw32_HOST_OS) && !defined(THREADED_RTS)
index 094506d..6181f87 100644 (file)
@@ -45,6 +45,15 @@ T5423:
        "$(TEST_HC)" $(TEST_HC_OPTS) -v0 T5423.o T5423_cmm.o -o T5423$(exeext)
        ./T5423
 
+.PHONY: T9405
+T9405:
+       @'$(TEST_HC)' $(TEST_HC_OPTS) -ticky -rtsopts T9405.hs; \
+    ./T9405 +RTS -rT9405.ticky & \
+    sleep 0.2; \
+    kill -2 $$!; \
+    wait $$!; \
+    [ -s T9405.ticky ] && echo Ticky-Ticky
+
 # Naming convention: 'T5423_' obj-way '_' obj-src
 # obj-way ::= v | dyn
 # obj-src ::= gcc // using __attribute__(constructor)
diff --git a/testsuite/tests/rts/T9405.hs b/testsuite/tests/rts/T9405.hs
new file mode 100644 (file)
index 0000000..ca68e10
--- /dev/null
@@ -0,0 +1,3 @@
+import Control.Concurrent
+
+main = threadDelay 2000000
index 60513ca..269bc55 100644 (file)
@@ -330,3 +330,6 @@ test('T10904', [ omit_ways(['ghci']), extra_run_opts('20000') ],
 
 test('T10728', [extra_run_opts('+RTS -maxN3 -RTS'), only_ways(['threaded2'])],
                compile_and_run, [''])
+
+test('T9405', [extra_clean(['T9405.ticky'])],
+              run_command, ['$MAKE -s --no-print-directory T9405'])