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