lmj / lparallel

Parallelism for Common Lisp
http://lparallel.org
BSD 3-Clause "New" or "Revised" License
243 stars 29 forks source link

Error with SBCL 1.2.4 on a virtual machine (Debian/jessie OS) #17

Closed nneuss closed 9 years ago

nneuss commented 9 years ago

Hello, when trying to get a new Lparallel kernel with (make-kernel 2) I receive the error attached below. Does anyone have an idea what could be the reason? (On other architectures, I did not yet see this error.)

Thank you,

Nicolas

A function with declared result type NIL returned:
BORDEAUX-THREADS:CONDITION-WAIT [Condition of type SB-INT:SIMPLE-CONTROL-ERROR]

Restarts: 0: [ABORT] Abort thread (#<THREAD "lparallel" RUNNING {1004BD9483}>)

Backtrace: 0: (LPARALLEL.THREAD-UTIL:CONDITION-WAIT #<SB-THREAD:WAITQUEUE Anonymous condition variable {1004BE0293}> #<SB-THREAD:MUTEX "Anonymous lock" owner: #<SB-THREAD:THREAD "lparallel" RUNNING {1004BD9483}>> :.. 1: (LPARALLEL.CONS-QUEUE:POP-CONS-QUEUE/NO-LOCK #) 2: ((FLET #:WITHOUT-INTERRUPTS-BODY-647 :IN SB-THREAD::CALL-WITH-MUTEX)) 3: (SB-THREAD::CALL-WITH-MUTEX #<CLOSURE (FLET SB-THREAD::WITH-MUTEX-THUNK :IN LPARALLEL.CONS-QUEUE:POP-CONS-QUEUE) {7FFFE7DAE5DB}> #<SB-THREAD:MUTEX "Anonymous lock" owner: #<SB-THREAD:THREAD "lparallel.. 4: (LPARALLEL.CONS-QUEUE:POP-CONS-QUEUE #) 5: (LPARALLEL.KERNEL::HANDSHAKE/FROM-WORKER/START #S(LPARALLEL.KERNEL::WORKER :HANDSHAKE/FROM-WORKER #S(LPARALLEL.CONS-QUEUE:CONS-QUEUE :IMPL #S(LPARALLEL.RAW-QUEUE:RAW-QUEUE :HEAD NIL :TAIL NIL) :LOCK #.. 6: (LPARALLEL.KERNEL::CALL-WITH-WORKER-CONTEXT #<CLOSURE (LAMBDA NIL :IN LPARALLEL.KERNEL::ENTER-WORKER-LOOP) {1004BE027B}> # #<LPARALLEL.KERNEL:KERNEL :NAME "lparallel" :WORKER-COUNT 2.. 7: ((LAMBDA NIL :IN LPARALLEL.KERNEL::MAKE-WORKER-THREAD)) 8: ((LAMBDA NIL :IN BORDEAUX-THREADS::BINDING-DEFAULT-SPECIALS)) 9: ((FLET #:WITHOUT-INTERRUPTS-BODY-1226 :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE)) 10: ((FLET SB-THREAD::WITH-MUTEX-THUNK :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE)) 11: ((FLET #:WITHOUT-INTERRUPTS-BODY-647 :IN SB-THREAD::CALL-WITH-MUTEX)) 12: (SB-THREAD::CALL-WITH-MUTEX #<CLOSURE (FLET SB-THREAD::WITH-MUTEX-THUNK :IN SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE) {7FFFE7DAEC8B}> #<SB-THREAD:MUTEX "thread result lock" owner: #<SB-THREAD:THR.. 13: (SB-THREAD::INITIAL-THREAD-FUNCTION-TRAMPOLINE #<SB-THREAD:THREAD "lparallel" RUNNING {1004BD9483}> #S(SB-THREAD:SEMAPHORE :NAME "Thread setup semaphore" :%COUNT 0 :WAITCOUNT 0 :MUTEX #<SB-THREAD:MUTE..

lmj commented 9 years ago

What's the uname -a of this platform? The *features* after lparallel is loaded might give a hint, too. You could try the repository version of bordeaux-threads (https://github.com/sionescu/bordeaux-threads) which has a change to condition-wait. It shouldn't matter, but it's something different.

nneuss commented 9 years ago

I compared with another virtual machine both having precisely the same results of 'uname -a', sbcl version, and features. Nevertheless, for one lparallel:make-kernel did work, for the other not. But the good news is that your suggestion with updating bordeaux-threads helped! Thank you very much!

lmj commented 9 years ago

This is still curious, though. I wonder if the fasls somehow became stale; updating bordeaux-threads may have worked only because it forced recompilation.

nneuss commented 9 years ago

Indeed, you are right. make-kernel now works also when recompiling the old bordeaux-threads library. Interesting. I did not yet meet that kind of problem before.