#2024: r.li.setup generates incomplete r.li conf file ------------------------+--------------------------------------------------- Reporter: matmar | Owner: rashadkm Type: defect | Status: assigned Priority: normal | Milestone: 6.4.4 Component: Raster | Version: svn-releasebranch64 Keywords: r.li.setup | Platform: Linux Cpu: x86-64 | ------------------------+---------------------------------------------------
Comment(by hamish): with @PERMANENT issues fixed/avoided in devbr6, and testing a moving window sample with r.li.edgedensity and WORKERS=1, I'm now getting as far as a broken pipe error: {{{ *** glibc detected *** r.li.edgedensity: free(): invalid next size (normal): 0x000000000265e980 *** ... (gdb) bt #0 0x00007ffff702a8d0 in __write_nocancel () at ../sysdeps/unix/syscall- template.S:82 #1 0x00007ffff755061d in send (pipe=5, m=0x7fffffffa970) at ipc.c:31 #2 0x00007ffff754e05b in calculateIndex (file=0x604630 "test_mov_windows", f=0x401401 <edgedensity>, parameters=0x0, raster=0x604270 "landuse96_28m", output=0x604650 "rli.mov_wind") at daemon.c:208 #3 0x00000000004013fa in main (argc=4, argv=0x7fffffffdec8) at edgedensity.c:70 ... G65:history > valgrind --tool=memcheck $CMD ==14113== Memcheck, a memory error detector ==14113== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. ==14113== Using Valgrind-3.6.0.SVN-Debian and LibVEX; rerun with -h for copyright info ==14113== Command: r.li.edgedensity map=landuse96_28m conf=test_mov_windows output=rli.mov_wind ==14113== ==14113== Syscall param write(buf) points to uninitialised byte(s) ==14113== at 0x5A028D0: __write_nocancel (syscall-template.S:82) ==14113== by 0x54B861C: send (ipc.c:31) ==14113== by 0x54B5EEA: calculateIndex (daemon.c:167) ==14113== by 0x4013F9: main (edgedensity.c:70) ==14113== Address 0x7feffc8d4 is on thread 1's stack ==14113== ==14118== Conditional jump or move depends on uninitialised value(s) ==14118== at 0x54B9214: RLI_get_cell_raster_row (worker.c:286) ==14118== by 0x4017D1: calculate (edgedensity.c:189) ==14118== by 0x4014C3: edgedensity (edgedensity.c:95) ==14118== by 0x54B8E40: worker (worker.c:192) ==14118== by 0x54B5BEA: calculateIndex (daemon.c:102) ==14118== by 0x4013F9: main (edgedensity.c:70) ==14118== ==14118== Syscall param write(buf) points to uninitialised byte(s) ==14118== at 0x5A028D0: __write_nocancel (syscall-template.S:82) ==14118== by 0x54B861C: send (ipc.c:31) ==14118== by 0x54B8EA5: worker (worker.c:206) ==14118== by 0x54B5BEA: calculateIndex (daemon.c:102) ==14118== by 0x4013F9: main (edgedensity.c:70) ==14118== Address 0x7feffb364 is on thread 1's stack ==14118== ==14113== Syscall param write(buf) points to uninitialised byte(s) ==14113== at 0x5A028D0: __write_nocancel (syscall-template.S:82) ==14113== by 0x54B861C: send (ipc.c:31) ==14113== by 0x54B605A: calculateIndex (daemon.c:208) ==14113== by 0x4013F9: main (edgedensity.c:70) ==14113== Address 0x7feffc8d4 is on thread 1's stack ==14113== ==14118== Invalid write of size 4 ==14118== at 0x4E5D630: G_set_c_null_value (null_val.c:147) ==14118== by 0x401726: calculate (edgedensity.c:176) ==14118== by 0x4014C3: edgedensity (edgedensity.c:95) ==14118== by 0x54B8E40: worker (worker.c:192) ==14118== by 0x54B5BEA: calculateIndex (daemon.c:102) ==14118== by 0x4013F9: main (edgedensity.c:70) ==14118== Address 0x6278f04 is 0 bytes after a block of size 2,004 alloc'd ==14118== at 0x4C2380C: calloc (vg_replace_malloc.c:467) ==14118== by 0x4E3D66C: G__calloc (alloc.c:77) ==14118== by 0x4E3D843: G_allocate_cell_buf (alloc_cell.c:66) ==14118== by 0x4016DC: calculate (edgedensity.c:169) ==14118== by 0x4014C3: edgedensity (edgedensity.c:95) ==14118== by 0x54B8E40: worker (worker.c:192) ==14118== by 0x54B5BEA: calculateIndex (daemon.c:102) ==14118== by 0x4013F9: main (edgedensity.c:70) ==14118== ==14118== Invalid read of size 4 ==14118== at 0x401A72: calculate (edgedensity.c:242) ==14118== by 0x4014C3: edgedensity (edgedensity.c:95) ==14118== by 0x54B8E40: worker (worker.c:192) ==14118== by 0x54B5BEA: calculateIndex (daemon.c:102) ==14118== by 0x4013F9: main (edgedensity.c:70) ==14118== Address 0x5eb8d64 is 0 bytes after a block of size 2,004 alloc'd ==14118== at 0x4C2380C: calloc (vg_replace_malloc.c:467) ==14118== by 0x4E3D66C: G__calloc (alloc.c:77) ==14118== by 0x4E3D843: G_allocate_cell_buf (alloc_cell.c:66) ==14118== by 0x54B8D51: worker (worker.c:167) ==14118== by 0x54B5BEA: calculateIndex (daemon.c:102) ==14118== by 0x4013F9: main (edgedensity.c:70) ==14118== ==14118== Invalid read of size 4 ==14118== at 0x401975: calculate (edgedensity.c:228) ==14118== by 0x4014C3: edgedensity (edgedensity.c:95) ==14118== by 0x54B8E40: worker (worker.c:192) ==14118== by 0x54B5BEA: calculateIndex (daemon.c:102) ==14118== by 0x4013F9: main (edgedensity.c:70) ==14118== Address 0x5eb8d64 is 0 bytes after a block of size 2,004 alloc'd ==14118== at 0x4C2380C: calloc (vg_replace_malloc.c:467) ==14118== by 0x4E3D66C: G__calloc (alloc.c:77) ==14118== by 0x4E3D843: G_allocate_cell_buf (alloc_cell.c:66) ==14118== by 0x54B8D51: worker (worker.c:167) ==14118== by 0x54B5BEA: calculateIndex (daemon.c:102) ==14118== by 0x4013F9: main (edgedensity.c:70) ==14118== ==14118== Invalid read of size 4 ==14118== at 0x401A93: calculate (edgedensity.c:244) ==14118== by 0x4014C3: edgedensity (edgedensity.c:95) ==14118== by 0x54B8E40: worker (worker.c:192) ==14118== by 0x54B5BEA: calculateIndex (daemon.c:102) ==14118== by 0x4013F9: main (edgedensity.c:70) ==14118== Address 0x6278f04 is 0 bytes after a block of size 2,004 alloc'd ==14118== at 0x4C2380C: calloc (vg_replace_malloc.c:467) ==14118== by 0x4E3D66C: G__calloc (alloc.c:77) ==14118== by 0x4E3D843: G_allocate_cell_buf (alloc_cell.c:66) ==14118== by 0x4016DC: calculate (edgedensity.c:169) ==14118== by 0x4014C3: edgedensity (edgedensity.c:95) ==14118== by 0x54B8E40: worker (worker.c:192) ==14118== by 0x54B5BEA: calculateIndex (daemon.c:102) ==14118== by 0x4013F9: main (edgedensity.c:70) ==14118== ==14118== Invalid read of size 4 ==14118== at 0x401AEC: calculate (edgedensity.c:250) ==14118== by 0x4014C3: edgedensity (edgedensity.c:95) ==14118== by 0x54B8E40: worker (worker.c:192) ==14118== by 0x54B5BEA: calculateIndex (daemon.c:102) ==14118== by 0x4013F9: main (edgedensity.c:70) ==14118== Address 0x5eb9584 is 0 bytes after a block of size 2,004 alloc'd ==14118== at 0x4C2380C: calloc (vg_replace_malloc.c:467) ==14118== by 0x4E3D66C: G__calloc (alloc.c:77) ==14118== by 0x4E3D843: G_allocate_cell_buf (alloc_cell.c:66) ==14118== by 0x54B8D51: worker (worker.c:167) ==14118== by 0x54B5BEA: calculateIndex (daemon.c:102) ==14118== by 0x4013F9: main (edgedensity.c:70) ==14118== ==14118== Invalid read of size 4 ==14118== at 0x401C87: calculate (edgedensity.c:316) ==14118== by 0x4014C3: edgedensity (edgedensity.c:95) ==14118== by 0x54B8E40: worker (worker.c:192) ==14118== by 0x54B5BEA: calculateIndex (daemon.c:102) ==14118== by 0x4013F9: main (edgedensity.c:70) ==14118== Address 0x5eb8d64 is 0 bytes after a block of size 2,004 alloc'd ==14118== at 0x4C2380C: calloc (vg_replace_malloc.c:467) ==14118== by 0x4E3D66C: G__calloc (alloc.c:77) ==14118== by 0x4E3D843: G_allocate_cell_buf (alloc_cell.c:66) ==14118== by 0x54B8D51: worker (worker.c:167) ==14118== by 0x54B5BEA: calculateIndex (daemon.c:102) ==14118== by 0x4013F9: main (edgedensity.c:70) ==14118== ==14118== Invalid write of size 4 ==14118== at 0x4E5D630: G_set_c_null_value (null_val.c:147) ==14118== by 0x401829: calculate (edgedensity.c:197) ==14118== by 0x4014C3: edgedensity (edgedensity.c:95) ==14118== by 0x54B8E40: worker (worker.c:192) ==14118== by 0x54B5BEA: calculateIndex (daemon.c:102) ==14118== by 0x4013F9: main (edgedensity.c:70) ==14118== Address 0x6279b14 is 0 bytes after a block of size 2,004 alloc'd ==14118== at 0x4C2380C: calloc (vg_replace_malloc.c:467) ==14118== by 0x4E3D66C: G__calloc (alloc.c:77) ==14118== by 0x4E3D843: G_allocate_cell_buf (alloc_cell.c:66) ==14118== by 0x4017DF: calculate (edgedensity.c:192) ==14118== by 0x4014C3: edgedensity (edgedensity.c:95) ==14118== by 0x54B8E40: worker (worker.c:192) ==14118== by 0x54B5BEA: calculateIndex (daemon.c:102) ==14118== by 0x4013F9: main (edgedensity.c:70) ==14118== --14118-- VALGRIND INTERNAL ERROR: Valgrind received a signal 11 (SIGSEGV) - exiting --14118-- si_code=1; Faulting address: 0x86291FA8; sp: 0x40327be10 valgrind: the 'impossible' happened: Killed by fatal signal ==14118== at 0x380362F9: vgPlain_arena_malloc (m_mallocfree.c:245) sched status: running_tid=1 Thread 1: status = VgTs_Runnable ==14118== at 0x4C244E8: malloc (vg_replace_malloc.c:236) ==14118== by 0x4E3D59E: G__malloc (alloc.c:37) ==14118== by 0x54B9641: avl_make (avl.c:43) ==14118== by 0x401BD6: calculate (edgedensity.c:279) ==14118== by 0x4014C3: edgedensity (edgedensity.c:95) ==14118== by 0x54B8E40: worker (worker.c:192) ==14118== by 0x54B5BEA: calculateIndex (daemon.c:102) ==14118== by 0x4013F9: main (edgedensity.c:70) }}} ... r.li.daemon/ipc.c: {{{ int send(int pipe, msg *m) { int check; /* write on pipe */ check = write(pipe, m, sizeof(msg)); if (check > 0) return 1; else return 0; } }}} Hamish -- Ticket URL: <http://trac.osgeo.org/grass/ticket/2024#comment:27> GRASS GIS <http://grass.osgeo.org> _______________________________________________ grass-dev mailing list grass-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/grass-dev