[GRASS-windows] Anisotropic buffer for polygons?

cokrzys at gmail.com cokrzys at gmail.com
Tue Jun 9 23:49:14 EDT 2009


Following-up on this one the v.buffer command also works for me with  
anisotropic polygon buffers when running GRASS 6.4.0RC4 on Ubuntu 8.04.

Thanks for the help, and looks like it is a Windows specific bug.

Apologies too if this doesn't land in the right place in the thread, I'm  
not sure how to respond to these things properly with g-mail.

Brian.

On Jun 8, 2009 4:36pm, Markus Neteler <neteler at osgeo.org> wrote:
> (cc grass-dev for inspection)



> On Mon, Jun 8, 2009 at 10:35 PM, Brian Krzyscokrzys at gmail.com> wrote:

> > Hi,

> >

> > I am trying to use v.buffer to create anisotropic buffers around  
> polygons,

> > and it doesn't seem to work. Example command included below, and error

> > message attached. I am running 6.4.0 on Win XP.

> >

> > v.buffer input=AltPolys at MAPSET1 output=t1 distance=500 minordistance=100

> > angle=45

> >

> > The ability to create anisotropic buffers seems like a great recent

> > addition, and I am using it quite effectively for points, maybe just  
> isn't

> > setup for polygons?



> On Linux, this seems to work.



> Here a memory test:



> valgrind --tool=memcheck --leak-check=yes --show-reachable=yes $CMD --o

> ==7737== Memcheck, a memory error detector.

> ==7737== Copyright (C) 2002-2008, and GNU GPL'd, by Julian Seward et al.

> ==7737== Using LibVEX rev 1884, a library for dynamic binary translation.

> ==7737== Copyright (C) 2004-2008, and GNU GPL'd, by OpenWorks LLP.

> ==7737== Using valgrind-3.4.1, a dynamic binary instrumentation framework.

> ==7737== Copyright (C) 2000-2008, and GNU GPL'd, by Julian Seward et al.

> ==7737== For more details, rerun with: -v

> ==7737==

> WARNING: Vector map already exists and will be overwritten

> ==7737== Syscall param write(buf) points to uninitialised byte(s)

> ==7737== at 0x70904F0: write (in /lib64/libc-2.9.so)

> ==7737== by 0x702F8E9: _IO_file_write (in /lib64/libc-2.9.so)

> ==7737== by 0x70307F8: _IO_do_write (in /lib64/libc-2.9.so)

> ==7737== by 0x70313F6: _IO_switch_to_get_mode (in /lib64/libc-2.9.so)

> ==7737== by 0x702FD6F: _IO_file_seekoff (in /lib64/libc-2.9.so)

> ==7737== by 0x70255E9: ftell (in /lib64/libc-2.9.so)

> ==7737== by 0x5D44EB1: dig_ftell (file.c:41)

> ==7737== by 0x5D458F7: dig__write_head (head.c:56)

> ==7737== by 0x4E5AE38: V1_open_new_nat (open_nat.c:127)

> ==7737== by 0x4E5A288: Vect_open_new (open.c:565)

> ==7737== by 0x402790: main (main.c:303)

> ==7737== Address 0x4029009 is not stack'd, malloc'd or (recently) free'd

> Buffering lines...

> ...

> Number of areas: 1

> Number of isles: 1

> ==7737==

> ==7737== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 2 from 1)

> ==7737== malloc/free: in use at exit: 996,601 bytes in 2,937 blocks.

> ==7737== malloc/free: 51,003 allocs, 48,066 frees, 13,321,460 bytes  
> allocated.

> ==7737== For counts of detected errors, rerun with: -v

> ==7737== Use --track-origins=yes to see where uninitialised values come  
> from

> ==7737== searching for pointers to 2,937 not-freed blocks.

> ==7737== checked 3,522,896 bytes.

> ==7737==

> ==7737==

> ==7737== 896 bytes in 28 blocks are still reachable in loss record 1 of 14

> ==7737== at 0x4C2362E: malloc (vg_replace_malloc.c:207)

> ==7737== by 0x4E52146: Vect__new_line_struct (line.c:69)

> ==7737== by 0x4E520FC: Vect_new_line_struct (line.c:59)

> ==7737== by 0x4026AF: main (main.c:290)

> ==7737==

> ==7737==

> ==7737== 2,976 bytes in 220 blocks are indirectly lost in loss record 2  
> of 14

> ==7737== at 0x4C23761: realloc (vg_replace_malloc.c:429)

> ==7737== by 0x5299148: G__realloc (alloc.c:111)

> ==7737== by 0x5D4FFB1: dig_node_alloc_line (struct_alloc.c:72)

> ==7737== by 0x5D49AC8: dig_node_add_line (plus_node.c:56)

> ==7737== by 0x5D49019: add_line (plus_line.c:44)

> ==7737== by 0x5D49319: dig_add_line (plus_line.c:114)

> ==7737== by 0x4E63331: V2_write_line_nat (write_nat.c:359)

> ==7737== by 0x4E624E1: Vect_write_line (write.c:143)

> ==7737== by 0x4E372D8: Vect_break_lines_list (break_lines.c:307)

> ==7737== by 0x4E362F3: Vect_break_lines (break_lines.c:38)

> ==7737== by 0x40332F: main (main.c:503)

> ==7737==

> ==7737==

> ==7737== 4,096 bytes in 8 blocks are definitely lost in loss record 3 of  
> 14

> ==7737== at 0x4C2362E: malloc (vg_replace_malloc.c:207)

> ==7737== by 0x5F575D6: RTreeNewNode (node.c:49)

> ==7737== by 0x5F5664C: RTreeNewIndex (index.c:29)

> ==7737== by 0x5D4E4C2: dig_spidx_init (spindex.c:36)

> ==7737== by 0x5D46C34: dig_init_plus (plus.c:94)

> ==7737== by 0x4E59306: Vect__open_old (open.c:146)

> ==7737== by 0x4E59E7D: Vect_open_old (open.c:415)

> ==7737== by 0x402746: main (main.c:300)

> ==7737==

> ==7737==

> ==7737== 6,144 bytes in 12 blocks are still reachable in loss record 4 of  
> 14

> ==7737== at 0x4C2362E: malloc (vg_replace_malloc.c:207)

> ==7737== by 0x5F575D6: RTreeNewNode (node.c:49)

> ==7737== by 0x5F5664C: RTreeNewIndex (index.c:29)

> ==7737== by 0x5D4E4C2: dig_spidx_init (spindex.c:36)

> ==7737== by 0x5D46C34: dig_init_plus (plus.c:94)

> ==7737== by 0x5D47078: dig_load_plus (plus.c:274)

> ==7737== by 0x4E5A919: Vect_open_topo (open.c:751)

> ==7737== by 0x4E5978E: Vect__open_old (open.c:229)

> ==7737== by 0x4E59E7D: Vect_open_old (open.c:415)

> ==7737== by 0x402746: main (main.c:300)

> ==7737==

> ==7737==

> ==7737== 6,312 bytes in 13 blocks are indirectly lost in loss record 5 of  
> 14

> ==7737== at 0x4C2362E: malloc (vg_replace_malloc.c:207)

> ==7737== by 0x529903E: G__malloc (alloc.c:41)

> ==7737== by 0x4E4F3BE: Vect_line_intersection (intersect.c:810)

> ==7737== by 0x4E36C34: Vect_break_lines_list (break_lines.c:219)

> ==7737== by 0x4E362F3: Vect_break_lines (break_lines.c:38)

> ==7737== by 0x40332F: main (main.c:503)

> ==7737==

> ==7737==

> ==7737== 9,744 bytes in 3 blocks are possibly lost in loss record 6 of 14

> ==7737== at 0x4C2362E: malloc (vg_replace_malloc.c:207)

> ==7737== by 0x529903E: G__malloc (alloc.c:41)

> ==7737== by 0x4E4F3BE: Vect_line_intersection (intersect.c:810)

> ==7737== by 0x4E36C34: Vect_break_lines_list (break_lines.c:219)

> ==7737== by 0x4E362F3: Vect_break_lines (break_lines.c:38)

> ==7737== by 0x40332F: main (main.c:503)

> ==7737==

> ==7737==

> ==7737== 9,916 bytes in 109 blocks are indirectly lost in loss record 7  
> of 14

> ==7737== at 0x4C2362E: malloc (vg_replace_malloc.c:207)

> ==7737== by 0x5299135: G__realloc (alloc.c:109)

> ==7737== by 0x5D505A7: dig_area_alloc_line (struct_alloc.c:310)

> ==7737== by 0x5D47ADA: dig_add_area (plus_area.c:196)

> ==7737== by 0x4E3EDA6: Vect_build_line_area (build_nat.c:90)

> ==7737== by 0x4E3FE92: Vect_build_nat (build_nat.c:599)

> ==7737== by 0x4E3DCA2: Vect_build_partial (build.c:134)

> ==7737== by 0x40338E: main (main.c:518)

> ==7737==

> ==7737==

> ==7737== 21,756 bytes in 311 blocks are still reachable in loss record 8  
> of 14

> ==7737== at 0x4C2362E: malloc (vg_replace_malloc.c:207)

> ==7737== by 0x529903E: G__malloc (alloc.c:41)

> ==7737== by 0x52BBBC5: G_define_option (parser.c:243)

> ==7737== by 0x52BBD4B: G_define_standard_option (parser.c:319)

> ==7737== by 0x401EEC: main (main.c:151)

> ==7737==

> ==7737==

> ==7737== 27,952 (352 direct, 27,600 indirect) bytes in 11 blocks are

> definitely lost in loss record 9 of 14

> ==7737== at 0x4C2362E: malloc (vg_replace_malloc.c:207)

> ==7737== by 0x4E52146: Vect__new_line_struct (line.c:69)

> ==7737== by 0x4E520FC: Vect_new_line_struct (line.c:59)

> ==7737== by 0x4E3F9F0: Vect_build_nat (build_nat.c:496)

> ==7737== by 0x4E3DCA2: Vect_build_partial (build.c:134)

> ==7737== by 0x40338E: main (main.c:518)

> ==7737==

> ==7737==

> ==7737== 27,648 bytes in 16 blocks are indirectly lost in loss record 10  
> of 14

> ==7737== at 0x4C21404: calloc (vg_replace_malloc.c:397)

> ==7737== by 0x52990BC: G__calloc (alloc.c:74)

> ==7737== by 0x5D42A59: dig__frealloc (allocation.c:144)

> ==7737== by 0x5D428DD: dig__alloc_space (allocation.c:83)

> ==7737== by 0x5D50477: dig_alloc_points (struct_alloc.c:257)

> ==7737== by 0x4E5E054: Vect__Read_line_nat (read_nat.c:309)

> ==7737== by 0x4E5DA65: V1_read_next_line_nat (read_nat.c:82)

> ==7737== by 0x4E5D742: Vect_read_next_line (read.c:76)

> ==7737== by 0x4E3FA74: Vect_build_nat (build_nat.c:519)

> ==7737== by 0x4E3DCA2: Vect_build_partial (build.c:134)

> ==7737== by 0x4E3DB95: Vect_build (build.c:55)

> ==7737== by 0x401C6B: stop (main.c:41)

> ==7737==

> ==7737==

> ==7737== 47,276 bytes in 36 blocks are still reachable in loss record 11  
> of 14

> ==7737== at 0x4C23761: realloc (vg_replace_malloc.c:429)

> ==7737== by 0x5299148: G__realloc (alloc.c:111)

> ==7737== by 0x52A7EB2: set_env (env.c:156)

> ==7737== by 0x52A7C44: read_env (env.c:104)

> ==7737== by 0x52A84CE: G__getenv (env.c:317)

> ==7737== by 0x52A8410: G_getenv (env.c:271)

> ==7737== by 0x52B6684: G_location (location.c:63)

> ==7737== by 0x52B669C: G__location_path (location.c:78)

> ==7737== by 0x52B6628: G_location_path (location.c:41)

> ==7737== by 0x52B1B0B: G__gisinit (gisinit.c:58)

> ==7737== by 0x402360: main (main.c:232)

> ==7737==

> ==7737==

> ==7737== 172,526 bytes in 207 blocks are still reachable in loss

> record 12 of 14

> ==7737== at 0x4C2362E: malloc (vg_replace_malloc.c:207)

> ==7737== by 0x5299135: G__realloc (alloc.c:109)

> ==7737== by 0x5D50078: dig_alloc_nodes (struct_alloc.c:99)

> ==7737== by 0x5D47106: dig_load_plus (plus.c:290)

> ==7737== by 0x4E5A919: Vect_open_topo (open.c:751)

> ==7737== by 0x4E5978E: Vect__open_old (open.c:229)

> ==7737== by 0x4E59E7D: Vect_open_old (open.c:415)

> ==7737== by 0x402746: main (main.c:300)

> ==7737==

> ==7737==

> ==7737== 213,996 bytes in 87 blocks are still reachable in loss record 13  
> of 14

> ==7737== at 0x4C21404: calloc (vg_replace_malloc.c:397)

> ==7737== by 0x52990BC: G__calloc (alloc.c:74)

> ==7737== by 0x52BCEC7: G_parser (parser.c:762)

> ==7737== by 0x402372: main (main.c:234)

> ==7737==

> ==7737==

> ==7737== 492,215 (472,963 direct, 19,252 indirect) bytes in 1,876

> blocks are definitely lost in loss record 14 of 14

> ==7737== at 0x4C2362E: malloc (vg_replace_malloc.c:207)

> ==7737== by 0x529903E: G__malloc (alloc.c:41)

> ==7737== by 0x5D500D5: dig_alloc_line (struct_alloc.c:114)

> ==7737== by 0x5D48EE0: add_line (plus_line.c:27)

> ==7737== by 0x5D49319: dig_add_line (plus_line.c:114)

> ==7737== by 0x4E63331: V2_write_line_nat (write_nat.c:359)

> ==7737== by 0x4E624E1: Vect_write_line (write.c:143)

> ==7737== by 0x4E372D8: Vect_break_lines_list (break_lines.c:307)

> ==7737== by 0x4E362F3: Vect_break_lines (break_lines.c:38)

> ==7737== by 0x40332F: main (main.c:503)

> ==7737==

> ==7737== LEAK SUMMARY:

> ==7737== definitely lost: 477,411 bytes in 1,895 blocks.

> ==7737== indirectly lost: 46,852 bytes in 358 blocks.

> ==7737== possibly lost: 9,744 bytes in 3 blocks.

> ==7737== still reachable: 462,594 bytes in 681 blocks.

> ==7737== suppressed: 0 bytes in 0 blocks.



> Might be a memory leak?



> For example, I don't see in main.c

> Vect_destroy_cats_struct(Cats);

> Vect_destroy_cats_struct(BCats);



> which might be necessary.



> Markus

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/grass-windows/attachments/20090610/912cc9dc/attachment.html


More information about the grass-windows mailing list