From bd73a6ffe285acdf67b03f49759f26f808c510d8 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Sat, 22 Nov 2014 00:12:44 -0800 Subject: 292 - back to state of commit 276 What have we learned? a) You can't detect deadlock between running a thread and waking up sleeping threads -- you may miss threads that are about to become available. b) Most of the context-switching code in 'run' shouldn't assume routine* is correctly set. That's just for 'run-for-time-slice' and for checking on blocked threads. I was implicitly requiring it when I shouldn't, and not setting it when checking blocked threads. Before I fix the next failing test I want to write unit tests for a) above. --- mu.arc.t | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mu.arc.t b/mu.arc.t index 3740a1b7..346243a8 100644 --- a/mu.arc.t +++ b/mu.arc.t @@ -2316,7 +2316,7 @@ ((ochan channel-address) <- arg) ((x tagged-value-address) <- new-tagged-value (integer-address literal) (n integer-address)) ((ochan channel-address deref) <- write (ochan channel-address deref) (x tagged-value-address deref))))) -(set dump-trace*) +;? (set dump-trace*) ;? (= dump-trace* (obj whitelist '("schedule" "run" "addr"))) ;? (= dump-trace* (obj whitelist '("-"))) (run 'f1) -- cgit 1.4.1-2-gfad0