[mcclim-devel] incremental-redisplay cons cell memory leak

Andreas Fuchs asf at boinkor.net
Wed Apr 26 18:21:23 UTC 2006


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,
-- 
Andreas Fuchs, (http://|im:asf@|mailto:asf@)boinkor.net, antifuchs



More information about the mcclim-devel mailing list