master: Fix accessing debug vars at post-call locations.

apache--- via Sbcl-commits <[email protected]> Wed, 20 May 2026 10:14:40 +0000
Newsgroups gmane.lisp.steel-bank.cvs
Message-ID <[email protected]>
The branch "master" has been updated in SBCL:
       via  5c1cd2227f09d9355c5ad5873148cf69ee6df3e1 (commit)
      from  f982475b0bcb6d691cf172630fad9c14087378b2 (commit)

- Log -----------------------------------------------------------------
commit 5c1cd2227f09d9355c5ad5873148cf69ee6df3e1
Author: Charles Zhang <[email protected]>
Date:   Fri Mar 27 01:02:54 2026 +0100

    Fix accessing debug vars at post-call locations.
---
 src/code/debug-int.lisp | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/code/debug-int.lisp b/src/code/debug-int.lisp
index a0472f39e..33b813f6e 100644
--- a/src/code/debug-int.lisp
+++ b/src/code/debug-int.lisp
@@ -2305,7 +2305,13 @@
           (escaped
            (sub-access-debug-var-slot
             (frame-pointer frame)
-            (compiled-debug-var-sc+offset debug-var)
+            ;; Immediately after a call returns, saved locations have
+            ;; not been restored yet, so we access the debug var
+            ;; directly from the save location.
+            (or (and (memq (code-location-kind (frame-code-location frame))
+                           '(:single-value-return :unknown-return :known-return))
+                     (compiled-debug-var-save-sc+offset debug-var))
+                (compiled-debug-var-sc+offset debug-var))
             escaped))
           (t
            (sub-access-debug-var-slot

-----------------------------------------------------------------------


hooks/post-receive
-- 
SBCL