A long time ago I wrote an SDL2 binding but stopped using it because of
memory leaks causing the UI to crash and burn after about 20 minutes of
continuous use. A real shame, I loved writing the UI in prolog!

Today I have come back to it... cutting to the chase, I first thought that
I would rule out gprolog... I created an empty file called 'empty.pl' that
is literally, empty, zero bytes.

-rw-r--r--  1 seancharles  staff        0 11 Mar 10:33 empty.pl

Then I started a new gprolog session, NOT the one produced by my build
process with the SDL2 bindings, then, using "leaks" on El Capitan...

Process 2280: 2200 nodes malloced for 1029 KB
Failed to map remote region: [0x7fffffe6d000-0x7fffffe6e000] r-x shared
memory (1 page) [root] (error: 1)
*Process 2280: 0 leaks for 0 total leaked bytes.*

So far so good, now I read in my empty Prolog source file,

| ?- [empty].
compiling /Users/seancharles/Downloads/gnuprolog-libsdl2/empty.pl for byte
code...
/Users/seancharles/Downloads/gnuprolog-libsdl2/empty.pl compiled, 0 lines
read - 97 bytes written, 115 ms

Then re-run leaks:

leaks Report Version:  2.0
Process 2280: 2213 nodes malloced for 1029 KB
Failed to map remote region: [0x7fffffe6d000-0x7fffffe6e000] r-x shared
memory (1 page) [root] (error: 1)
*Process 2280: 1 leak for 64 total leaked bytes.*
*Leak: 0x7f9b21c033a0  size=64  zone: DefaultMallocZone_0x10c9cb000
 length: 59  "/var/folders/5p/c_cpyzqd0v15vd5rnvnr7xlm0000gn/T/gplcmXtOKb"*


I then re-imported the same file a few more times, and each time the number
of leaks went up by one:

leaks Report Version:  2.0
Process 2280: 2220 nodes malloced for 1030 KB
Failed to map remote region: [0x7fffffe6d000-0x7fffffe6e000] r-x shared
memory (1 page) [root] (error: 1)
Process 2280: 4 leaks for 256 total leaked bytes.
*Leak: 0x7f9b21c033a0  size=64  zone: DefaultMallocZone_0x10c9cb000
 length: 59  "/var/folders/5p/c_cpyzqd0v15vd5rnvnr7xlm0000gn/T/gplcmXtOKb"*
*Leak: 0x7f9b21c03420  size=64  zone: DefaultMallocZone_0x10c9cb000
 length: 59  "/var/folders/5p/c_cpyzqd0v15vd5rnvnr7xlm0000gn/T/gplcUONsld"*
*Leak: 0x7f9b21c03510  size=64  zone: DefaultMallocZone_0x10c9cb000
 length: 59  "/var/folders/5p/c_cpyzqd0v15vd5rnvnr7xlm0000gn/T/gplc2xrLwg"*
*Leak: 0x7f9b21e14cd0  size=64  zone: DefaultMallocZone_0x10c9cb000
 length: 59  "/var/folders/5p/c_cpyzqd0v15vd5rnvnr7xlm0000gn/T/gplctG76Ve"*

I don't yet know where this is happening or how I can track it down..
valgrind won't install on my version of OSX but it would be nice to pin it
down and fix it up!

I am going to download and build this under Ubuntu, see if it does the
same, and if so, try to find the leak using DDD and valgrind if I can...
unless somebody beats me too it which I would love to be the case because
then I can focus on my own code which leaks somewhere I am sure in the
 shady twilight world between C and Prolog.

Thanks,
Sean.
_______________________________________________
Users-prolog mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/users-prolog

Reply via email to