I've never really done any threads programming, so I could be quite off 
here, but it looks to me as if there's a race condition in src/alarm.c in 
the threads branch.  Specifically, Parrot_alarm_init() creates a thread 
that checks sleep_cond before it initializes sleep_cond.  (Similar remarks 
hold for alarm_lock.)

Does this patch look appropriate?

diff --git a/src/alarm.c b/src/alarm.c
index 298387f..0ec6a1f 100644
--- a/src/alarm.c
+++ b/src/alarm.c
@@ -56,9 +56,9 @@ Parrot_alarm_init(void)
 {
     ASSERT_ARGS(Parrot_alarm_init)
     Parrot_thread thread;
-    THREAD_CREATE_JOINABLE(thread, Parrot_alarm_runloop, NULL);
     MUTEX_INIT(alarm_lock);
     COND_INIT(sleep_cond);
+    THREAD_CREATE_JOINABLE(thread, Parrot_alarm_runloop, NULL);
 }
 
 /*

-- 
    Andy Dougherty              [email protected]
_______________________________________________
http://lists.parrot.org/mailman/listinfo/parrot-dev

Reply via email to