[GRASS-dev] r.li.simpson: memory leak in linked list?

Markus Neteler neteler at osgeo.org
Fri Jun 20 05:39:29 PDT 2014


Hi,

I am trying to understand a potential memory leak in r.li.simpson:

NC location, using this amount of raster cells:

rows:       1355
cols:       1503
cells:      2036565

(not so many!)

I get this valgrind result:

==26597== LEAK SUMMARY:
==26597==    definitely lost: 690,677,357 bytes in 28,777,237 blocks
==26597==    indirectly lost: 115 bytes in 2 blocks
==26597==      possibly lost: 205 bytes in 6 blocks
==26597==    still reachable: 4,225,783 bytes in 741 blocks
==26597==         suppressed: 0 bytes in 0 blocks

On larger maps wants > 10GB of RAM.

It happens in the linked list avl_to_array() management.

...
==26597== 129,615,648 bytes in 5,400,652 blocks are definitely lost in
loss record 90 of 91
==26597==    at 0x4C279EE: malloc (vg_replace_malloc.c:270)
==26597==    by 0x526CD42: G__malloc (in
/usr/local/grass-7.0.0svn/lib/libgrass_gis.7.0.0svn.so)
==26597==    by 0x4E3131C: avl_to_array (in
/usr/local/grass-7.0.0svn/lib/libgrass_rli.7.0.0svn.so)
==26597==    by 0x4E31303: avl_to_array (in
/usr/local/grass-7.0.0svn/lib/libgrass_rli.7.0.0svn.so)
==26597==    by 0x401C7B: calculate (in
/usr/local/grass-7.0.0svn/bin/r.li.simpson)
==26597==    by 0x401D8E: simpson (in
/usr/local/grass-7.0.0svn/bin/r.li.simpson)
==26597==    by 0x4E349D5: worker_process (in
/usr/local/grass-7.0.0svn/lib/libgrass_rli.7.0.0svn.so)
==26597==    by 0x4E34189: calculateIndex (in
/usr/local/grass-7.0.0svn/lib/libgrass_rli.7.0.0svn.so)
==26597==    by 0x573ED1C: (below main) (in /lib64/libc-2.12.so)
==26597==
... [many times] ...

The code:

raster/r.li/r.li.daemon/avl.c
long avl_to_array(avl_node * root, long i, AVL_table * a)
...
void avl_destroy(avl_tree root)

used in
raster/r.li/r.li.simpson/simpson.c

I am not sure if the avl_destroy() doesn't leak,

Help
Markus


More information about the grass-dev mailing list