gnugo-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [gnugo-devel] Current CVS VC build crashes


From: Trevor Morris
Subject: Re: [gnugo-devel] Current CVS VC build crashes
Date: Sun, 24 Feb 2002 00:06:10 -0500

>I'm having trouble re-creating the crash now, too.  GNU Go has
>never crashed before on the www.public32.com machine, so I'm 
>pretty sure I'm not crazy, though!  I was re-creating consistently
>on my development machine yesterday afternoon.

OK, it started crashing again, and in trying to debug it, I inserted
the following test code, which, I think isolates a problem.  I'll
leave it to someone else to fix.

As a preview to a forthcoming patch from me, I've moved or added
#include "gnugo.h"
to the very top of most of the *.c files.  This allows the VC 
compiler to create a pre-compiled header, dramatically reducing overall
compile time.

Also, I've also been working on an incremental pattern matcher, 
which works great with read_attack.db and read_defend.db, improving
performance by 20%.  It doesn't compile with bigger databases
yet, but I'm hopeful.


Here's current CVS trouble patch; DON'T add to CVS:
(due to the spastic nature of my mail reader, lines will prob. get
broken, so find this also at:
http://www.public32.com/games/go/crash.26.1
)

Index: engine/owl.c
===================================================================
RCS file: /cvsroot/gnugo/gnugo/engine/owl.c,v
retrieving revision 1.65
diff -u -b -B -r1.65 owl.c
--- engine/owl.c        22 Feb 2002 22:28:28 -0000      1.65
+++ engine/owl.c        24 Feb 2002 04:55:24 -0000
@@ -46,7 +46,7 @@
  *                       and (purported) wisdom.
  */
 
-
+#include "gnugo.h"
 
 #define MAX_MOVES 3           /* maximum number of branches at each node */
 #define MAX_SEMEAI_MOVES 2    /* semeai branch factor--must be <= MAX_MOVES */
@@ -4431,6 +4431,13 @@
     for (n = 0; n < board_size; n++) {
       pos = POS(m, n);
       if (board[pos] == owl->color) {
+        if (dragon[pos].status == UNKNOWN
+            &&(dragon[pos].id < 0 || dragon[pos].id >= number_of_dragons)) {
+          gprintf("pos == %d (%1m)\n", pos, pos);
+          gprintf("dragon[pos].id == %d\n", dragon[pos].id);
+          gprintf("number_of_dragons == %d\n", number_of_dragons);
+          ASSERT1(0 && "dragon2 data not initialized (?)", pos);
+        }
        if (dragon[pos].status == ALIVE)
          owl->escape_values[pos] = 6;
        else if (dragon[pos].status == UNKNOWN










reply via email to

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