On 05/20/16 15:26, Swift Griggs wrote:
On Fri, 20 May 2016, Manuel Bouyer wrote:what tools do we have on NetBSD to find a memory leak in a userland program (actually OpenCPN - which is a large C++ program with dynamic libraries and uses dlopen()) ?Manuel, I'm guessing you are a much better C programmer than I, but I can relate what I use. I do three different things: 1. If it'll compile on Linux, I'll test it with valgrind and just apply the results on the NetBSD side. 2. ElectricFence, but I doubt it'd work with libs dlopen()'d. Then again, if you used it with LD_PRELOAD you might be able to pre-empt the symbols even in the dynamic libs (in theory). 3. I created a cheeseball reference counter similar to the one in glib by just wrappering malloc(). It just add/drops/prints a linked list of structs which are entries I'm tracking. When everything is working perfectly, I remove it. Voila clean memory management without krufty GC overhead!The memory usage of the process is slowy growing, until the systems gets out of ram/swap and kills it (on my evbarm which has no swap it takes about 2 days).My guess (which ain't worth much, take it with a grain of salt) you'd find it pretty darn fast with valgrind. It's never failed me, but it's limited to Linux, Darwin, and Solaris. -Swift I *LOUDLY* 2nd the motion on valgrind. Might be sweet if it got ported over to NetBSD .... -- William A. Mahaffey III ---------------------------------------------------------------------- "The M1 Garand is without doubt the finest implement of war ever devised by man." -- Gen. George S. Patton Jr. |