Loading "lparallel" hangs
Robert Larice
Robert.Larice at t-online.de
Sun Sep 2 10:27:54 UTC 2018
I tried to understand where the issue is located.
In :lparallel file lparallel-20160825-git/src/thread-util.lisp
there is a stanza which tries to check for the implementation
of the :timeout capability
> ;;; Check for timeout parameter in bordeaux-threads:condition-wait.
> (eval-when (:compile-toplevel :execute)
> ;; use special to defeat compiler analysis
> (defparameter *condition-wait* #'bordeaux-threads:condition-wait)
>
> (flet ((has-condition-wait-timeout-p ()
> ...
I tried to minimise this to a small standalone piece
which can be used to examine the issue:
(ql:quickload :bordeaux-threads)
(let ((lock (bordeaux-threads:make-lock))
(cvar (bordeaux-threads:make-condition-variable)))
(bordeaux-threads:with-lock-held (lock)
(bordeaux-threads:condition-wait cvar lock :timeout 0.001)))
I think the :timeout doesn't seem to work properly and thus the
condition-wait waits forever.
Can you help me to understand this better and to work around it ?
Regards
Robert Larice
Robert Larice <Robert.Larice at t-online.de> writes:
> Hello,
>
> can you provide me some hints for the following problem ?
>
> I've compiled ecl from git on a debian stretch machine.
> Then I've tried to compile the "qt" example,
> which did hang when loading "lparallel"
> So I started "ecl" from a shell,
> and did execute
> (ql:quickload :lparallel)
> which presents me:
> > To load "lparallel":
> > Load 1 ASDF system:
> > lparallel
> > ; Loading "lparallel"
> then the process fell silent.
> "top" doesn't show "ecl" to consume cpu cycles.
> Its waiting for something and doesn't proceed.
>
> Regards,
> Robert Larice
More information about the ecl-devel
mailing list