[GRASS-dev] [GRASS GIS] #2024: r.li.setup generates incomplete r.li conf file
GRASS GIS
trac at osgeo.org
Fri Feb 7 03:46:23 PST 2014
#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>
More information about the grass-dev
mailing list