Problems with DXing the results of a local function
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Fix Released
|
High
|
Unassigned |
Bug Description
Followup to https:/
RESTART-BIND is not able to use DX restart objects.
* (sb-int:clear-info :function :inlinep 'sb-kernel:
* (setf (extern-alien "pre_verify_gen_0" int) 1)
* (defparameter *f*
(compile
nil
'(lambda (arg)
(declare (optimize (speed 3) (space 0) (safety 0)))
(sb-ext:gc :full t) ; will verify the heap
(restart-case (write-string #.(format nil "Foo!~%") t)
(use-value (other) other)
(retry () arg))
(write-string #.(format nil "After RESTART-CASE~%") t)
(sb-ext:gc :full t))))
* (funcall *f* "")
Foo!
After RESTART-CASE
NIL
* (funcall *f* "")
CORRUPTION WARNING in SBCL pid 32349(tid 140737353951040):
Memory fault at 0x1f8e (pc=0x21d3d491, sp=0x7ffff5a178e3)
The integrity of this image is possibly compromised.
Continuing with fingers crossed.
Changed in sbcl: | |
status: | Fix Committed → Fix Released |
This is actually do to DXing results of local functions
(defun bar ())
(defun foo ()
(declare (optimize (speed 3)))
(flet ((x () (cons 1 2)))
(let ((x (x))
(y (x)))
(declare (dynamic-extent x y))
(print (list x y))))
(bar)
(sb-ext:gc :full t))
(foo)
=>
no transport function for object 0x10023a3daf (widetag 0xb2)
Welcome to LDB, a low-level debugger for the Lisp runtime environment.
ldb>