id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc
717,gethash causes infinite rehash loop,wws,gz,"Our busy server (6 processes pulling and parsing XML feeds plus Hunchentoot serving web pages), got an infinite loop while interning a string.

We've seen this only once after a week of running this code 24/7, so it's likely hard to reproduce.

{{{
(lisp-implementation-version)
""Version 1.5-r13695M  (LinuxX8664)""
}}}

Relevant code:

{{{
(defun make-weak-hash-table (&rest rest)
  (declare (dynamic-extent rest))
  #-ccl                                                                         
  (apply #'make-hash-table rest)
  #+ccl
  (apply #'make-hash-table :weak :value rest))

(defvar *equal-object-hash*
  (make-weak-hash-table :test 'equal))

(defun equal-object-p (object)
  (or (stringp object)
      (and (numberp object) (not (fixnump object)))))

(defun intern-equal-object (object)
  (cond ((equal-object-p object)
         (or (gethash object *equal-object-hash*)
             (setf (gethash object *equal-object-hash*) object)))
        (t object)))
}}}

Error: Stack overflow: ""CCL has entered the kernel debugger, due to an exception 11""

Backtrace:
{{{
(#x00007F7502647CA0) #x00003000000B2294 : #<Function LOCK-FREE-COUNT-ENTRIES #x00003000000B220F> + 133
(#x00007F7502647CE8) #x00003000000B2F9C : #<Function %LOCK-FREE-REHASH #x00003000000B2F0F> + 141
(#x00007F7502647D40) #x00003000000B29F4 : #<Function LOCK-FREE-REHASH #x00003000000B291F> + 213
(#x00007F7502647D80) #x00003000000B2294 : #<Function LOCK-FREE-COUNT-ENTRIES #x00003000000B220F> + 133
(#x00007F7502647DC8) #x00003000000B2F9C : #<Function %LOCK-FREE-REHASH #x00003000000B2F0F> + 141
(#x00007F7502647E20) #x00003000000B29F4 : #<Function LOCK-FREE-REHASH #x00003000000B291F> + 213
(#x00007F7502647E60) #x00003000000B2294 : #<Function LOCK-FREE-COUNT-ENTRIES #x00003000000B220F> + 133
(#x00007F7502647EA8) #x00003000000B2F9C : #<Function %LOCK-FREE-REHASH #x00003000000B2F0F> + 141
(#x00007F7502647F00) #x00003000000B29F4 : #<Function LOCK-FREE-REHASH #x00003000000B291F> + 213
(#x00007F7502647F40) #x00003000000B2294 : #<Function LOCK-FREE-COUNT-ENTRIES #x00003000000B220F> + 133
[...]
(#x00007F7502655680) #x00003000000960B4 : #<Function GETHASH #x0000300000095E4F> + 613
(#x00007F75026556D0) #x000030200297F85C : #<Function INTERN-EQUAL-OBJECT #x000030200297F7CF> + 141
(#x00007F75026556E8) #x0000302002B0659C : #<Function (:INTERNAL BUILD-FN12015 BWIN-XML-PARSER) #x0000302002B0654F> + 77
(#x00007F7502655748) #x0000302002A09714 : #<Function MAYBE-BUILD-GAME-INTERNAL #x0000302002A096AF> + 101
(#x00007F7502655780) #x0000302002B07974 : #<Function (:INTERNAL ***-XML-PARSER) #x0000302002B0750F> + 1125
(#x00007F7502655828) #x0000302002A8D9FC : #<Function DOM-TRAVERSAL-HELPER #x0000302002A8D80F> + 493
(#x00007F7502655888) #x0000302002A8E1AC : #<Function DOM-TRAVERSAL-HELPER #x0000302002A8D80F> + 2461
(#x00007F7502655948) #x0000302002A8E1AC : #<Function DOM-TRAVERSAL-HELPER #x0000302002A8D80F> + 2461
(#x00007F7502655A08) #x0000302002A8E1AC : #<Function DOM-TRAVERSAL-HELPER #x0000302002A8D80F> + 2461
(#x00007F7502655AC8) #x0000302002A8C9FC : #<Function DOM-TRAVERSAL #x0000302002A8C82F> + 461
(#x00007F7502655B60) #x0000302002A04A04 : #<Function PROCESS-FEED-INTERNAL #x0000302002A043BF> + 1605
(#x00007F7502655C30) #x0000302002A05D04 : #<Function PROCESS-FEED #x0000302002A05A6F> + 661
(#x00007F7502655CB0) #x00003020029FC43C : #<Function (:INTERNAL PROCESS-NEXT-FEED) #x00003020029FB7AF> + 3213
(#x00007F7502655D50) #x0000302002414C24 : #<Function (:INTERNAL MAKE-TASK) #x000030200241471F> + 1285
(#x00007F7502655DE8) #x000030200240BE3C : #<Function (:INTERNAL NEW-WORKER-THREAD) #x000030200240BADF> + 861
(#x00007F7502655E68) #x0000302000F1EFDC : #<Function (:INTERNAL BINDING-DEFAULT-SPECIALS) #x0000302000F1ECBF> + 797
(#x00007F7502655EB0) #x00003000004718E4 : #<Function RUN-PROCESS-INITIAL-FORM #x000030000047160F> + 725
(#x00007F7502655F48) #x0000300000472204 : #<Function (:INTERNAL (%PROCESS-PRESET-INTERNAL (PROCESS))) #x000030000047207F> + 389
(#x00007F7502655F98) #x000030000044F66C : #<Function (:INTERNAL THREAD-MAKE-STARTUP-FUNCTION) #x000030000044F53F> + 301
}}}",defect,closed,normal,,"Runtime (threads, GC)",unspecific,fixed,,svspire@…
