On Sat, Apr 4, 2009 at 9:51 AM, Hamish <[email protected]> wrote: > > Markus wrote: >> I have tried to run r.random with vector output on a large >> (400mega cells) raster map. After 3% of writing out the >> vector stuff I had to cancel due to severe swapping >> (and 4GB RAM). "top" shows that all memory is eaten by the >> DBF driver. ... >> Trying the same with the SQLite driver worked well, ... > add "--trace-children=yes" to the valgrind options.
Ah, ok! So I get for the child (large losses only): ...Writing vector map <vectrandom30percent> ... [...] ==3747== 31,560 bytes in 1 blocks are definitely lost in loss record 7 of 9 ==3747== at 0x4C2136E: malloc (vg_replace_malloc.c:207) ==3747== by 0x5253135: G__realloc (alloc.c:109) ==3747== by 0x403808: add_column (column.c:48) ==3747== by 0x40627E: execute (dbfexe.c:213) ==3747== by 0x4083C3: db__driver_create_table (create_table.c:18) ==3747== by 0x4E29627: db_d_create_table (d_create_tab.c:35) ==3747== by 0x4E2ABB1: db_driver (driver.c:155) ==3747== by 0x406F09: main (main.c:47) ==3747== ==3747== ==3747== 1,526,321 bytes in 190,787 blocks are definitely lost in loss record 8 of 9 ==3747== at 0x4C2136E: malloc (vg_replace_malloc.c:207) ==3747== by 0x525303E: G__malloc (alloc.c:41) ==3747== by 0x406170: execute (dbfexe.c:139) ==3747== by 0x406952: db__driver_execute_immediate (execute.c:28) ==3747== by 0x4E29AA0: db_d_execute_immediate (d_execute.c:36) ==3747== by 0x4E2ABB1: db_driver (driver.c:155) ==3747== by 0x406F09: main (main.c:47) ==3747== ==3747== ==3747== 4,960,470 bytes in 763,149 blocks are definitely lost in loss record 9 of 9 ==3747== at 0x4C2136E: malloc (vg_replace_malloc.c:207) ==3747== by 0x61E87A1: strdup (in /lib64/libc-2.8.so) ==3747== by 0x5AD4407: yylex (lex.l:111) ==3747== by 0x5AD6C39: yyparse (y.tab.c:1469) ==3747== by 0x4058CB: execute (dbfexe.c:82) ==3747== by 0x406952: db__driver_execute_immediate (execute.c:28) ==3747== by 0x4E29AA0: db_d_execute_immediate (d_execute.c:36) ==3747== by 0x4E2ABB1: db_driver (driver.c:155) ==3747== by 0x406F09: main (main.c:47) ==3747== ==3747== LEAK SUMMARY: ==3747== definitely lost: 6,518,472 bytes in 953,941 blocks. ==3747== possibly lost: 0 bytes in 0 blocks. ==3747== still reachable: 16,826 bytes in 21 blocks. ==3747== suppressed: 0 bytes in 0 blocks. Building topology for vector map <vectrandom30percent> [...] In db/drivers/dbf/dbfexe.c I see cols = (int *)G_malloc(ncols * sizeof(int)); but not any G_free(cols). Likewise for set = (int *)G_malloc(aset * sizeof(int)); ? Markus _______________________________________________ grass-dev mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/grass-dev
