Re: Problem with SBCL pprint
Robert Goldman <[email protected]> Fri, 27 Mar 2026 17:43:24 -0500
| Newsgroups | gmane.lisp.steel-bank.general |
|---|---|
| Message-ID | <[email protected]> |
--===============6184590355163526201== Content-Type: multipart/alternative; boundary="=_MailMate_E6F20C6A-E62E-4396-99FA-846AA8A1A654_=" Content-Transfer-Encoding: 8bit --=_MailMate_E6F20C6A-E62E-4396-99FA-846AA8A1A654_= Content-Type: text/plain; charset=UTF-8; format=flowed; markup=markdown Content-Transfer-Encoding: 8bit I'm not sure I understand. Why is it that you think printing integers is the problem here? It may be the case that setting the pprint dispatch table for integers could cause a problem, but the file of test data causing this error has no integers in it. So I'm not sure why you think that the pprint dispatch entry for integers would fix the problem. The file read is a file in PDDL (the input language of the international planning competition). Here, with no nice formatting is that file. Using the special pretty-print table to display it nicely is what causes the error. ``` (SIFT-PDDL:DEFINE (SIFT-PDDL:DOMAIN SIFT-PDDL::OPENSTACKS-SEQUENCEDSTRIPS-ADL) (:REQUIREMENTS :TYPING :ADL :ACTION-COSTS) (:TYPES SIFT-PDDL::ORDER SIFT-PDDL::PRODUCT SIFT-PDDL::COUNT) (:CONSTANTS SIFT-PDDL::O4 - SIFT-PDDL::ORDER SIFT-PDDL::P4 - SIFT-PDDL::PRODUCT) (:PREDICATES (SIFT-PDDL::INCLUDES SIFT-PDDL::?O - SIFT-PDDL::ORDER SIFT-PDDL::?P - SIFT-PDDL::PRODUCT) (SIFT-PDDL::WAITING SIFT-PDDL::?O - SIFT-PDDL::ORDER) (SIFT-PDDL::STARTED SIFT-PDDL::?O - SIFT-PDDL::ORDER) (SIFT-PDDL::SHIPPED SIFT-PDDL::?O - SIFT-PDDL::ORDER) (SIFT-PDDL::MADE SIFT-PDDL::?P - SIFT-PDDL::PRODUCT) (SIFT-PDDL::STACKS-AVAIL SIFT-PDDL::?S - SIFT-PDDL::COUNT) (SIFT-PDDL::NEXT-COUNT SIFT-PDDL::?S SIFT-PDDL::?NS - SIFT-PDDL::COUNT)) (:FUNCTIONS (SIFT-PDDL::TOTAL-COST) - NUMBER) (:ACTION SIFT-PDDL::MAKE-PRODUCT :PARAMETERS (SIFT-PDDL::?P - SIFT-PDDL::PRODUCT) :PRECONDITION (AND (NOT (SIFT-PDDL::MADE SIFT-PDDL::?P)) (SIFT-PDDL:FORALL (SIFT-PDDL::?O - SIFT-PDDL::ORDER) (SIFT-PDDL:IMPLY (SIFT-PDDL::INCLUDES SIFT-PDDL::?O SIFT-PDDL::?P) (SIFT-PDDL::STARTED SIFT-PDDL::?O)))) :EFFECT (SIFT-PDDL::MADE SIFT-PDDL::?P)) (:ACTION SIFT-PDDL::START-ORDER :PARAMETERS (SIFT-PDDL::?O - SIFT-PDDL::ORDER SIFT-PDDL::?AVAIL SIFT-PDDL::?NEW-AVAIL - SIFT-PDDL::COUNT) :PRECONDITION (AND (SIFT-PDDL::WAITING SIFT-PDDL::?O) (SIFT-PDDL::STACKS-AVAIL SIFT-PDDL::?AVAIL) (SIFT-PDDL::NEXT-COUNT SIFT-PDDL::?NEW-AVAIL SIFT-PDDL::?AVAIL)) :EFFECT (AND (NOT (SIFT-PDDL::WAITING SIFT-PDDL::?O)) (SIFT-PDDL::STARTED SIFT-PDDL::?O) (NOT (SIFT-PDDL::STACKS-AVAIL SIFT-PDDL::?AVAIL)) (SIFT-PDDL::STACKS-AVAIL SIFT-PDDL::?NEW-AVAIL))) (:ACTION SIFT-PDDL::SHIP-ORDER :PARAMETERS (SIFT-PDDL::?O - SIFT-PDDL::ORDER SIFT-PDDL::?AVAIL SIFT-PDDL::?NEW-AVAIL - SIFT-PDDL::COUNT) :PRECONDITION (AND (SIFT-PDDL::STARTED SIFT-PDDL::?O) (SIFT-PDDL:FORALL (SIFT-PDDL::?P - SIFT-PDDL::PRODUCT) (SIFT-PDDL:IMPLY (SIFT-PDDL::INCLUDES SIFT-PDDL::?O SIFT-PDDL::?P) (SIFT-PDDL::MADE SIFT-PDDL::?P))) (SIFT-PDDL::STACKS-AVAIL SIFT-PDDL::?AVAIL) (SIFT-PDDL::NEXT-COUNT SIFT-PDDL::?AVAIL SIFT-PDDL::?NEW-AVAIL)) :EFFECT (AND (NOT (SIFT-PDDL::STARTED SIFT-PDDL::?O)) (SIFT-PDDL::SHIPPED SIFT-PDDL::?O) (NOT (SIFT-PDDL::STACKS-AVAIL SIFT-PDDL::?AVAIL)) (SIFT-PDDL::STACKS-AVAIL SIFT-PDDL::?NEW-AVAIL))) (:ACTION SIFT-PDDL::OPEN-NEW-STACK :PARAMETERS (SIFT-PDDL::?OPEN SIFT-PDDL::?NEW-OPEN - SIFT-PDDL::COUNT) :PRECONDITION (AND (SIFT-PDDL::STACKS-AVAIL SIFT-PDDL::?OPEN) (SIFT-PDDL::NEXT-COUNT SIFT-PDDL::?OPEN SIFT-PDDL::?NEW-OPEN)) :EFFECT (AND (NOT (SIFT-PDDL::STACKS-AVAIL SIFT-PDDL::?OPEN)) (SIFT-PDDL::STACKS-AVAIL SIFT-PDDL::?NEW-OPEN) (SIFT-PDDL:INCREASE (SIFT-PDDL::TOTAL-COST) 1))) (:ACTION SIFT-PDDL::DIVERGENCE :PARAMETERS NIL :PRECONDITION NIL :EFFECT (AND (SIFT-PDDL::WAITING SIFT-PDDL::O4) (NOT (SIFT-PDDL::MADE SIFT-PDDL::P4)) (NOT (SIFT-PDDL::STARTED SIFT-PDDL::O4))))) ``` In this dialect of PDDL there are, in fact, no integers (the integers in the above are all parts of symbols, such as `O4`). On 27 Mar 2026, at 17:20, Stas Boukarev wrote: > I had no errors when using: > (lambda (str obj) > (let ((*print-pprint-dispatch* (copy-pprint-dispatch nil))) > (format str "~d" obj))) > > And I can't speak to allegro or clozure. > > On Sat, Mar 28, 2026 at 1:17 AM Robert Goldman <[email protected]> > wrote: >> >> On 27 Mar 2026, at 15:55, Stas Boukarev wrote: >> >> You have >> (set-pprint-dispatch 'integer >> #'(lambda (str obj) >> (format str "~d" obj)) >> 0 pddl-pprint-dispatch) >> >> Which results in endless recursion. >> >> I just retried the test with the set-pprint-dispatch calls for >> integer and float preceded by #-sbcl, but I am getting the same >> failure as before (possibly from a different cause). >> >> Thank you very much, Stas! Do you have any clue why this infinite >> recursion would be happening only in SBCL? >> >> On Fri, Mar 27, 2026 at 11:32 PM Robert Goldman [email protected] >> wrote: >> >> Still working on my error. I have found a minimum case, and it's >> available here: >> >> https://github.com/rpgoldman/pddl-tools/pull/24 >> >> This merge request gives instructions for replication. In summary, >> it's just sbcl --load "do-test.lisp" >> >> There's a relatively small file that is read and then pprinted. This >> causes a stack overflow on SBCL. On Allegro, it prints fine. There >> appears to be some sort of spurious proliferation of stack frames, >> which may indicate an actual bug in SBCL (or there's something >> standards-variant that Allegro and CCL do differently). >> >> I would never bet on my having found a bug in SBCL versus making some >> obscure mistake, though! >> >> ________________________________ >> >> Sbcl-help mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/sbcl-help --=_MailMate_E6F20C6A-E62E-4396-99FA-846AA8A1A654_= Content-Type: text/html; charset=UTF-8 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">I'm not sure I understand. Why is it that you think prin= ting integers is the problem here?</p> <p dir=3D"auto">It may be the case that setting the pprint dispatch table= for integers could cause a problem, but the file of test data causing th= is error has no integers in it. So I'm not sure why you think that the p= print dispatch entry for integers would fix the problem. The file read i= s a file in PDDL (the input language of the international planning compet= ition). Here, with no nice formatting is that file. Using the special p= retty-print table to display it nicely is what causes the error.</p> <pre style=3D"margin-left: 15px; margin-right: 15px; padding: 5px; backgr= ound-color: #F7F7F7; border-radius: 5px 5px 5px 5px; overflow-x: auto; ma= x-width: 90vw;"><code style=3D"margin: 0 0; border-radius: 3px; backgroun= d-color: #F7F7F7; padding: 0px;">(SIFT-PDDL:DEFINE (SIFT-PDDL:DOMAIN SIFT= -PDDL::OPENSTACKS-SEQUENCEDSTRIPS-ADL) (:REQUIREMENTS :TYPING :ADL :ACTIO= N-COSTS) (:TYPES SIFT-PDDL::ORDER SIFT-PDDL::PRODUCT SIFT-PDDL::COUNT) (:= CONSTANTS SIFT-PDDL::O4 - SIFT-PDDL::ORDER SIFT-PDDL::P4 - SIFT-PDDL::PRO= DUCT) (:PREDICATES (SIFT-PDDL::INCLUDES SIFT-PDDL::?O - SIFT-PDDL::ORDER = SIFT-PDDL::?P - SIFT-PDDL::PRODUCT) (SIFT-PDDL::WAITING SIFT-PDDL::?O - S= IFT-PDDL::ORDER) (SIFT-PDDL::STARTED SIFT-PDDL::?O - SIFT-PDDL::ORDER) (S= IFT-PDDL::SHIPPED SIFT-PDDL::?O - SIFT-PDDL::ORDER) (SIFT-PDDL::MADE SIFT= -PDDL::?P - SIFT-PDDL::PRODUCT) (SIFT-PDDL::STACKS-AVAIL SIFT-PDDL::?S - = SIFT-PDDL::COUNT) (SIFT-PDDL::NEXT-COUNT SIFT-PDDL::?S SIFT-PDDL::?NS - S= IFT-PDDL::COUNT)) (:FUNCTIONS (SIFT-PDDL::TOTAL-COST) - NUMBER) (:ACTION = SIFT-PDDL::MAKE-PRODUCT :PARAMETERS (SIFT-PDDL::?P - SIFT-PDDL::PRODUCT) = :PRECONDITION (AND (NOT (SIFT-PDDL::MADE SIFT-PDDL::?P)) (SIFT-PDDL:FORAL= L (SIFT-PDDL::?O - SIFT-PDDL::ORDER) (SIFT-PDDL:IMPLY (SIFT-PDDL::INCLUDE= S SIFT-PDDL::?O SIFT-PDDL::?P) (SIFT-PDDL::STARTED SIFT-PDDL::?O)))) :EFF= ECT (SIFT-PDDL::MADE SIFT-PDDL::?P)) (:ACTION SIFT-PDDL::START-ORDER :PAR= AMETERS (SIFT-PDDL::?O - SIFT-PDDL::ORDER SIFT-PDDL::?AVAIL SIFT-PDDL::?N= EW-AVAIL - SIFT-PDDL::COUNT) :PRECONDITION (AND (SIFT-PDDL::WAITING SIFT-= PDDL::?O) (SIFT-PDDL::STACKS-AVAIL SIFT-PDDL::?AVAIL) (SIFT-PDDL::NEXT-CO= UNT SIFT-PDDL::?NEW-AVAIL SIFT-PDDL::?AVAIL)) :EFFECT (AND (NOT (SIFT-PDD= L::WAITING SIFT-PDDL::?O)) (SIFT-PDDL::STARTED SIFT-PDDL::?O) (NOT (SIFT-= PDDL::STACKS-AVAIL SIFT-PDDL::?AVAIL)) (SIFT-PDDL::STACKS-AVAIL SIFT-PDDL= ::?NEW-AVAIL))) (:ACTION SIFT-PDDL::SHIP-ORDER :PARAMETERS (SIFT-PDDL::?O= - SIFT-PDDL::ORDER SIFT-PDDL::?AVAIL SIFT-PDDL::?NEW-AVAIL - SIFT-PDDL::= COUNT) :PRECONDITION (AND (SIFT-PDDL::STARTED SIFT-PDDL::?O) (SIFT-PDDL:F= ORALL (SIFT-PDDL::?P - SIFT-PDDL::PRODUCT) (SIFT-PDDL:IMPLY (SIFT-PDDL::I= NCLUDES SIFT-PDDL::?O SIFT-PDDL::?P) (SIFT-PDDL::MADE SIFT-PDDL::?P))) (S= IFT-PDDL::STACKS-AVAIL SIFT-PDDL::?AVAIL) (SIFT-PDDL::NEXT-COUNT SIFT-PDD= L::?AVAIL SIFT-PDDL::?NEW-AVAIL)) :EFFECT (AND (NOT (SIFT-PDDL::STARTED S= IFT-PDDL::?O)) (SIFT-PDDL::SHIPPED SIFT-PDDL::?O) (NOT (SIFT-PDDL::STACKS= -AVAIL SIFT-PDDL::?AVAIL)) (SIFT-PDDL::STACKS-AVAIL SIFT-PDDL::?NEW-AVAIL= ))) (:ACTION SIFT-PDDL::OPEN-NEW-STACK :PARAMETERS (SIFT-PDDL::?OPEN SIFT= -PDDL::?NEW-OPEN - SIFT-PDDL::COUNT) :PRECONDITION (AND (SIFT-PDDL::STACK= S-AVAIL SIFT-PDDL::?OPEN) (SIFT-PDDL::NEXT-COUNT SIFT-PDDL::?OPEN SIFT-PD= DL::?NEW-OPEN)) :EFFECT (AND (NOT (SIFT-PDDL::STACKS-AVAIL SIFT-PDDL::?OP= EN)) (SIFT-PDDL::STACKS-AVAIL SIFT-PDDL::?NEW-OPEN) (SIFT-PDDL:INCREASE (= SIFT-PDDL::TOTAL-COST) 1))) (:ACTION SIFT-PDDL::DIVERGENCE :PARAMETERS NI= L :PRECONDITION NIL :EFFECT (AND (SIFT-PDDL::WAITING SIFT-PDDL::O4) (NOT = (SIFT-PDDL::MADE SIFT-PDDL::P4)) (NOT (SIFT-PDDL::STARTED SIFT-PDDL::O4))= ))) </code></pre> <p dir=3D"auto">In this dialect of PDDL there are, in fact, no integers (= the integers in the above are all parts of symbols, such as <code style=3D= "margin: 0 0; padding: 0 0.25em; border-radius: 3px; background-color: #F= 7F7F7;">O4</code>).</p> <p dir=3D"auto">On 27 Mar 2026, at 17:20, Stas Boukarev wrote:</p> <blockquote style=3D"margin: 0 0 5px; padding-left: 5px; border-left: 2px= solid #777777; color: #777777;"> <p dir=3D"auto">I had no errors when using:<br> (lambda (str obj)<br> (let ((<em>print-pprint-dispatch</em> (copy-pprint-dispatch nil)))<br> (format str "~d" obj)))</p> <p dir=3D"auto">And I can't speak to allegro or clozure.</p> <p dir=3D"auto">On Sat, Mar 28, 2026 at 1:17=E2=80=AFAM Robert Goldman <a= href=3D"mailto:[email protected]" style=3D"color: #777777;">rpgoldman@= sift.info</a> wrote:</p> <blockquote style=3D"margin: 0 0 5px; padding-left: 5px; border-left: 2px= solid #777777; border-left-color: #999999; color: #999999;"> <p dir=3D"auto">On 27 Mar 2026, at 15:55, Stas Boukarev wrote:</p> <p dir=3D"auto">You have<br> (set-pprint-dispatch 'integer<br> #'(lambda (str obj)<br> (format str "~d" obj))<br> 0 pddl-pprint-dispatch)</p> <p dir=3D"auto">Which results in endless recursion.</p> <p dir=3D"auto">I just retried the test with the set-pprint-dispatch call= s for integer and float preceded by #-sbcl, but I am getting the same fai= lure as before (possibly from a different cause).</p> <p dir=3D"auto">Thank you very much, Stas! Do you have any clue why this = infinite recursion would be happening only in SBCL?</p> <p dir=3D"auto">On Fri, Mar 27, 2026 at 11:32=E2=80=AFPM Robert Goldman <= a href=3D"mailto:[email protected]" style=3D"color: #999999;">rpgoldman= @sift.info</a> wrote:</p> <p dir=3D"auto">Still working on my error. I have found a minimum case, a= nd it's available here:</p> <p dir=3D"auto"><a href=3D"https://github.com/rpgoldman/pddl-tools/pull/2= 4" style=3D"color: #999999;">https://github.com/rpgoldman/pddl-tools/pull= /24</a></p> <p dir=3D"auto">This merge request gives instructions for replication. In= summary, it's just sbcl --load "do-test.lisp"</p> <p dir=3D"auto">There's a relatively small file that is read and then ppr= inted. This causes a stack overflow on SBCL. On Allegro, it prints fine. = There appears to be some sort of spurious proliferation of stack frames, = which may indicate an actual bug in SBCL (or there's something standards-= variant that Allegro and CCL do differently).</p> <p dir=3D"auto">I would never bet on my having found a bug in SBCL versus= making some obscure mistake, though!</p> <hr style=3D"border: 0; height: 1px; background: #333; background-image: = linear-gradient(to right, #ccc, #333, #ccc);"> <p dir=3D"auto">Sbcl-help mailing list<br> <a href=3D"mailto:[email protected]" style=3D"color: #99999= 9;">[email protected]</a><br> <a href=3D"https://lists.sourceforge.net/lists/listinfo/sbcl-help" style=3D= "color: #999999;">https://lists.sourceforge.net/lists/listinfo/sbcl-help<= /a></p> </blockquote> </blockquote> </div> </div> </body> </html> --=_MailMate_E6F20C6A-E62E-4396-99FA-846AA8A1A654_=-- --===============6184590355163526201== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline --===============6184590355163526201== 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 --===============6184590355163526201==--