[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gnugo-devel] Segmentation fault, dragon2 array appears to be corrupted
From: |
Arend Bayer |
Subject: |
[gnugo-devel] Segmentation fault, dragon2 array appears to be corrupted |
Date: |
Fri, 11 Jan 2002 00:48:13 +0100 (CET) |
Well, after moving into a new appartment, Christmas holidas, eventually
getting my phone line fixed and some more time until I had successfully
configured my Internet hardware, I am back on line... Anyway, happy new
year to everyone.
I have to apologize for the Mac OS troubles one of my patches
introduced in compute_surrounding_moyo_sizes. Not that I think I could
have foreseen this strange problem; yet the crucial array moyo_segmentation
is a lot bigger than needed, and I will send a patch to revise this
soon. Thanks a lot to Allan Crossman and Marco Scheurer for tracking this
bug down!
However, at the moment I am trying to fix another bug of the current CVS,
and I would very much appreciate to get a hint from some of the more
experienced programmers. It occurrs when running
gnugo-cvs -l Lazarus-gnugo-3.1.19-200201092246.sgf -L 10 -t -w
A segmentation fault occures at score.c:483, and the dragon2 array
appears corrupted (according to gdb). To track down the bug, I compiled
dragon.c without optimization. To my surprise, not even the initialization
of the array seems to work. I set a breakpoint at dragon.c:714, and performed
instructions step by step from there on, with very strange results.
The member hostile_neighbors is missing from all dragon2[.] entries,
and the other members behave like being shifted. E.g., dragon[1].origin
seems to get corrupted from from them command
dragon2[0].semeai_margin_of_safety = -1.
Is this just me having set up gdb incorrectly, or is this already evidence
the bug? I append a copy/paste of the gdb output below.
-Arend
Breakpoint 1, initialize_supplementary_dragon_data () at dragon.c:714
714 for (d = 0; d < number_of_dragons; d++) {
(gdb) display d
1: d = 2
(gdb) display dragon2[d]
2: dragon2[d] = {origin = 0, adjacent = {0, 96, 2017, 0, 0, 0, 0, 0, 0, 0},
neighbors = 0, moyo = 0, safety = 0, escape_route = 0, genus = 0, heyes = 0,
heye = 0, lunch = 0, semeai = 0, semeai_margin_of_safety = 0}
(gdb) step
715 dragon2[d].neighbors = 0;
2: dragon2[d] = {origin = 84, adjacent = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
neighbors = 0, moyo = 0, safety = 1075272160, escape_route = -1, genus = 0,
heyes = 0, heye = 0, lunch = 141522952, semeai = -1,
semeai_margin_of_safety = -1}
1: d = 0
(gdb)
716 dragon2[d].hostile_neighbors = 0;
2: dragon2[d] = {origin = 84, adjacent = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
neighbors = 0, moyo = 0, safety = 1075272160, escape_route = -1, genus = 0,
heyes = 0, heye = 0, lunch = 141522952, semeai = -1,
semeai_margin_of_safety = -1}
1: d = 0
(gdb)
717 dragon2[d].moyo = -1;
2: dragon2[d] = {origin = 84, adjacent = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
neighbors = 0, moyo = 0, safety = 1075272160, escape_route = -1, genus = 0,
heyes = 0, heye = 0, lunch = 141522952, semeai = -1,
semeai_margin_of_safety = -1}
1: d = 0
(gdb)
718 dragon2[d].safety = -1;
2: dragon2[d] = {origin = 84, adjacent = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
neighbors = 0, moyo = 0, safety = -1, escape_route = -1, genus = 0,
heyes = 0, heye = 0, lunch = 141522952, semeai = -1,
semeai_margin_of_safety = -1}
1: d = 0
(gdb) step
719 dragon2[d].escape_route = 0;
2: dragon2[d] = {origin = 84, adjacent = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
neighbors = 0, moyo = 0, safety = -1, escape_route = -1, genus = 0,
heyes = 0, heye = 0, lunch = 141522952, semeai = -1,
semeai_margin_of_safety = -1}
1: d = 0
(gdb) step
720 dragon2[d].genus = 0;
2: dragon2[d] = {origin = 84, adjacent = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
neighbors = 0, moyo = 0, safety = -1, escape_route = -1, genus = 0,
heyes = 0, heye = 0, lunch = 141522952, semeai = -1,
semeai_margin_of_safety = -1}
1: d = 0
(gdb) step
721 dragon2[d].heyes = 0;
2: dragon2[d] = {origin = 84, adjacent = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
neighbors = 0, moyo = 0, safety = -1, escape_route = -1, genus = 0,
heyes = 0, heye = 0, lunch = 141522952, semeai = -1,
semeai_margin_of_safety = -1}
1: d = 0
(gdb) step
722 dragon2[d].heye = NO_MOVE;
2: dragon2[d] = {origin = 84, adjacent = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
neighbors = 0, moyo = 0, safety = -1, escape_route = -1, genus = 0,
heyes = 0, heye = 0, lunch = 141522952, semeai = -1,
semeai_margin_of_safety = -1}
1: d = 0
(gdb) step
723 dragon2[d].lunch = NO_MOVE;
2: dragon2[d] = {origin = 84, adjacent = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
neighbors = 0, moyo = 0, safety = -1, escape_route = -1, genus = 0,
heyes = 0, heye = 0, lunch = 0, semeai = -1, semeai_margin_of_safety = -1}
1: d = 0
(gdb) step
724 dragon2[d].semeai = 0;
2: dragon2[d] = {origin = 84, adjacent = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
neighbors = 0, moyo = 0, safety = -1, escape_route = -1, genus = 0,
heyes = 0, heye = 0, lunch = 0, semeai = 0, semeai_margin_of_safety = -1}
1: d = 0
(gdb) step
725 dragon2[d].semeai_margin_of_safety = -1;
2: dragon2[d] = {origin = 84, adjacent = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
neighbors = 0, moyo = 0, safety = -1, escape_route = -1, genus = 0,
heyes = 0, heye = 0, lunch = 0, semeai = 0, semeai_margin_of_safety = 0}
1: d = 0
(gdb)
714 for (d = 0; d < number_of_dragons; d++) {
2: dragon2[d] = {origin = 84, adjacent = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
neighbors = 0, moyo = 0, safety = -1, escape_route = -1, genus = 0,
heyes = 0, heye = 0, lunch = 0, semeai = 0, semeai_margin_of_safety = 0}
1: d = 0
(gdb)
715 dragon2[d].neighbors = 0;
2: dragon2[d] = {origin = -1, adjacent = {90, 0, 0, 0, 0, 0, 0, 0, 0, 0},
neighbors = 0, moyo = 0, safety = 0, escape_route = 0, genus = 0,
heyes = 1075271616, heye = 0, lunch = 0, semeai = 0,
semeai_margin_of_safety = 0}
1: d = 1
(gdb)
(etc.)
- [gnugo-devel] Segmentation fault, dragon2 array appears to be corrupted,
Arend Bayer <=
- Re: [gnugo-devel] Segmentation fault, dragon2 array appears to be corrupted, Gunnar Farneback, 2002/01/11
- Re: [gnugo-devel] Segmentation fault, dragon2 array appears to be corrupted, Daniel Bump, 2002/01/11
- Re: [gnugo-devel] Segmentation fault, dragon2 array appears to be corrupted, Gunnar Farneback, 2002/01/12
- Re: [gnugo-devel] Segmentation fault, dragon2 array appears to be corrupted, Teun Burgers, 2002/01/12
- Re: [gnugo-devel] Segmentation fault, dragon2 array appears to be corrupted, Daniel Bump, 2002/01/12
- Re: [gnugo-devel] Segmentation fault, dragon2 array appears to be corrupted, Gunnar Farneback, 2002/01/12