gnugo-devel
[Top][All Lists]
Advanced

[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.)






reply via email to

[Prev in Thread] Current Thread [Next in Thread]