Opened 10 years ago

Closed 10 years ago

#559 closed defect (fixed)

CCL hangs when loading cl+ssl with *load-print* set to T in IDE

Reported by: rongarret Owned by: gb
Priority: major Milestone:
Component: IDE Version: trunk
Keywords: Cc:

Description

Subject line pretty much says it all. Set *load-print* to T and try to asdf-load the CL+SSL package. It will hang when loading bio.dx*fsl. When *load-print* is NIL the problem goes away. I'm using the 2008-11-04 version of CL+SSL but I'm pretty sure the problem doesn't depend on that.

The problem manifests itself only in the IDE. When run from the terminal it works fine even with *load-print* set to T.

Change History (3)

comment:1 Changed 10 years ago by gb

  • Owner set to gb

I couldn't reproduce this.

What gets printed (with *load-print* and *load-verbose* on) looks like:

;Loading #P"/usr/local/src/cl+ssl-2008-11-04/bio.dx64fsl"...
+BIO-TYPE-SOCKET+
+BIO_FLAGS_READ+
+BIO_FLAGS_WRITE+
+BIO_FLAGS_SHOULD_RETRY+
+BIO_CTRL_FLUSH+
MAKE-BIO-LISP-METHOD
BIO-NEW-LISP
CFFI-CALLBACKS::|CL+SSL::LISP-WRITE|
CLEAR-RETRY-FLAGS
SET-RETRY-READ
CFFI-CALLBACKS::|CL+SSL::LISP-READ|
CFFI-CALLBACKS::|CL+SSL::LISP-PUTS|
CFFI-CALLBACKS::|CL+SSL::LISP-CTRL|
CFFI-CALLBACKS::|CL+SSL::LISP-CREATE|
CFFI-CALLBACKS::|CL+SSL::LISP-DESTROY|

I don't have a good idea as to why printing this stuff would hang. Though the symbols that contain embedded colons might conceivably confuse the buffer-parsing stuff in theory, they don't seem to do so in practice.

There's no good way to tell the IDE not to load ~/ccl-init yet; if you start the IDE with this file renamed, does it still hang ?

comment:2 Changed 10 years ago by rongarret

Hah! Now I can't reproduce it either! But it turns out that what I did to make the problem go away was to set $listener-flush-limit to 4000. If I set it back 100 (recompilation is not necessary) the problem comes back. It's 100% reliable for me. Here's a transcript from a clean start of a clean build of the latest trunk with no ccl-init or ccl-ide-init:

Welcome to Clozure Common Lisp Version 1.4-dev  (DarwinX8664)!
? (setf *load-print* t)
T
? (require :asdf)
:ASDF
NIL
? (setf asdf:*central-registry* (list #P"~/devel/Lisp code/asdf/"))
(#P"/Users/ron/devel/Lisp code/asdf/")
? (setf gui::$listener-flush-limit 100)
100
? (require :cl+ssl)

I can't show what happens after that because it prints out a bunch of stuff and then hangs. BTW, it hangs with 100% reliability, but what gets printed out before it hangs changes slightly from time to time, so that's another indication that this has something to do with the event loop.

comment:3 Changed 10 years ago by gb

  • Resolution set to fixed
  • Status changed from new to closed

Fixed in r12424.

Note: See TracTickets for help on using tickets.