[commit: ghc] master: Close ticky profiling file stream after printing (#9405) (2708c22)
git at git.haskell.org
git at git.haskell.org
Thu Mar 24 09:51:29 UTC 2016
Repository : ssh://git@git.haskell.org/ghc
On branch : master
Link : http://ghc.haskell.org/trac/ghc/changeset/2708c22b8c8a415446d963575c0396a038b43a93/ghc
>---------------------------------------------------------------
commit 2708c22b8c8a415446d963575c0396a038b43a93
Author: Flaviu Andrei Csernik <fcsernik at gmail.com>
Date: Wed Mar 23 16:18:11 2016 +0100
Close ticky profiling file stream after printing (#9405)
Test Plan: T9405
Reviewers: simonmar, austin, bgamari
Reviewed By: simonmar, bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D2008
GHC Trac Issues: #9405
>---------------------------------------------------------------
2708c22b8c8a415446d963575c0396a038b43a93
rts/RtsFlags.c | 4 +++-
rts/RtsStartup.c | 3 +++
testsuite/tests/rts/Makefile | 9 +++++++++
testsuite/tests/rts/T9405.hs | 3 +++
testsuite/tests/rts/all.T | 3 +++
5 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/rts/RtsFlags.c b/rts/RtsFlags.c
index 3d0d7a4..cce799e 100644
--- a/rts/RtsFlags.c
+++ b/rts/RtsFlags.c
@@ -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
}
/* -----------------------------------------------------------------------------
diff --git a/rts/RtsStartup.c b/rts/RtsStartup.c
index bd6a6ae..4b9d947 100644
--- a/rts/RtsStartup.c
+++ b/rts/RtsStartup.c
@@ -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)
diff --git a/testsuite/tests/rts/Makefile b/testsuite/tests/rts/Makefile
index 094506d..6181f87 100644
--- a/testsuite/tests/rts/Makefile
+++ b/testsuite/tests/rts/Makefile
@@ -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
index 0000000..ca68e10
--- /dev/null
+++ b/testsuite/tests/rts/T9405.hs
@@ -0,0 +1,3 @@
+import Control.Concurrent
+
+main = threadDelay 2000000
diff --git a/testsuite/tests/rts/all.T b/testsuite/tests/rts/all.T
index 60513ca..269bc55 100644
--- a/testsuite/tests/rts/all.T
+++ b/testsuite/tests/rts/all.T
@@ -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'])
More information about the ghc-commits
mailing list