Glynn Clements pisze:
Maciej Sieczka wrote:

In any case, this doesn't help identify the real problem. Can you
step through the g.region code from the beginning and find where in g.region (or the GRASS libraries) that it's going out of control?
If you can tell how to do it I'd try.

$ gdb g.region
break main
run -g
Starting program: /usr/local/src/grass/svn/dist.i686-pc-linux-gnu/bin/g.region 
-g
...
Breakpoint 1, main (argc=2, argv=0xbfc241a4) at main.c:31
31              int print_flag = 0;
next
35              int row_flag=0, col_flag=0;

Then keep pressing Return (which repeats the last command) until it
crashes.

Here's the result:

873             if (print_flag)
(gdb)
874                 print_window (&window, print_flag);
(gdb)

Program received signal SIGSEGV, Segmentation fault.
0x00007f3fa74b369e in sincos (val=0.90594848802138783, sin_val=0x7fffb0ac7040, cos_val=0x7fffb0ac7038) at GDapi.c:6265
6265        *sin_val = sin(val);
(gdb)

The crash will probably have occured during a call to some library
function. Set a breakpoint on that function ("break <name>") then type
"run -g" to start again. When it hits the first breakpoint (main),
type "cont". When it hits the second breakpoint, start single-stepping
(next, Return, Return ...) until it crashes.

So I did:

(gdb) break print_window
Breakpoint 2 at 0x404380: file printwindow.c, line 9.

        <snip>

D3/10: region item: t-b resol:  1
D3/10: G_adjust_Cell_head: epsilon_ns: 8.32639e-07, epsilon_ew: 1e-06
D3/10: G_adjust_Cell_head: epsilon_ns: 8.32639e-07, epsilon_ew: 1e-06

Breakpoint 2, print_window (window=0x7fffd3fd5fe0, print_flag=3) at printwindow.c:9
9       {
(gdb) next
20          if (print_flag & PRINT_SH)
(gdb)
9       {
(gdb)
20          if (print_flag & PRINT_SH)
(gdb)
25          G_format_northing(window->north, north, x);
(gdb)
26          G_format_northing(window->south, south, x);
(gdb)
27          G_format_easting(window->east, east, x);
(gdb)
28          G_format_easting(window->west, west, x);
(gdb)
29          G_format_resolution(window->ew_res, ewres, x);
(gdb)
30          G_format_resolution(window->ew_res3, ewres3, x);
(gdb)
31          G_format_resolution(window->ns_res, nsres, x);
(gdb)
32          G_format_resolution(window->ns_res3, nsres3, x);
(gdb)
33          G_format_resolution(window->tb_res, tbres, x);
(gdb)
34          G_begin_distance_calculations();
(gdb)
37          ew_dist1 =
(gdb)

Program received signal SIGSEGV, Segmentation fault.
0x00007fa1ca1c369e in sincos (val=0.90594848802138783, sin_val=0x7fffd37d7030, cos_val=0x7fffd37d7028) at GDapi.c:6265
6265        *sin_val = sin(val);
(gdb)

Repeat this procedure until the crash occurs on a statement which
either isn't a function call or which isn't a GRASS function.

I don't know how to tell the difference.

Maciek

--
Maciej Sieczka
www.sieczka.org
_______________________________________________
grass-dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/grass-dev

Reply via email to