Re: Follow-up to earlier question

Robert Goldman <[email protected]> Fri, 27 Mar 2026 10:35:07 -0500
Newsgroups gmane.lisp.steel-bank.general
Message-ID <[email protected]>
--===============4952601099343251740==
Content-Type: multipart/alternative;
 boundary="=_MailMate_AF3E8E01-578D-4C85-9ABA-6B13902DF56D_="


--=_MailMate_AF3E8E01-578D-4C85-9ABA-6B13902DF56D_=
Content-Type: text/plain; format=flowed

Thank you very much!

Meanwhile, I have used the old school printf method to find the problem. 
  It's actually occurring in `pprint`-ing a tree to a file.

This is something that _is_ recursive, but not _that_ deep (as witness 
the successes on other lisp implementations).  But `pprint` involves a 
*lot* of dynamic variables.  Is that likely my problem here?

Thanks for any advice

On 27 Mar 2026, at 10:01, Douglas Katzman wrote:

> In your situation, don't use Lisp to backtrace.  Do it from 'ldb' 
> instead
> I made a recursive function FOO which just binds a lot of specials as 
> an
> example -
>
> Binding stack guard page temporarily disabled: proceed with caution
>
> debugger invoked on a SB-KERNEL::BINDING-STACK-EXHAUSTED in thread
> #<THREAD tid=259 "main thread" RUNNING {1200030003}>:
>   Binding stack exhausted.
>
> PROCEED WITH CAUTION.
>
> Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
>
> restarts (invokable by number or by possibly-abbreviated name):
>   0: [ABORT] Exit debugger, returning to top level.
>
> (SB-KERNEL::BINDING-STACK-EXHAUSTED-ERROR)
> 0] *(sb-vm:ldb-monitor)*
> Welcome to LDB, a low-level debugger for the Lisp runtime environment.
> ldb> *backtrace*
> Backtrace:
>    0: fp=0xba4f2b0 pc=0xb7fb35a Foreign function backtrace_cmd
>    1: fp=0xba4f410 pc=0xb7fafdc Foreign function ldb_monitor
>    2: fp=0xba4f428 pc=0xb8001a3de5 SB-VM::LDB-MONITOR
>    3: fp=0xba4f488 pc=0xb8007729dc SB-EXT::INTERACTIVE-EVAL
>    4: fp=0xba4f4b0 pc=0xb80089bc74 SB-DEBUG::DEBUG-EVAL-PRINT
>    5: fp=0xba4f650 pc=0xb80089b800 SB-DEBUG::DEBUG-LOOP-FUN
>    6: fp=0xba4f668 pc=0xb80089af5a SB-DEBUG::INTERNAL-DEBUG
>    7: fp=0xba4f6e8 pc=0xb800899c24 (FLET DEBUG :IN
> SB-DEBUG::%INVOKE-DEBUGGER)
>    8: fp=0xba4f768 pc=0xb8008996cc SB-DEBUG::%INVOKE-DEBUGGER
>    9: fp=0xba4f7d8 pc=0xb8008985fd (LAMBDA () :IN
> SB-DEBUG::FUNCALL-WITH-DEBUG-IO-SYNTAX)
>   10: fp=0xba4f7f0 pc=0xb80006db68 SB-IMPL::CALL-WITH-SANE-IO-SYNTAX
>   11: fp=0xba4f898 pc=0xb8008980da (FLET "THUNK" :IN
> SB-DEBUG::FUNCALL-WITH-DEBUG-IO-SYNTAX)
>   12: fp=0xba4f8b0 pc=0xb8007cb9ef SB-IMPL::%WITH-STANDARD-IO-SYNTAX
>   13: fp=0xba4f960 pc=0xb800898013 
> SB-DEBUG::FUNCALL-WITH-DEBUG-IO-SYNTAX
>   14: fp=0xba4f978 pc=0xb800898eeb INVOKE-DEBUGGER
>   15: fp=0xba4f9a8 pc=0xb80000e066 ERROR
>   16: fp=0xba4f9b8 pc=0xb800866086 
> SB-KERNEL::BINDING-STACK-EXHAUSTED-ERROR
>   17: fp=0xba4f9f0 pc=0xb82726e Foreign function call_into_lisp_
>   18: fp=0xba4fa78 pc=0xb827320 Foreign function post_signal_tramp
>   19: fp=0xba4faa0 pc=0xb800c6c0e5 CL-USER::FOO
>   20: fp=0xba4fac8 pc=0xb800c6c1ac CL-USER::FOO


--=_MailMate_AF3E8E01-578D-4C85-9ABA-6B13902DF56D_=
Content-Type: text/html
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE html>
<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/xhtml; charset=3Dutf-8"=
>
</head>
<body><div style=3D"font-family: sans-serif;"><div class=3D"markdown" sty=
le=3D"white-space: normal;">
<p dir=3D"auto">Thank you very much!</p>
<p dir=3D"auto">Meanwhile, I have used the old school printf method to fi=
nd the problem.  It's actually occurring in <code style=3D"margin: 0 0; p=
adding: 0 0.25em; border-radius: 3px; background-color: #F7F7F7;">pprint<=
/code>-ing a tree to a file.</p>
<p dir=3D"auto">This is something that <em>is</em> recursive, but not <em=
>that</em> deep (as witness the successes on other lisp implementations).=
  But <code style=3D"margin: 0 0; padding: 0 0.25em; border-radius: 3px; =
background-color: #F7F7F7;">pprint</code> involves a <em>lot</em> of dyna=
mic variables.  Is that likely my problem here?</p>
<p dir=3D"auto">Thanks for any advice</p>
<p dir=3D"auto">On 27 Mar 2026, at 10:01, Douglas Katzman wrote:</p>
</div><blockquote class=3D"embedded" style=3D"margin: 0 0 5px; padding-le=
ft: 5px; border-left: 2px solid #777777; color: #777777;"><div id=3D"0C0D=
68C3-3BDD-46CC-9B50-51FFB9DEA1EC">

<div dir=3D"ltr">In your situation, don't use Lisp to backtrace.&nbsp; Do=
 it from 'ldb' instead
<div>I made a recursive function FOO which just binds a lot of specials a=
s an example -</div>
<div><br></div>
<div><font face=3D"monospace">Binding stack guard page temporarily disabl=
ed: proceed with caution<br>
<br>
debugger invoked on a SB-KERNEL::BINDING-STACK-EXHAUSTED in thread<br>
#&lt;THREAD tid=3D259 "main thread" RUNNING {1200030003}&gt;:<br>
&nbsp; Binding stack exhausted.<br>
<br>
PROCEED WITH CAUTION.<br>
<br>
Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.<br>
<br>
restarts (invokable by number or by possibly-abbreviated name):<br>
&nbsp; 0: [ABORT] Exit debugger, returning to top level.<br>
<br>
(SB-KERNEL::BINDING-STACK-EXHAUSTED-ERROR)<br>
0] <b>(sb-vm:ldb-monitor)</b><br>
Welcome to LDB, a low-level debugger for the Lisp runtime environment.<br=
>
ldb&gt; <b>backtrace</b><br>
Backtrace:<br>
&nbsp; &nbsp;0: fp=3D0xba4f2b0 pc=3D0xb7fb35a Foreign function backtrace_=
cmd<br>
&nbsp; &nbsp;1: fp=3D0xba4f410 pc=3D0xb7fafdc Foreign function ldb_monito=
r<br>
&nbsp; &nbsp;2: fp=3D0xba4f428 pc=3D0xb8001a3de5 SB-VM::LDB-MONITOR<br>
&nbsp; &nbsp;3: fp=3D0xba4f488 pc=3D0xb8007729dc SB-EXT::INTERACTIVE-EVAL=
<br>
&nbsp; &nbsp;4: fp=3D0xba4f4b0 pc=3D0xb80089bc74 SB-DEBUG::DEBUG-EVAL-PRI=
NT<br>
&nbsp; &nbsp;5: fp=3D0xba4f650 pc=3D0xb80089b800 SB-DEBUG::DEBUG-LOOP-FUN=
<br>
&nbsp; &nbsp;6: fp=3D0xba4f668 pc=3D0xb80089af5a SB-DEBUG::INTERNAL-DEBUG=
<br>
&nbsp; &nbsp;7: fp=3D0xba4f6e8 pc=3D0xb800899c24 (FLET DEBUG :IN SB-DEBUG=
::%INVOKE-DEBUGGER)<br>
&nbsp; &nbsp;8: fp=3D0xba4f768 pc=3D0xb8008996cc SB-DEBUG::%INVOKE-DEBUGG=
ER<br>
&nbsp; &nbsp;9: fp=3D0xba4f7d8 pc=3D0xb8008985fd (LAMBDA () :IN SB-DEBUG:=
:FUNCALL-WITH-DEBUG-IO-SYNTAX)<br>
&nbsp; 10: fp=3D0xba4f7f0 pc=3D0xb80006db68 SB-IMPL::CALL-WITH-SANE-IO-SY=
NTAX<br>
&nbsp; 11: fp=3D0xba4f898 pc=3D0xb8008980da (FLET "THUNK" :IN SB-DEBUG::F=
UNCALL-WITH-DEBUG-IO-SYNTAX)<br>
&nbsp; 12: fp=3D0xba4f8b0 pc=3D0xb8007cb9ef SB-IMPL::%WITH-STANDARD-IO-SY=
NTAX<br>
&nbsp; 13: fp=3D0xba4f960 pc=3D0xb800898013 SB-DEBUG::FUNCALL-WITH-DEBUG-=
IO-SYNTAX<br>
&nbsp; 14: fp=3D0xba4f978 pc=3D0xb800898eeb INVOKE-DEBUGGER<br>
&nbsp; 15: fp=3D0xba4f9a8 pc=3D0xb80000e066 ERROR<br>
&nbsp; 16: fp=3D0xba4f9b8 pc=3D0xb800866086 SB-KERNEL::BINDING-STACK-EXHA=
USTED-ERROR<br>
&nbsp; 17: fp=3D0xba4f9f0 pc=3D0xb82726e Foreign function call_into_lisp_=
<br>
&nbsp; 18: fp=3D0xba4fa78 pc=3D0xb827320 Foreign function post_signal_tra=
mp<br>
&nbsp; 19: fp=3D0xba4faa0 pc=3D0xb800c6c0e5 CL-USER::FOO<br>
&nbsp; 20: fp=3D0xba4fac8 pc=3D0xb800c6c1ac CL-USER::FOO</font><br></div>=

</div></div></blockquote>
<div class=3D"markdown" style=3D"white-space: normal;">

</div>
</div>
</body>

</html>

--=_MailMate_AF3E8E01-578D-4C85-9ABA-6B13902DF56D_=--


--===============4952601099343251740==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--===============4952601099343251740==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Sbcl-help mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sbcl-help

--===============4952601099343251740==--