Hello,
OpenMCL 0.14.2 is now out and SLDB does not work with it. The following is an excerpt from my conversation with Gary Byers discussing MAP-BACKTRACE:
Gary Byers gb@clozure.com writes: ...
Yes; this is now wrong. Low-level stack-walking functions that used to take a TCR ("thread context record") as an argument now either default to walking the current thread's stacks or take another thread's "backtrace context". Since this is trying to do a backtrace on the current thread, it never needed to pass the current TCR around.
(The whole issue is that you can't just arbitrarily look at another thread's stack in general, since it's likely to be moving around as you're looking at it. Even if you could, the information in the TCR is only accurate at certain points in the thread's execution. You can look at certain parts of another thread's stack if you're sure that that thread is in a break loop while you're looking.)
It looks like the function that this function maps takes a TCR as an argument; if that function passes that TCR to other low-level stack-walking code, it'll run into the same problem. Passing NIL explictly may work.
Setting the 'tcr' variable to NIL instead of CCL::%CURRENT-TCR in MAP-BACKTRACE does allow the debugger to present the first backtrace, but it seems broken upon using some of the restarts.
Unfortunately this is all voodoo to me, but hopefully it is helpful to someone =)
Regards, Will
On Thu, 6 May 2004, Will wrote:
Hello,
OpenMCL 0.14.2 is now out and SLDB does not work with it. The following is an excerpt from my conversation with Gary Byers discussing MAP-BACKTRACE:
I'm pretty sure that changing the backtrace-related stuff in swank-openmcl.lisp so that it works in 0.14.2 is straightforward (I've done some work on this and will try to test that work soon.) It's less clear that it'd be straightforward to preserve backward compatibility with older versions. How important is that ?
Gary Byers gb@clozure.com writes:
I'm pretty sure that changing the backtrace-related stuff in swank-openmcl.lisp so that it works in 0.14.2 is straightforward (I've done some work on this and will try to test that work soon.) It's less clear that it'd be straightforward to preserve backward compatibility with older versions. How important is that ?
From a "policy" point of view we're happy so long as we're compatible
with the latest released version.
If this will cause major grief for someone they should please speak up.
-Luke