Hi all,
a long time ago, I discovered that beirc crashes after 3 or 4 days of running. Now I managed to narrow it down to the incremental redisplay code. It seems that the children-updating-output slot of updating output records has duplicate ORs (68 unique ORs vs. 1765 non-unique) added, which makes sbcl go boom pretty soon.
This patch fixes it, but I'm not sure if I'm solving the root of the problem. Tim should maybe have a look at it (:
Index: incremental-redisplay.lisp =================================================================== RCS file: /project/mcclim/cvsroot/mcclim/incremental-redisplay.lisp,v retrieving revision 1.60 diff -u -r1.60 incremental-redisplay.lisp --- incremental-redisplay.lisp 22 Apr 2006 15:31:27 -0000 1.60 +++ incremental-redisplay.lisp 26 Apr 2006 18:12:40 -0000 @@ -442,7 +442,7 @@ ((child updating-output-record-mixin) record) (declare (ignore record)) (if (parent-updating-output child) - (push child (children-updating-output (parent-updating-output child))) + (pushnew child (children-updating-output (parent-updating-output child))) nil))
(oh, and things seem a bit snappier with it, obviously (-:)
Cheers,
Today, Andreas Fuchs asf@boinkor.net wrote:
This patch fixes it, but I'm not sure if I'm solving the root of the problem. Tim should maybe have a look at it (:
I looked (grepped, in fact) some more, and it seems that children-updating-output is not used anywhere in all of mcclim. Maybe we can just kill that slot, and the book keeping code with it.
Thoughts?,
Andreas Fuchs asf@boinkor.net writes:
It seems that the children-updating-output slot of updating output records has duplicate ORs (68 unique ORs vs. 1765 non-unique) added, which makes sbcl go boom pretty soon.
FWIW, this may also be why I experience memory leaks in Climacs (and eventually, end up in SBCL's low-level debugger with complaints about no more memory).