summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik de Castro Lopo <erikd@mega-nerd.com>2016-04-29 07:15:53 +1000
committerErik de Castro Lopo <erikd@mega-nerd.com>2016-04-29 07:17:19 +1000
commitbcfee2181e7b7edfea3473ec408a3a2a1815ecff (patch)
tree47efe9e4f6d7f49ced2ce8728656d672d3e07e18
parente20b3ed0d0a3eda9b52544f06694667ddc2dd3a1 (diff)
downloadhaskell-bcfee2181e7b7edfea3473ec408a3a2a1815ecff.tar.gz
rts/LdvProfile.c: Fix NULL dereference on shutdown
Test Plan: validate Reviewers: carter, austin, simonmar, bgamari Reviewed By: simonmar, bgamari Subscribers: thomie Differential Revision: https://phabricator.haskell.org/D2154 GHC Trac Issues: #11978
-rw-r--r--rts/LdvProfile.c3
-rw-r--r--testsuite/tests/profiling/should_run/T11978a.hs2
-rw-r--r--testsuite/tests/profiling/should_run/T11978a.stdout1
-rw-r--r--testsuite/tests/profiling/should_run/all.T4
4 files changed, 10 insertions, 0 deletions
diff --git a/rts/LdvProfile.c b/rts/LdvProfile.c
index 2330d74bd1..4a2ee42424 100644
--- a/rts/LdvProfile.c
+++ b/rts/LdvProfile.c
@@ -178,6 +178,9 @@ processNurseryForDead( void )
StgPtr p;
bdescr *bd;
+ if (MainCapability.r.rNursery == NULL)
+ return;
+
for (bd = MainCapability.r.rNursery->blocks; bd != NULL; bd = bd->link) {
p = bd->start;
while (p < bd->free) {
diff --git a/testsuite/tests/profiling/should_run/T11978a.hs b/testsuite/tests/profiling/should_run/T11978a.hs
new file mode 100644
index 0000000000..bb859f3ee8
--- /dev/null
+++ b/testsuite/tests/profiling/should_run/T11978a.hs
@@ -0,0 +1,2 @@
+main :: IO ()
+main = putStrLn "Hello!"
diff --git a/testsuite/tests/profiling/should_run/T11978a.stdout b/testsuite/tests/profiling/should_run/T11978a.stdout
new file mode 100644
index 0000000000..10ddd6d257
--- /dev/null
+++ b/testsuite/tests/profiling/should_run/T11978a.stdout
@@ -0,0 +1 @@
+Hello!
diff --git a/testsuite/tests/profiling/should_run/all.T b/testsuite/tests/profiling/should_run/all.T
index c6ce6d45a4..1f74a27c8f 100644
--- a/testsuite/tests/profiling/should_run/all.T
+++ b/testsuite/tests/profiling/should_run/all.T
@@ -106,3 +106,7 @@ test('T11627b', [ extra_run_opts('+RTS -i0 -RTS') # census after each GC
]
, compile_and_run
, [''])
+
+test('T11978a',
+ [only_ways(['profthreaded']), extra_run_opts('+RTS -hb -N10')],
+ compile_and_run, [''])