[cmucl-help] error-handling bug
Matt Kaufmann
kaufmann at cs.utexas.edu
Sat Jul 26 20:40:42 UTC 2014
Hi --
(Sorry, I didn't easily see how to get a CMUCL Trac account; hence
this email.)
The CMUCL bug shown below occurs on 64-bit Linux, both Version 20e and
the 2014-06 snapshot.
http://common-lisp.net/project/cmucl/downloads/release/20e/cmucl-20e-x86-linux.tar.bz2
http://common-lisp.net/project/cmucl/downloads/snapshots/2014/06/cmucl-2014-06-x86-linux.tar.bz2
It appears to be the same bug as this SBCL bug (now fixed for SBCL):
https://bugs.launchpad.net/sbcl/+bug/1333327
Here is a log illustrating the bug in the CMUCL versions mentioned
above. The expected behavior is shown later below (using SBCL 1.2.1).
.......... CMUCL 20e and also 2014-06 snapshot: ..........
* (defun read-string-fn (str)
(handler-case
(let ((acc nil))
(with-input-from-string
(stream str)
(loop do
(let* ((eof-marker (cons nil nil))
(elem (read stream nil eof-marker)))
(if (eq elem eof-marker)
(loop-finish)
(push elem acc)))))
(setq acc (nreverse acc))
(values :OK acc))
(error (condition)
(return-from read-string-fn
(values :ERROR (format nil "~A" condition))))
(storage-condition (condition)
(return-from read-string-fn
(values :STORAGE (format nil "~A" condition))))))
READ-STRING-FN
* (read-string-fn "#\wtf")
Error in function LISP::CLOSED-FLAME: #<String-Input Stream> is closed.
[Condition of type SIMPLE-ERROR]
Restarts:
0: [ABORT] Return to Top-Level.
Debug (type H for help)
(LISP::CLOSED-FLAME #<String-Input Stream>)
Source: Error finding source:
Error in function DEBUG::GET-FILE-TOP-LEVEL-FORM: Source file no longer exists:
target:code/stream.lisp.
0]
..........
Here is the analogous log after defining the function above in SBCL
1.2.1, which I believe is as expected.
.......... SBCL 1.2.1 ..........
* (read-string-fn "#\wtf")
:ERROR
"no dispatch function defined for #\\W
Stream: #<SB-IMPL::STRING-INPUT-STREAM {1002E27C03}>"
*
..........
Regards,
Matt Kaufmann
More information about the cmucl-help
mailing list