summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rts/RtsAPI.c9
-rw-r--r--rts/Schedule.c8
2 files changed, 9 insertions, 8 deletions
diff --git a/rts/RtsAPI.c b/rts/RtsAPI.c
index 3eecab14d4..54d1e75672 100644
--- a/rts/RtsAPI.c
+++ b/rts/RtsAPI.c
@@ -16,6 +16,7 @@
#include "Schedule.h"
#include "Capability.h"
#include "Stable.h"
+#include "Weak.h"
/* ----------------------------------------------------------------------------
Building Haskell objects from C datatypes.
@@ -537,6 +538,14 @@ rts_lock (void)
Capability *cap;
Task *task;
+ if (running_finalizers) {
+ errorBelch("error: a C finalizer called back into Haskell.\n"
+ " This was previously allowed, but is disallowed in GHC 6.10.2 and later.\n"
+ " To create finalizers that may call back into Haskll, use\n"
+ " Foreign.Concurrent.newForeignPtr instead of Foreign.newForeignPtr.");
+ stg_exit(EXIT_FAILURE);
+ }
+
task = newBoundTask();
cap = NULL;
diff --git a/rts/Schedule.c b/rts/Schedule.c
index dd33f6f2d2..70601c3f56 100644
--- a/rts/Schedule.c
+++ b/rts/Schedule.c
@@ -252,14 +252,6 @@ schedule (Capability *initialCapability, Task *task)
"### NEW SCHEDULER LOOP (task: %p, cap: %p)",
task, initialCapability);
- if (running_finalizers) {
- errorBelch("error: a C finalizer called back into Haskell.\n"
- " This was previously allowed, but is disallowed in GHC 6.10.2 and later.\n"
- " To create finalizers that may call back into Haskll, use\n"
- " Foreign.Concurrent.newForeignPtr instead of Foreign.newForeignPtr.");
- stg_exit(EXIT_FAILURE);
- }
-
schedulePreLoop();
// -----------------------------------------------------------