bug#39586: pfds 0.3 hamt-fold crashes with guile-2.0 and guile-3.0

Rob Browning <[email protected]>
Newsgroups gmane.lisp.guile.bugs
Message-ID <[email protected]>
With the current pdfs (https://github.com/ijp/pfds
454033f82dac7c0b0ea9e84eed1e8ed316487c78), the code below halts on an
rnrs record assertion failure with both guile-2.2 and guile-3.0, and I'm
wondering if I'm doing something wrong, if it might be a guile bug, or
if it's more likely an issue with pfds.

  (use-modules
   ((pfds hamts) #:prefix hamts/)
   ((srfi srfi-69) #:prefix hash/))

  (define x (hamts/hamt-set
             (hamts/hamt-set
              (hamts/hamt-set
               (hamts/make-hamt hash/hash eqv?)
               #:x 1)
              #:y 2)
             #:z 3))

  (hamts/hamt-fold (lambda (k v result) result)

It looks like the crash is in (rnrs records procedural) here:

    (if (and parent (struct-ref parent rtd-index-sealed?))
	(r6rs-raise (make-assertion-violation)))

And here's the full output:

  $ GUILE_LOAD_PATH=$(pwd)/mod guile -x .sls -s hamts-error.scm
  Backtrace:
  In ice-9/boot-9.scm:
    1736:10  8 (with-exception-handler _ _ #:unwind? _ # _)
  In unknown file:
             7 (apply-smob/0 #<thunk 563a568e6b20>)
  In ice-9/boot-9.scm:
      718:2  6 (call-with-prompt _ _ #<procedure default-prompt-handle?>)
  In ice-9/eval.scm:
      619:8  5 (_ #(#(#<directory (guile-user) 563a569b6f00>)))
  In ice-9/boot-9.scm:
     2806:4  4 (save-module-excursion _)
    4351:12  3 (_)
  In pfds/private/vectors.sls:
       62:0  2 (vector-fold #<procedure 563a568470c0 at pfds/hamts.sl?> ?)
  In pfds/hamts.sls:
      308:0  1 (_ _ #t)
  In rnrs/records/procedural.scm:
      130:2  0 (_ #(#f #f #f #f #f #f #f #f #f #f #f #f #f #f #f #f # ?))

  rnrs/records/procedural.scm:130:2: ERROR:
    1. &assertion-failure

Thanks
-- 
Rob Browning
rlb @defaultvalue.org and @debian.org
GPG as of 2011-07-10 E6A9 DA3C C9FD 1FF8 C676 D2C4 C0F0 39E9 ED1B 597A
GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.