[GRASS-dev] Re: [GRASS GIS] #699: v.buffer2 segfault: in Vect_get_isle_points()

GRASS GIS trac at osgeo.org
Mon Apr 4 05:49:18 EDT 2011


#699: v.buffer2 segfault:  in Vect_get_isle_points()
----------------------+-----------------------------------------------------
  Reporter:  neteler  |       Owner:  grass-dev@…              
      Type:  defect   |      Status:  closed                   
  Priority:  normal   |   Milestone:  7.0.0                    
 Component:  Vector   |     Version:  6.4.0 RCs                
Resolution:  fixed    |    Keywords:  v.buffer                 
  Platform:  All      |         Cpu:  All                      
----------------------+-----------------------------------------------------

Comment(by mlennert):

 However, testing with the other example (see Mon, Oct 9 2006 08:02:33)
 from the old RT report gives the following, seems to reveal some remaining
 issues.

 First of all, I cannot reproduce the procedure exactly, as the v.buffer
 call with bufcolumn=lane_cout gives me


 {{{
 GRASS 7.0.svn (nc_spm_06):~ > v.buffer vbuf_fill_bug bufcol=lane_count
 out=vbuf_fill_bug_lanes scale=150
 ATTENTION : The bufcol option may contain bugs during the cleaning step.
 If
             you encounter problems, use the debug option or clean manually
             with v.clean tool=break; v.category step=0; v.extract -d
             type=area
 ERREUR :The bufcol option requires a valid layer.
 }}}

 Looking at the table connection info:

 {{{
 GRASS 7.0.svn (nc_spm_06):~ > v.db.connect -p $OUTMAP
 Vector map <vbuf_fill_bug> is connected by:
 layer <1/vbuf_fill_bug> table <vbuf_fill_bug> in database
 </home/mlennert/GRASS/DATA/nc_spm_06/mlennert/dbf/> through driver <dbf>
 with key <cat>
 }}}

 the layer <1/vbuf_fill_bug> looks weird. This should be layer <1>, no ?
 (At least it is in dev6).

 So, for now, I just try it without the bufcol parameter:


 {{{
 v.buffer input=$OUTMAP output=${OUTMAP}_buf_dyn  dist=450 --o
 }}}

 which gives me a segfault during the "Deleting boundaries" stage. Here's
 the end of the debug output:


 {{{
 D3/3: dig__angle_next_line: line = -41, side = 1, type = 4
 D3/3:  node = 25
 D3/3:   n_lines = 3
 D3/3:   i = 0 line = 45 angle = -2.446704
 D3/3:   i = 1 line = 119 angle = -2.371544
 D3/3:   i = 2 line = -41 angle = 0.770048
 D3/3:   current position = 2
 D3/3:   next = 1 line = 119 angle = -2.371544
 D3/3:   this one
 D3/3: dig_node_line_angle: node = 25 line = 119
 D3/3: Unclosed area:
 D3/3:   n_lines = 0
 D3/3: Build area for line = -29, side = 1
 D3/3: Vect_build_line_area() line = 29, side = 1
 D3/3: dig_line_get_area(): line = 29, side = 1 (left), area = 0
 D3/3: dig_build_area_with_line(): first_line = 29, side = 1
 D3/3: dig_node_line_angle: node = 12 line = 29
 D3/3: dig__angle_next_line: line = 29, side = 2, type = 4
 D3/3:  node = 12
 D3/3:   n_lines = 1
 D3/3:   i = 0 line = 29 angle = 2.079045
 D3/3:   current position = 0
 D3/3:   next = 0 line = 29 angle = 2.079045
 D3/3:   this one
 D3/3: next_line = 29
 D3/3: dig_node_angle_check: line = 29, type = 4
 D3/3: dig_node_line_angle: node = 12 line = 29
 D3/3: dig__angle_next_line: line = 29, side = 2, type = 4
 D3/3:  node = 12
 D3/3:   n_lines = 1
 D3/3:   i = 0 line = 29 angle = 2.079045
 D3/3:   current position = 0
 D3/3:   next = 0 line = 29 angle = 2.079045
 D3/3:   this one
 D3/3: dig_node_line_angle: node = 12 line = 29
 D3/3:   The line to the right has the same angle: node = 12, line = 29
 D3/3: Cannot build area, a neighbour of the line 29 has the same angle at
 the node
 D3/3:   n_lines = 0
 D3/3: Vect_attach_isles ()
 D3/3: Vect_select_isles_by_box()
 D3/3: Box(N,S,E,W,T,B): 5.853381e+06, 5.851999e+06, 1.773754e+06,
 1.772819e+06, 0.000000e+00, 0.000000e+00
 D3/3: dig_select_isles()
 D3/3:   1 isles selected
 D3/3:   number of isles to attach = 1
 D3/3: Vect_attach_isle (): isle = 1
 D3/3: Vect_isle_find_area () island = 1
 D3/3: Vect_select_areas_by_box()
 D3/3: Box(N,S,E,W,T,B): 5.850540e+06, 5.850540e+06, 1.770830e+06,
 1.770830e+06, 1.797693e+308, -1.797693e+308
 D3/3: dig_select_areas()
 D3/3:   1 areas selected
 D3/3:   area = 20 pointer to area structure = 910d088
 D3/3: 1 areas overlap island boundary point
 D3/3: area = 20
 D3/3:   area inside isolated isle
 D3/3: Island 1 is not in area
 D3/3:       isle = 1 -> area outside = 0
 D3/3: updated lines : 0 , updated nodes : 0
 D3/3:  delete line 29
 D3/3: Vect_delete_line(): name = vbuf_fill_bug_buf_dyn, line = 29
 D3/3: V2_delete_line_nat(), line = 29
 D3/3: V1_delete_line_nat(), offset = 5086
 D3/3: dig__angle_next_line: line = 29, side = 2, type = 4
 D3/3:  node = 12
 D3/3:   n_lines = 1
 D3/3:   i = 0 line = 29 angle = 2.079045
 D3/3:   current position = 0
 D3/3:   next = 0 line = 29 angle = 2.079045
 D3/3:   this one
 D3/3: dig__angle_next_line: line = 29, side = 1, type = 4
 D3/3:  node = 12
 D3/3:   n_lines = 1
 D3/3:   i = 0 line = 29 angle = 2.079045
 D3/3:   current position = 0
 D3/3:   next = 0 line = 29 angle = 2.079045
 D3/3:   this one
 D3/3: dig__angle_next_line: line = -29, side = 2, type = 4
 D3/3:  node = 13
 D3/3:   n_lines = 2
 D3/3:   i = 0 line = -29 angle = -0.800748
 D3/3:   i = 1 line = 30 angle = 2.340845
 D3/3:   current position = 0
 D3/3:   next = 1 line = 30 angle = 2.340845
 D3/3:   this one
 D3/3: dig__angle_next_line: line = -29, side = 1, type = 4
 D3/3:  node = 13
 D3/3:   n_lines = 2
 D3/3:   i = 0 line = -29 angle = -0.800748
 D3/3:   i = 1 line = 30 angle = 2.340845
 D3/3:   current position = 0
 D3/3:   next = 1 line = 30 angle = 2.340845
 D3/3:   this one
 D3/3: dig_del_line() line =  29
 D3/3: dig_spidx_del_line(): line = 29
 D3/3:   box(x1,y1,z1,x2,y2,z2): 1773637.964964 5852700.640374 0.000000
 1773675.441777 5852745.598814 0.000000
 D3/3:   ret = 0
 D3/3:     node 12 has 0 lines -> delete
 D3/3: dig_spidx_del_node(): node = 12
 D3/3: Build area for line = 29, side = 2
 D3/3: Vect_build_line_area() line = 29, side = 2
 Segmentation fault
 }}}

 Moritz

-- 
Ticket URL: <https://trac.osgeo.org/grass/ticket/699#comment:26>
GRASS GIS <http://grass.osgeo.org>



More information about the grass-dev mailing list