Opened 15 years ago
Last modified 8 years ago
#801 new defect
r.le.patch crashes with -c flag
| Reported by: | wilsonadam | Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | 6.4.6 |
| Component: | Raster | Version: | 6.4.0 RCs |
| Keywords: | r.le.patch, segfault | Cc: | |
| CPU: | x86-64 | Platform: | Linux |
Description (last modified by )
I am trying to run r.le.patch to create a map of separate 'patches' using the -c flag to drop the edges and only keep core areas of a certain size.
To recreate this:
g.region n=1 s=0 e=1 w=0 res=.01 ## Make some region r.random.surface output=surface ## create a raster to use as input r.random input=surface n=10 raster_output=points ## create some random points r.grow input=points radius=10 output=patch ## grow them to make 'patches' r.le.patch -n map=patch sam=w co1=2 co2=c1 ## run r.le.patch with -n flag to identify the patches by number - it works fine r.le.patch -c map=patch sam=w co1=2 co2=c1 ## run r.le.patch with -c flag to identify only 'core areas' - it crashes!
It segfaults with the error shown below. I am running the GRASS6.4.0RC5 checked out and compiled this morning on Fedora 11 2.6.30.9-90.fc11.x86_64
Any ideas? Am I doing something wrong or is this a bug? I've tried several settings for the co1 and c02 and it crashes with every combination I have tried.
Thanks for any help.
###########################################################
GRASS 6.4.0RC5 (CFR):/media/Data > r.le.patch -c map=patch sam=w co1=2 co2=c1
PARAMETER CHOICES:
MAP: patch
SAMPLE: whole map TRACING: 8 neighbor
OUTPUT MAPS:
interior
CORE MEASURES:
mean core size
R.LE.PATCH IS WORKING....;
*** glibc detected *** r.le.patch: double free or corruption (out): 0x0000000001c92be0 ***
======= Backtrace: =========
/lib64/libc.so.6[0x39e5e75a96]
r.le.patch(cell_clip+0x8fa)[0x417cea]
r.le.patch(cell_clip_drv+0x18c)[0x4180dc]
r.le.patch(patch_fore+0x98)[0x40c2d8]
r.le.patch(main+0x4fe)[0x40e61e]
/lib64/libc.so.6(__libc_start_main+0xfd)[0x39e5e1ea2d]
r.le.patch[0x403109]
======= Memory map: ========
00400000-0041d000 r-xp 00000000 fd:00 341102 /usr/local/grass-6.4.0RC5/bin/r.le.patch
0061d000-0061e000 rw-p 0001d000 fd:00 341102 /usr/local/grass-6.4.0RC5/bin/r.le.patch
01c4c000-01caf000 rw-p 00000000 00:00 0 [heap]
39e5a00000-39e5a1f000 r-xp 00000000 fd:00 45132 /lib64/ld-2.10.1.so
39e5c1e000-39e5c1f000 r--p 0001e000 fd:00 45132 /lib64/ld-2.10.1.so
39e5c1f000-39e5c20000 rw-p 0001f000 fd:00 45132 /lib64/ld-2.10.1.so
39e5e00000-39e5f64000 r-xp 00000000 fd:00 45133 /lib64/libc-2.10.1.so
39e5f64000-39e6164000 ---p 00164000 fd:00 45133 /lib64/libc-2.10.1.so
39e6164000-39e6168000 r--p 00164000 fd:00 45133 /lib64/libc-2.10.1.so
39e6168000-39e6169000 rw-p 00168000 fd:00 45133 /lib64/libc-2.10.1.so
39e6169000-39e616e000 rw-p 00000000 00:00 0
39e6200000-39e6282000 r-xp 00000000 fd:00 54274 /lib64/libm-2.10.1.so
39e6282000-39e6482000 ---p 00082000 fd:00 54274 /lib64/libm-2.10.1.so
39e6482000-39e6483000 r--p 00082000 fd:00 54274 /lib64/libm-2.10.1.so
39e6483000-39e6484000 rw-p 00083000 fd:00 54274 /lib64/libm-2.10.1.so
39e6600000-39e6602000 r-xp 00000000 fd:00 56013 /lib64/libdl-2.10.1.so
39e6602000-39e6802000 ---p 00002000 fd:00 56013 /lib64/libdl-2.10.1.so
39e6802000-39e6803000 r--p 00002000 fd:00 56013 /lib64/libdl-2.10.1.so
39e6803000-39e6804000 rw-p 00003000 fd:00 56013 /lib64/libdl-2.10.1.so
39e6a00000-39e6a15000 r-xp 00000000 fd:00 56006 /lib64/libz.so.1.2.3
39e6a15000-39e6c14000 ---p 00015000 fd:00 56006 /lib64/libz.so.1.2.3
39e6c14000-39e6c15000 rw-p 00014000 fd:00 56006 /lib64/libz.so.1.2.3
39f0400000-39f0419000 r-xp 00000000 fd:00 116332 /lib64/libgcc_s-4.4.1-20090729.so.1
39f0419000-39f0619000 ---p 00019000 fd:00 116332 /lib64/libgcc_s-4.4.1-20090729.so.1
39f0619000-39f061a000 rw-p 00019000 fd:00 116332 /lib64/libgcc_s-4.4.1-20090729.so.1
7f308a2da000-7f308f3ad000 r--p 00000000 fd:00 56067 /usr/lib/locale/locale-archive
7f308f3ad000-7f308f3b0000 rw-p 00000000 00:00 0
7f308f3d2000-7f308f3da000 r-xp 00000000 fd:00 358068 /usr/local/grass-6.4.0RC5/lib/libgrass_datetime.6.4.0RC5.so
7f308f3da000-7f308f5d9000 ---p 00008000 fd:00 358068 /usr/local/grass-6.4.0RC5/lib/libgrass_datetime.6.4.0RC5.so
7f308f5d9000-7f308f5da000 rw-p 00007000 fd:00 358068 /usr/local/grass-6.4.0RC5/lib/libgrass_datetime.6.4.0RC5.so
7f308f5da000-7f308f5db000 rw-p 00000000 00:00 0
7f308f5db000-7f308f62c000 r-xp 00000000 fd:00 358108 /usr/local/grass-6.4.0RC5/lib/libgrass_gis.6.4.0RC5.so
7f308f62c000-7f308f82c000 ---p 00051000 fd:00 358108 /usr/local/grass-6.4.0RC5/lib/libgrass_gis.6.4.0RC5.so
7f308f82c000-7f308f82e000 rw-p 00051000 fd:00 358108 /usr/local/grass-6.4.0RC5/lib/libgrass_gis.6.4.0RC5.so
7f308f82e000-7f308f838000 rw-p 00000000 00:00 0
7fffcf185000-7fffcf19a000 rw-p 00000000 00:00 0 [stack]
7fffcf1ee000-7fffcf1ef000 r-xp 0000000Aborted
It crashes with G_free() in trace.c line 339.
Change History (5)
comment:1 by , 15 years ago
| Description: | modified (diff) |
|---|
comment:2 by , 13 years ago
| Component: | Default → Raster |
|---|---|
| Keywords: | r.le.patch segfault added; segmentation fault removed |
follow-up: 4 comment:3 by , 12 years ago
| Milestone: | 6.4.0 → 6.4.4 |
|---|
The crash persists in current 6.4.svn, it fails on G_free() in trace.c, line 765
source:grass/branches/releasebranch_6_4/raster/r.le/r.le.patch/trace.c#L765
comment:4 by , 12 years ago
Replying to neteler:
The crash persists in current 6.4.svn, it fails on G_free() in trace.c, line 765
source:grass/branches/releasebranch_6_4/raster/r.le/r.le.patch/trace.c#L765
One problem is that memory is allocated for ncols but then ncols + 3 entries are accessed, causing memory corruption. Furthermore, there are various for (i = 1; i < nrows + 1; i++) which also exceed allocated memory. The r.le.* modules are deprecated and deactivated in trunk; it is recommended to use the r.li.* modules instead.
Markus M
comment:5 by , 8 years ago
| Milestone: | 6.4.4 → 6.4.6 |
|---|

Here a backtrace:
GRASS 6.4.0svn (spearfish60):~ > r.le.patch -c map=patch sam=w co1=2 co2=c1 PARAMETER CHOICES: MAP: patch SAMPLE: whole map TRACING: 8 neighbor OUTPUT MAPS: interior CORE MEASURES: mean core size R.LE.PATCH IS WORKING....; Aborted patch 10 GRASS 6.4.0svn (spearfish60):~ > gdb r.le.patch GNU gdb 6.8-6mdv2009.1 (Mandriva Linux release 2009.1) ... This GDB was configured as "x86_64-mandriva-linux-gnu"... (gdb) r -c map=patch sam=w co1=2 co2=c1 Starting program: /home/neteler/grass64/dist.x86_64-unknown-linux-gnu/bin/r.le.patch -c map=patch sam=w co1=2 co2=c1 PARAMETER CHOICES: MAP: patch SAMPLE: whole map TRACING: 8 neighbor OUTPUT MAPS: interior CORE MEASURES: mean core size R.LE.PATCH IS WORKING....; Tracing patch 10 Program received signal SIGABRT, Aborted. 0x00007fe8a0f84a15 in raise () from /lib64/libc.so.6 (gdb) bt #0 0x00007fe8a0f84a15 in raise () from /lib64/libc.so.6 #1 0x00007fe8a0f86243 in abort () from /lib64/libc.so.6 #2 0x00007fe8a0fc59d0 in ?? () from /lib64/libc.so.6 #3 0x00007fe8a196b1fa in G_free (buf=0x249aae0) at alloc.c:129 #4 0x0000000000417b49 in cell_clip_drv (col0=0, row0=0, ncols=100, nrows=100, value=0x0, index=0, radius=0) at trace.c:339 #5 0x000000000040d221 in whole_reg_driver () at driver.c:2816 #6 0x0000000000403342 in patch_fore () at driver.c:115 #7 0x000000000041014e in main (argc=6, argv=0x7fffe6d0f2d8) at main.c:197 (gdb) bt full #0 0x00007fe8a0f84a15 in raise () from /lib64/libc.so.6 No symbol table info available. #1 0x00007fe8a0f86243 in abort () from /lib64/libc.so.6 No symbol table info available. #2 0x00007fe8a0fc59d0 in ?? () from /lib64/libc.so.6 No symbol table info available. #3 0x00007fe8a196b1fa in G_free (buf=0x249aae0) at alloc.c:129 No locals. #4 0x0000000000417b49 in cell_clip_drv (col0=0, row0=0, ncols=100, nrows=100, value=0x0, index=0, radius=0) at trace.c:339 pat = (CELL **) 0x7fe8a197bc00 pat_buf = (CELL *) 0x7fe8a1bc0a40 cor_cell_buf = (CELL *) 0x24b2ab0 cor_fcell_buf = (FCELL *) 0x7fffe6d0f180 buf = (DCELL **) 0x2470370 cor = (DCELL **) 0x249a790 cor_dcell_buf = (DCELL *) 0x7fe8a1ddf710 null_buf = (DCELL **) 0x2485580 i = 0 j = 101 fd = 1 fe = 8 p = 6423704 infd = 7 centernull = 1 empty = 0 hist_ok = 1 colr_ok = 1 cats_ok = 1 range_ok = 1 mapset = 0x7fe8a1bc0a40 "neteler" name = 0x24674a0 "patch" list_head = (PATCH *) 0x0 hist = {mapid = "Wed Nov 4 20:31:52 2009", '\0' <repeats 55 times>, title = "patch", '\0' <repeats 74 times>, mapset = "neteler", '\0' <repeats 72 times>, creator = "neteler", '\0' <repeats 72 times>, maptype = "raster", '\0' <repeats 73 times>, datsrc_1 = '\0' <repeats 79 times>, datsrc_2 = '\0' <repeats 79 times>, keywrd = "generated by r.grow", '\0' <repeats 60 times>, edlinecnt = 1, edhist = { "r.grow input=\"points\" output=\"patch\" radius=10 metric=\"euclidean\"", '\0' <repeats 14 times>, '\0' <repeats 79 times> <repeats 49 times>}} cats = {ncats = 219, num = 255, title = 0x24ba700 "Random points on [surface in neteler]", fmt = 0x24ba8b0 "", m1 = 0, a1 = 0, m2 = 0, a2 = 0, q = {truncate_only = 0, round_only = 0, defaultDRuleSet = 1685287777, defaultCRuleSet = 0, infiniteLeftSet = 0, infiniteRightSet = 0, cRangeSet = -65536, maxNofRules = 250, nofRules = 219, defaultDMin = 2.7027177092469472e-82, defaultDMax = 6.9483966104968404e-310, defaultCMin = 0, defaultCMax = 0, infiniteDLeft = 0, infiniteDRight = 3.914178569747262e+180, infiniteCLeft = 23, infiniteCRight = 0, dMin = 1, dMax = 255, cMin = 0, cMax = 218, table = 0x24b4350, fp_lookup = {vals = 0x0, rules = 0x7fffe6d0df10, nalloc = -422519216, active = 0, inf_dmin = 2.1290593012604334e-317, inf_dmax = 6.9533349326523867e-310, inf_min = 4206800, inf_max = 0}}, labels = 0x24b07d0, marks = 0x24b0fe0, nalloc = 256, last_marked_rule = -1} newcats = {ncats = 0, num = 0, title = 0x24b00c0 "Random points on [surface in neteler]", fmt = 0x0, m1 = 0, a1 = 0, m2 = 0, a2 = 0, q = {truncate_only = 0, round_only = 0, defaultDRuleSet = 38184240, defaultCRuleSet = 0, infiniteLeftSet = 0, infiniteRightSet = 0, cRangeSet = -422519248, maxNofRules = 0, nofRules = 0, defaultDMin = 0, defaultDMax = 6.9533349325994229e-310, defaultCMin = -422518352, defaultCMax = 32767, infiniteDLeft = -nan(0xfffffffffffff), infiniteDRight = 6.9533349326547583e-310, infiniteCLeft = -422518352, infiniteCRight = 32767, dMin = 6.953334932613652e-310, dMax = 6.9483969725536792e-310, cMin = 0, cMax = 0, table = 0x0, fp_lookup = {vals = 0x7fffe6d0e180, rules = 0x7fe8a0fb9619, nalloc = -72515583, active = 0, inf_dmin = 6.9533349326547583e-310, inf_dmax = 6.9533349326547583e-310, inf_min = -422518352, inf_max = 32767}}, labels = 0x0, marks = 0x7fffe6d0e1db, nalloc = 0, last_marked_rule = -1} stats = {node = 0x24b00f0, tlen = 10, N = 3, curp = 0, null_data_count = 8532, curoffset = -422518784} colr = {version = 0, shift = 0, invert = 0, is_float = 0, null_set = 0, null_red = 232 '\ufffd', null_grn = 127 '\177', null_blu = 0 '\0', undef_set = 0, undef_red = 0 '\0', undef_grn = 0 '\0', undef_blu = 0 '\0', fixed = {rules = 0x24bb7b0, n_rules = 1, lookup = {red = 0x1a19aa2a0 <Address 0x1a19aa2a0 out of bounds>, grn = 0x7fe8a19aa2a0 "MASK", blu = 0x246a530 "-3.461977 -3.461977 to -3.461977", set = 0x7fffe6d0ee20 "", nalloc = -1583890387, active = 0}, fp_lookup = {vals = 0x0, rules = 0x7fe8a1bc0a40, nalloc = 0, active = 0}, min = 1, max = 255}, modular = {rules = 0x0, n_rules = 0, lookup = {red = 0x7fffe6d0df10 "", grn = 0x7fffe6d0de50 "\200\ufffd\ufffd\ufffd\ufffd\177", blu = 0x0, set = 0x7fe8a19b101c "", nalloc = 1, active = 0}, fp_lookup = { vals = 0x7fffe6d0d950, rules = 0xd, nalloc = 0, active = 0}, min = 0, max = -1}, cmin = 1, cmax = 255} range = {min = 76, max = 171, first_time = 0} fprange = {min = 2.1290593012604334e-317, max = 6.9483969595155832e-310, first_time = 0} quant = {truncate_only = -1583694900, round_only = 32744, defaultDRuleSet = -1583694895, defaultCRuleSet = 32744, infiniteLeftSet = -422519552, infiniteRightSet = 32767, cRangeSet = 38188368, maxNofRules = 0, nofRules = 38171648, defaultDMin = 1.8865940164224833e-316, defaultDMax = 6.9533349327978397e-310, defaultCMin = -1583818750, defaultCMax = 32744, infiniteDLeft = 6.9533349325962609e-310, infiniteDRight = 2.1219957904712067e-314, infiniteCLeft = 38188368, infiniteCRight = 0, dMin = 1.8859378972448062e-316, dMax = 6.9483969725914258e-310, cMin = -1583694895, cMax = 32744, table = 0x5002467400, fp_lookup = {vals = 0x246a880, rules = 0x7fffe6d0db60, nalloc = 4206800, active = 0, inf_dmin = 6.9533349328713566e-310, inf_dmax = 0, inf_min = 0, inf_max = 0}} data_type = 0 #5 0x000000000040d221 in whole_reg_driver () at driver.c:2816 i = -422514224 j = 32767 regcnt = 0 found = 38171664 fr = 0 nrows = 100 ncols = 100 ptrfirst = (REGLIST *) 0x7fe8a1bc0a40 ptrthis = (REGLIST *) 0x24674a0 ptrnew = (REGLIST *) 0xfefefefefefefeff row_buf = (CELL *) 0x2470370 #6 0x0000000000403342 in patch_fore () at driver.c:115 No locals. #7 0x000000000041014e in main (argc=6, argv=0x7fffe6d0f2d8) at main.c:197 module = (struct GModule *) 0x7fe8a1bc0f40