Opened 13 years ago
Closed 11 years ago
#1451 closed defect (fixed)
r.li.mps (mean patch size): SIGPIPE at ipc.c:31
Reported by: | hamish | Owned by: | |
---|---|---|---|
Priority: | normal | Milestone: | 6.4.4 |
Component: | Raster | Version: | svn-develbranch6 |
Keywords: | r.li.mps, r.li.daemon | Cc: | |
CPU: | x86-64 | Platform: | Linux |
Description
Hi,
as reported on the ML, r.li.mps falls over with a SIGPIPE. Running outside of gdb results in a "double free or corruption (fasttop)" fault.
to reproduce: (North Carolina dataset)
g.region rast=landcover_1m r.mapcalc "forest.test = if(landcover_1m == 2, 1, null())" mkdir -p ~/.r.li/history/ cat << EOF > ~/.r.li/history/movwindow7 SAMPLINGFRAME 0|0|1|1 SAMPLEAREA -1|-1|0.0147679324895|0.0133079847909 MOVINGWINDOW EOF r.li.mps map=forest.test conf=movwindow7 out=mps.test ... Program received signal SIGPIPE, Broken pipe.
gdb session extracts:
(gdb) frame 2 #2 0x00007ffff754edc9 in calculateIndex (file=0x605270 "movwindow7", f=0x4013a7 <meanPatchSize>, parameters=0x0, raster=0x605250 "forest1996.maybe", output=0x605590 "test.out") at daemon.c:198 198 send(child[j].channel, &m); (gdb) list 193 j = 0; 194 195 196 while (j < WORKERS && donePid != child[j].pid) 197 j++; 198 send(child[j].channel, &m); 199 200 } 201 202 /*kill childs */ (gdb) frame 1 #1 0x00007ffff7551365 in send (pipe=5, m=0x7fffffffaa80) at ipc.c:31 31 check = write(pipe, m, sizeof(msg)); (gdb) list 26 int send(int pipe, msg * m) 27 { 28 int check; 29 30 /* write on pipe */ 31 check = write(pipe, m, sizeof(msg)); 32 if (check > 0) 33 return 1; 34 else 35 return 0;
Hamish
Change History (5)
comment:1 by , 13 years ago
comment:2 by , 12 years ago
r.li.patchdensity has the same trouble, complains about double-free or corruption.
by setting WORKERS=1 and g.gisenv DEBUG=1, I can see that the main patch_density() runs twice, the first time the G_free(sup) command runs ok, the second time it tries to run that it crashes.
a gdb backtrace shows it crashing in the same place as r.li.mps given above, at send(child[j].channel, &m)
.
# main r.li man page spearfish example G65> export WORKERS=1 G65> r.li.patchdensity map=geology conf=testconf16 out=patch.dens --v D1/1: r.li.daemon pathSetup: [/home/hamish/.r.li/history/testconf16] D1/1: begin patch_density() index D1/1: begin patch_density() index *** glibc detected *** r.li.patchdensity: double free or corruption (fasttop): 0x0000000001aacdd0 *** ======= Backtrace: ========= /lib/libc.so.6(+0x71e16)[0x7f1a78f72e16] /lib/libc.so.6(cfree+0x6c)[0x7f1a78f77b8c] /home/hamish/src/grass/svn/grass65/dist.x86_64-unknown-linux-gnu/lib/libgrass_gis.6.5.svn.so(G_free+0x18)[0x7f1a79b247db] r.li.patchdensity(patch_density+0x75f)[0x401666] /home/hamish/src/grass/svn/grass65/dist.x86_64-unknown-linux-gnu/lib/libgrass_rli.so(worker+0x6f5)[0x7f1a794ead49] /home/hamish/src/grass/svn/grass65/dist.x86_64-unknown-linux-gnu/lib/libgrass_rli.so(calculateIndex+0x35f)[0x7f1a794e7aeb] r.li.patchdensity(main+0xf1)[0x400f05] /lib/libc.so.6(__libc_start_main+0xfd)[0x7f1a78f1fc8d] r.li.patchdensity[0x400d59] ======= Memory map: ======== 00400000-00402000 r-xp 00000000 09:01 1998212 /home/hamish/src/grass/svn/grass65/dist.x86_64-unknown-linux-gnu/bin/r.li.patchdensity 00601000-00602000 rw-p 00001000 09:01 1998212 /home/hamish/src/grass/svn/grass65/dist.x86_64-unknown-linux-gnu/bin/r.li.patchdensity 01a96000-01ab7000 rw-p 00000000 00:00 0 [heap] 7f1a74000000-7f1a74021000 rw-p 00000000 00:00 0 7f1a74021000-7f1a78000000 ---p 00000000 00:00 0 7f1a78ae7000-7f1a78afd000 r-xp 00000000 09:00 1175043 /lib/libgcc_s.so.1 7f1a78afd000-7f1a78cfc000 ---p 00016000 09:00 1175043 /lib/libgcc_s.so.1 7f1a78cfc000-7f1a78cfd000 rw-p 00015000 09:00 1175043 /lib/libgcc_s.so.1 7f1a78cfd000-7f1a78cff000 r-xp 00000000 09:00 1180574 /lib/libdl-2.11.3.so 7f1a78cff000-7f1a78eff000 ---p 00002000 09:00 1180574 /lib/libdl-2.11.3.so 7f1a78eff000-7f1a78f00000 r--p 00002000 09:00 1180574 /lib/libdl-2.11.3.so 7f1a78f00000-7f1a78f01000 rw-p 00003000 09:00 1180574 /lib/libdl-2.11.3.so 7f1a78f01000-7f1a7905a000 r-xp 00000000 09:00 1179836 /lib/libc-2.11.3.so 7f1a7905a000-7f1a79259000 ---p 00159000 09:00 1179836 /lib/libc-2.11.3.so 7f1a79259000-7f1a7925d000 r--p 00158000 09:00 1179836 /lib/libc-2.11.3.so 7f1a7925d000-7f1a7925e000 rw-p 0015c000 09:00 1179836 /lib/libc-2.11.3.so 7f1a7925e000-7f1a79263000 rw-p 00000000 00:00 0 7f1a79263000-7f1a792e3000 r-xp 00000000 09:00 1180575 /lib/libm-2.11.3.so 7f1a792e3000-7f1a794e3000 ---p 00080000 09:00 1180575 /lib/libm-2.11.3.so 7f1a794e3000-7f1a794e4000 r--p 00080000 09:00 1180575 /lib/libm-2.11.3.so 7f1a794e4000-7f1a794e5000 rw-p 00081000 09:00 1180575 /lib/libm-2.11.3.so 7f1a794e5000-7f1a794ee000 r-xp 00000000 09:01 1988192 /home/hamish/src/grass/svn/grass65/dist.x86_64-unknown-linux-gnu/lib/libgrass_rli.6.5.svn.so 7f1a794ee000-7f1a796ee000 ---p 00009000 09:01 1988192 /home/hamish/src/grass/svn/grass65/dist.x86_64-unknown-linux-gnu/lib/libgrass_rli.6.5.svn.so 7f1a796ee000-7f1a796ef000 rw-p 00009000 09:01 1988192 /home/hamish/src/grass/svn/grass65/dist.x86_64-unknown-linux-gnu/lib/libgrass_rli.6.5.svn.so 7f1a796ef000-7f1a79706000 r-xp 00000000 09:00 1047279 /usr/lib/libz.so.1.2.3.4 7f1a79706000-7f1a79905000 ---p 00017000 09:00 1047279 /usr/lib/libz.so.1.2.3.4 7f1a79905000-7f1a79906000 rw-p 00016000 09:00 1047279 /usr/lib/libz.so.1.2.3.4 7f1a79906000-7f1a7990f000 r-xp 00000000 09:01 1988074 /home/hamish/src/grass/svn/grass65/dist.x86_64-unknown-linux-gnu/lib/libgrass_datetime.6.5.svn.so 7f1a7990f000-7f1a79b0f000 ---p 00009000 09:01 1988074 /home/hamish/src/grass/svn/grass65/dist.x86_64-unknown-linux-gnu/lib/libgrass_datetime.6.5.svn.so 7f1a79b0f000-7f1a79b10000 rw-p 00009000 09:01 1988074 /home/hamish/src/grass/svn/grass65/dist.x86_64-unknown-linux-gnu/lib/libgrass_datetime.6.5.svn.so 7f1a79b10000-7f1a79b76000 r-xp 00000000 09:01 1988086 /home/hamish/src/grass/svn/grass65/dist.x86_64-unknown-linux-gnu/lib/libgrass_gis.6.5.svn.so 7f1a79b76000-7f1a79d75000 ---p 00066000 09:01 1988086 /home/hamish/src/grass/svn/grass65/dist.x86_64-unknown-linux-gnu/lib/libgrass_gis.6.5.svn.so 7f1a79d75000-7f1a79d78000 rw-p 00065000 09:01 1988086 /home/hamish/src/grass/svn/grass65/dist.x86_64-unknown-linux-gnu/lib/libgrass_gis.6.5.svn.so 7f1a79d78000-7f1a79d79000 rw-p 00000000 00:00 0 7f1a79d79000-7f1a79d97000 r-xp 00000000 09:00 1178057 /lib/ld-2.11.3.so 7f1a79f6f000-7f1a79f73000 rw-p 00000000 00:00 0 7f1a79f93000-7f1a79f96000 rw-p 00000000 00:00 0 7f1a79f96000-7f1a79f97000 r--p 0001d000 09:00 1178057 /lib/ld-2.11.3.so 7f1a79f97000-7f1a79f98000 rw-p 0001e000 09:00 1178057 /lib/ld-2.11.3.so 7f1a79f98000-7f1a79f99000 rw-p 00000000 00:00 0 7fff66a9c000-7fff66ab1000 rw-p 00000000 00:00 0 [stack] 7fff66bff000-7fff66c00000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
Hamish
follow-up: 4 comment:3 by , 11 years ago
Keywords: | r.li.daemon added |
---|---|
Milestone: | 6.4.2 → 6.4.4 |
see also comment 27 in #2024, same crash in the same place but set off by r.li.edgedensity. Includes backtrace and valgrind analysis.
comment:4 by , 11 years ago
comment:5 by , 11 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
ps- see #1323 for some automatically detected problems by Cppcheck
Hamish