Subject: Re: games/gomoku
To: John Birrell <jb@cimlogic.com.au>
From: Chris G Demetriou <Chris_G_Demetriou@ux2.sp.cs.cmu.edu>
List: port-alpha
Date: 01/02/1997 21:58:40
> > After it built, it seems to work fine.
> 
> Seems to work, yes. Let it run for a while playing (with) itself, and
> without having looked at what the code does, I'd say that it has a
> a memory leak. I started it this morning and promply forgot about it
> since I was working on another machine. In just under 5 hours it has
> grown to:
> 
> USER       PID %CPU %MEM   VSZ  RSS TT  STAT STARTED       TIME COMMAND
> root     27359  9.3 76.6 31944 19880 p1  R+    8:19AM   76:42.62 ./gomoku -c
> 
> and it has only completed 34 of whatever it is doing. The machine is now
> busily swapping... Of course maybe that is what it is _supposed_ to do.
> I dunno (don't play games).

So, in less than 45 minutes (i dunno what the total real time was,
since i was doing other things and wasn't paying attention), it got
to:

games     1268  0.0 27.4 24488 24928 p2  IN+   8:39PM   17:29.03 gomoku -c -d 

on one of my boxes, and finished its game with itself.  (it won!)


That memory-sucking problem looks like it could be bad memory
fragmentation caused by the BSD malloc.

I added -lgnumalloc to its LDADD, and noticed that:
	(1) a game finished in < 15 minutes real time.  (It won
	    again!)

	(2) its memory usage was less, and stable over much of the
	    lifetime of the game.  ps said at various times (lines
	    trimmed to fit in 80 columns):

cgd     2491 99.0 13.3 11536 12072 p2  R+    9:38PM    3:35.59 obj/gomoku -c -
cgd     2491 98.8 13.3 11536 12072 p2  R+    9:38PM    9:12.22 obj/gomoku -c -
cgd     2491 93.4 13.3 11536 12072 p2  SN+   9:38PM   13:45.27 obj/gomoku -c -


It's not clear to me that there is a leak in gomoku, though if
somebody has access to a good memory profiling and leak-checking tool,
they're certainly free to look for leaks...


I would be tempted to add -lgnumalloc to gomoku's Makefile's LDADD
variable, and something similar to its DPADD variable, but (if i
recall) heretofore the "standard" policy has been that libgnumalloc
shouldn't be used on programs outside of the src/gnu tree.


chris