[project @ 2005-11-02 13:05:30 by simonmar]
authorsimonmar <unknown>
Wed, 2 Nov 2005 13:05:30 +0000 (13:05 +0000)
committersimonmar <unknown>
Wed, 2 Nov 2005 13:05:30 +0000 (13:05 +0000)
release/acquire the SM lock around scheduleFinalizers(), because we
need to call allocateLocal() in there, which acquires the SM lock.

ghc/rts/GC.c

index 06bd785..9a21af8 100644 (file)
@@ -1137,7 +1137,9 @@ GarbageCollect ( void (*get_roots)(evac_fn), rtsBool force_major_gc )
   resetNurseries();
 
   // start any pending finalizers 
+  RELEASE_SM_LOCK;
   scheduleFinalizers(last_free_capability, old_weak_ptr_list);
+  ACQUIRE_SM_LOCK;
   
   // send exceptions to any threads which were about to die 
   resurrectThreads(resurrected_threads);