[GRASS-dev] Re: [GRASS GIS] #50: g.copy segfaults (debian.gfoss.it package) [and latest SVN]

Glynn Clements glynn at gclements.plus.com
Sat Apr 12 16:15:40 EDT 2008


GRASS GIS wrote:

> #50: g.copy segfaults (debian.gfoss.it package) [and latest SVN]

> ----------------------+-----------------------------------------------------
>   Reporter:  steko    |       Owner:  grass-dev at lists.osgeo.org
>       Type:  defect   |      Status:  new                      
>   Priority:  major    |   Milestone:  6.4.0                    
>  Component:  default  |     Version:  6.3.0 RCs                
> Resolution:           |    Keywords:  g.copy                   
> ----------------------+-----------------------------------------------------
> Comment (by dylan):
> 
>  Replying to [comment:6 glynn]:
>  > Replying to [comment:5 dylan]:
>  > > I have attached two strace logs, one from the working version of
>  g.copy (-O0), and one from the non-working version (-O1).
>  >
>  > strace doesn't provide enough detail for this kind of problem. All that
>  can be deduced from the backtraces is that the segfault occurs sometime
>  after the "cell" files are closed (recursive_copy(),
>  general/manage/lib/do_copy.c:152) but before the access() test for whether
>  the cellhd file exists (G__make_mapset_element(), lib/gis/mapset_msc.c:60,
>  called from do_copy(), general/manage/lib/do_copy.c:42).
>  >
>  > AFAICT, the segfault could be occurring in recursive_copy(),
>  G_verbose(), G__make_mapset_element() or do_copy().
>  >
>  > A gdb C backtrace would be more useful, even if it isn't enough to
>  pinpoint the problem. A C backtrace will still report the correct
>  function; it just won't necessarily report the correct line number, or the
>  actual state of any variables (it *might* get this information right, but
>  as you can't tell whether the information is accurate, it doesn't
>  necessarily help).
> 
>  Thanks for the tips Glynn. Any further hints on how to do the above?

	$ gdb g.copy
	> run rast=t1,t1_copy --o

When it stops due to the segfault:

	> where
	> quit

>  > Also, it would be useful to know whether the problem occurs when lib/gis
>  is compiled with optimisation or when general/manage is compiled with
>  optimisation.
> 
>  After the configure step, how can I disable optimization for specific
>  parts of the source tree?

First, compile everything. Then, re-compile specific parts with
different flags using e.g.:

	make -C lib/gis clean
	make -C lib/gis CFLAGS1='-g -O0'

-- 
Glynn Clements <glynn at gclements.plus.com>


More information about the grass-dev mailing list