On Fri, 6 Feb 2004 06:32:57 -0500 (EST), Roman Yangarber roman@cs.nyu.edu wrote:
i could not install the version i downoladed from your page yesterday. it crashes, the message given below.
in the next section i give the trace of the crash. in the following section i show how i hacked around it.
Hi Roman!
Could you please use the mailing list at
http://common-lisp.net/mailman/listinfo/cl-ppcre-devel
for bug reports. That way other people can read them, too, and maybe help out.
To me this looks like a bug in AllegroCL 4.3. I'd suggest that you ask Franz support if they have a patch for it.
Could you run all tests successfully after changing the threshold?
Cheers, Edi.
USER(3): (mk:compile-system "cl-ppcre") ; Loading /home/Data/Software/cl-ppcre/cl-ppcre.system ;;; Compiling file /home/Data/Software/cl-ppcre/packages.lisp ;;; Writing fasl file /home/Data/Software/cl-ppcre/packages.fasl ;;; Fasl write complete
< compiles and loads everything up to...>
;;; Writing fasl file /home/Data/Software/cl-ppcre/api.fasl ;;; Fasl write complete ; Fast loading /home/Data/Software/cl-ppcre/api.fasl Error: %puthash internal error: full hash table: #(#\p #\a #\b #\c #\d #\e #\f #\g #\h #\i #\j #\k #\l #\m #\n #\o) 1 1
Restart actions (select using :continue): 0: retry the load of /home/Data/Software/cl-ppcre/api.fasl 1: skip loading /home/Data/Software/cl-ppcre/api.fasl
[changing package from "COMMON-LISP-USER" to "CL-PPCRE"] [1] PPCRE(4): :zo Evaluation stack:
(ERROR "%puthash internal error: full hash table: ~s ~s ~s" #(# # # ...) ...) ->(ADD-RANGE-TO-HASH #<EQL hash-table with 16 entries @ #x8ade972> #\a ...) (CONVERT-CHAR-CLASS-TO-HASH (# # # ...)) (CONVERT-AUX (NIL NIL NIL)) (CONVERT-AUX (:GROUP #)) (CONVERT (:GROUP #)) ((METHOD CREATE-SCANNER (T)) (:GROUP #) :CASE-INSENSITIVE-MODE ...) (CREATE-SCANNER (:GROUP #) :CASE-INSENSITIVE-MODE ...) ((METHOD CREATE-SCANNER (STRING)) :UNKNOWN) ______________________________________________________________________________ my patch/fix/hack around:
i had to modify the settings for the make-hash-table call in convert.lisp:
(defun convert-char-class-to-hash (list) ...
(loop with hash = (make-hash-table :size (ceiling (expt *regex-char-code-limit* (/ 1 4))) :rehash-size (float (expt *regex-char-code-limit* (/ 1 4))) :rehash-threshold 0.5)
... )
changing the :size and :rehash-size didn't work. lowering :rehash-threshold from 1.0 to .5 seemed to help (for now?!)
it seemed like the hash table is full and is not getting resized properly. (i don't really understand how hash-tables work in lisp, so i'm not confident at all that this is the right thing to do.)