Crafty 23.1 (JA) crashing when used for analysis ICCDasher

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

sockmonkey
Posts: 588
Joined: Sun Nov 23, 2008 11:16 pm
Location: Berlin, Germany

Crafty 23.1 (JA) crashing when used for analysis ICCDasher

Post by sockmonkey »

Subject says it all. Crafty just crashes suddenly when a new move comes in for analysis (I'm observing a World Cup game). Has anyone else observed something similar? I realize that's vague and can provide more details if prompted...

Thanks
Jeremy
User avatar
Jim Ablett
Posts: 2290
Joined: Fri Jul 14, 2006 7:56 am
Location: London, England
Full name: Jim Ablett

Re: Crafty 23.1 (JA) crashing when used for analysis ICCDash

Post by Jim Ablett »

sockmonkey wrote:Subject says it all. Crafty just crashes suddenly when a new move comes in for analysis (I'm observing a World Cup game). Has anyone else observed something similar? I realize that's vague and can provide more details if prompted...

Thanks
Jeremy
Hi Jeremy,

I've found the problem. Analysis function in latest Crafty does not initialize and reset position
before each new call to analyze() and after it has exited. This what causing problems in Dasher
and to a lesser extent in Arena where clicking on analyze button fails to make Crafty respond.

Here's my fix that corrects the problem (I'm sure Bob Hyatt will have a more elegant solution :) ) >

Code: Select all

#include "chess.h"
#include "data.h"
/* last modified 01/18/09 */
/*
 *******************************************************************************
 *                                                                             *
 *   Analyze() is used to handle the "analyze" command.  This mode basically   *
 *   puts Crafty into a "permanent pondering" state, where it reads a move from*
 *   the input stream, and then "ponders" for the opposite side.  Whenever a   *
 *   move is entered, Crafty reads this move, updates the game board, and then *
 *   starts "pondering" for the other side.                                    *
 *                                                                             *
 *   The purpose of this mode is to force Crafty to follow along in a game,    *
 *   providing analysis continually for the side on move until a move is       *
 *   entered, advancing the game to the next position.                         *
 *                                                                             *
 *******************************************************************************
 */
void Analyze() {
  int i, move, back_number, readstat = 1;
  TREE *const tree = block[0];

/*
 ************************************************************
 *                                                          *
 *  Initialize.                                             *
 *                                                          *
 ************************************************************
 */
  int save_swindle_mode = swindle_mode;

  Initialize();                         // < add this  - JA
  SetBoard(tree, nargs, args, 1);       // < add this  - JA

  swindle_mode = 0;
  ponder_move = 0;
  analyze_mode = 1;
  if (!xboard)
    display_options |= 1 + 2 + 4;
  printf("Analyze Mode: type "exit" to terminate.\n");
/*
 ************************************************************
 *                                                          *
 *  Now loop waiting on input, searching the current        *
 *  position continually until a move comes in.             *
 *                                                          *
 ************************************************************
 */
  do {
    do {
      last_pv.pathd = 0;
      last_pv.pathl = 0;
      input_status = 0;
      pondering = 1;
      tree->position[1] = tree->position[0];
      (void) Iterate(wtm, think, 0);
      pondering = 0;
      if (book_move)
        moves_out_of_book = 0;
      if (!xboard) {
        if (wtm)
          printf("analyze.White(%d): ", move_number);
        else
          printf("analyze.Black(%d): ", move_number);
        fflush(stdout);
      }
/*
 ************************************************************
 *                                                          *
 *  If we get back to here, something has been typed in and *
 *  is in the command buffer normally, unless the search    *
 *  terminated naturally due to finding a mate or reaching  *
 *  the max depth allowable.                                *
 *                                                          *
 ************************************************************
 */
      if (!input_status)
        do {
          readstat = Read(1, buffer);
          if (readstat < 0)
            break;
          nargs = ReadParse(buffer, args, " 	;");
          Print(128, "%s\n", buffer);
          if (strstr(args[0], "timeleft") && !xboard) {
            if (wtm)
              printf("analyze.White(%d): ", move_number);
            else
              printf("analyze.Black(%d): ", move_number);
            fflush(stdout);
          }
        } while (strstr(args[0], "timeleft"));
      else
        nargs = ReadParse(buffer, args, " 	;");
      if (readstat < 0)
        break;
      move = 0;
      if (!strcmp(args[0], "exit"))
        Initialize();                         // < add this - JA
        SetBoard(tree, nargs, args, 1);       // < add this - JA
        break;
/*
 ************************************************************
 *                                                          *
 *  First, check for the special analyze command "back n"   *
 *  and handle it if present, otherwise try Option() to see *
 *  if it recognizes the input as a command.                *
 *                                                          *
 ************************************************************
 */
      if (OptionMatch("back", args[0])) {
        if (nargs > 1)
          back_number = atoi(args[1]);
        else
          back_number = 1;
        for (i = 0; i < back_number; i++) {
          wtm = Flip(wtm);
          if (Flip(wtm))
            move_number--;
        }
        if (move_number == 0) {
          move_number = 1;
          wtm = 1;
        }
        sprintf(buffer, "reset %d", move_number);
        (void) Option(tree);
        display = tree->pos;
      } else if (Option(tree)) {
        display = tree->pos;
      }
/*
 ************************************************************
 *                                                          *
 *  If InputMove() can recognize this as a move, make it,   *
 *  swap sides, and return to the top of the loop to call   *
 *  search from this new position.                          *
 *                                                          *
 ************************************************************
 */
      else if ((move = InputMove(tree, buffer, 0, wtm, 1, 0))) {
        char *outmove = OutputMove(tree, move, 0, wtm);

        if (history_file) {
          fseek(history_file, ((move_number - 1) * 2 + 1 - wtm) * 10,
              SEEK_SET);
          fprintf(history_file, "%9s\n", outmove);
        }
        if (wtm)
          Print(128, "White(%d): ", move_number);
        else
          Print(128, "Black(%d): ", move_number);
        Print(128, "%s\n", outmove);
        if (speech) {
          char announce[64];

          strcpy(announce, SPEAK);
          strcat(announce, outmove);
          system(announce);
        }
        MakeMoveRoot(tree, move, wtm);
        display = tree->pos;
        last_mate_score = 0;
        if (log_file)
          DisplayChessBoard(log_file, tree->pos);
      }
/*
 ************************************************************
 *                                                          *
 *  If Option() didn't handle the input, then it is illegal *
 *  and should be reported to the user.                     *
 *                                                          *
 ************************************************************
 */
      else {
        pondering = 0;
        if (Option(tree) == 0)
          printf("illegal move: %s\n", buffer);
        pondering = 1;
        display = tree->pos;
      }
    } while (!move);
    if (readstat < 0 || !strcmp(args[0], "exit"))
      Initialize();                         // < add this - JA
      SetBoard(tree, nargs, args, 1);       // < add this - JA
      break;
    wtm = Flip(wtm);
    if (wtm)
      move_number++;
  } while (1);
  analyze_mode = 0;
  printf("analyze complete.\n");
  pondering = 0;
  swindle_mode = save_swindle_mode;
}
Download: (win32 Intel pgo)
http://www.mediafire.com/?tmakdlwmya3


I will post link to 64 bit compiles later.

best Jim.
sockmonkey
Posts: 588
Joined: Sun Nov 23, 2008 11:16 pm
Location: Berlin, Germany

Re: Crafty 23.1 (JA) crashing when used for analysis ICCDash

Post by sockmonkey »

Jim Ablett wrote:I've found the problem. Analysis function in latest Crafty does not initialize and reset position
before each new call to analyze() and after it has exited. This what causing problems in Dasher
and to a lesser extent in Arena where clicking on analyze button fails to make Crafty respond.

Here's my fix that corrects the problem...

Download: (win32 Intel pgo)
http://www.mediafire.com/?tmakdlwmya3
Sweet. Thanks so much for looking into this.

jb
User avatar
Jim Ablett
Posts: 2290
Joined: Fri Jul 14, 2006 7:56 am
Location: London, England
Full name: Jim Ablett

Re: Crafty 23.1 (JA) crashing when used for analysis ICCDash

Post by Jim Ablett »

Hi Jeremy,

I had a play around with analysis in Dasher. With my fixed crafty it seems
you need to toggle the computer analysis windows on/off in order for crafty to analyze each new position correctly.

Jim.
sockmonkey
Posts: 588
Joined: Sun Nov 23, 2008 11:16 pm
Location: Berlin, Germany

Re: Crafty 23.1 (JA) crashing when used for analysis ICCDash

Post by sockmonkey »

Jim Ablett wrote:Hi Jeremy,

I had a play around with analysis in Dasher. With my fixed crafty it seems
you need to toggle the computer analysis windows on/off in order for crafty to analyze each new position correctly.

Jim.
Oh, that's not so great, then. Maybe Bob will have another idea of how to handle this issue. I can take a look at the code, too, but I've never touched Crafty, so it's probably not something I can quickly solve in the train (without breaking it even more!).

Thanks
Jeremy
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Crafty 23.1 (JA) crashing when used for analysis ICCDash

Post by bob »

Jim Ablett wrote:
sockmonkey wrote:Subject says it all. Crafty just crashes suddenly when a new move comes in for analysis (I'm observing a World Cup game). Has anyone else observed something similar? I realize that's vague and can provide more details if prompted...

Thanks
Jeremy
Hi Jeremy,

I've found the problem. Analysis function in latest Crafty does not initialize and reset position
before each new call to analyze() and after it has exited. This what causing problems in Dasher
and to a lesser extent in Arena where clicking on analyze button fails to make Crafty respond.
This can't be a new problem since analyze.c has not been changed in a _long_ time. Is this something related to a different GUI, since analyze has been working for years???



Here's my fix that corrects the problem (I'm sure Bob Hyatt will have a more elegant solution :) ) >

Code: Select all

#include "chess.h"
#include "data.h"
/* last modified 01/18/09 */
/*
 *******************************************************************************
 *                                                                             *
 *   Analyze() is used to handle the "analyze" command.  This mode basically   *
 *   puts Crafty into a "permanent pondering" state, where it reads a move from*
 *   the input stream, and then "ponders" for the opposite side.  Whenever a   *
 *   move is entered, Crafty reads this move, updates the game board, and then *
 *   starts "pondering" for the other side.                                    *
 *                                                                             *
 *   The purpose of this mode is to force Crafty to follow along in a game,    *
 *   providing analysis continually for the side on move until a move is       *
 *   entered, advancing the game to the next position.                         *
 *                                                                             *
 *******************************************************************************
 */
void Analyze() {
  int i, move, back_number, readstat = 1;
  TREE *const tree = block[0];

/*
 ************************************************************
 *                                                          *
 *  Initialize.                                             *
 *                                                          *
 ************************************************************
 */
  int save_swindle_mode = swindle_mode;

  Initialize();                         // < add this  - JA
  SetBoard(tree, nargs, args, 1);       // < add this  - JA

  swindle_mode = 0;
  ponder_move = 0;
  analyze_mode = 1;
  if (!xboard)
    display_options |= 1 + 2 + 4;
  printf("Analyze Mode: type "exit" to terminate.\n");
/*
 ************************************************************
 *                                                          *
 *  Now loop waiting on input, searching the current        *
 *  position continually until a move comes in.             *
 *                                                          *
 ************************************************************
 */
  do {
    do {
      last_pv.pathd = 0;
      last_pv.pathl = 0;
      input_status = 0;
      pondering = 1;
      tree->position[1] = tree->position[0];
      (void) Iterate(wtm, think, 0);
      pondering = 0;
      if (book_move)
        moves_out_of_book = 0;
      if (!xboard) {
        if (wtm)
          printf("analyze.White(%d): ", move_number);
        else
          printf("analyze.Black(%d): ", move_number);
        fflush(stdout);
      }
/*
 ************************************************************
 *                                                          *
 *  If we get back to here, something has been typed in and *
 *  is in the command buffer normally, unless the search    *
 *  terminated naturally due to finding a mate or reaching  *
 *  the max depth allowable.                                *
 *                                                          *
 ************************************************************
 */
      if (!input_status)
        do {
          readstat = Read(1, buffer);
          if (readstat < 0)
            break;
          nargs = ReadParse(buffer, args, " 	;");
          Print(128, "%s\n", buffer);
          if (strstr(args[0], "timeleft") && !xboard) {
            if (wtm)
              printf("analyze.White(%d): ", move_number);
            else
              printf("analyze.Black(%d): ", move_number);
            fflush(stdout);
          }
        } while (strstr(args[0], "timeleft"));
      else
        nargs = ReadParse(buffer, args, " 	;");
      if (readstat < 0)
        break;
      move = 0;
      if (!strcmp(args[0], "exit"))
        Initialize();                         // < add this - JA
        SetBoard(tree, nargs, args, 1);       // < add this - JA
        break;
/*
 ************************************************************
 *                                                          *
 *  First, check for the special analyze command "back n"   *
 *  and handle it if present, otherwise try Option() to see *
 *  if it recognizes the input as a command.                *
 *                                                          *
 ************************************************************
 */
      if (OptionMatch("back", args[0])) {
        if (nargs > 1)
          back_number = atoi(args[1]);
        else
          back_number = 1;
        for (i = 0; i < back_number; i++) {
          wtm = Flip(wtm);
          if (Flip(wtm))
            move_number--;
        }
        if (move_number == 0) {
          move_number = 1;
          wtm = 1;
        }
        sprintf(buffer, "reset %d", move_number);
        (void) Option(tree);
        display = tree->pos;
      } else if (Option(tree)) {
        display = tree->pos;
      }
/*
 ************************************************************
 *                                                          *
 *  If InputMove() can recognize this as a move, make it,   *
 *  swap sides, and return to the top of the loop to call   *
 *  search from this new position.                          *
 *                                                          *
 ************************************************************
 */
      else if ((move = InputMove(tree, buffer, 0, wtm, 1, 0))) {
        char *outmove = OutputMove(tree, move, 0, wtm);

        if (history_file) {
          fseek(history_file, ((move_number - 1) * 2 + 1 - wtm) * 10,
              SEEK_SET);
          fprintf(history_file, "%9s\n", outmove);
        }
        if (wtm)
          Print(128, "White(%d): ", move_number);
        else
          Print(128, "Black(%d): ", move_number);
        Print(128, "%s\n", outmove);
        if (speech) {
          char announce[64];

          strcpy(announce, SPEAK);
          strcat(announce, outmove);
          system(announce);
        }
        MakeMoveRoot(tree, move, wtm);
        display = tree->pos;
        last_mate_score = 0;
        if (log_file)
          DisplayChessBoard(log_file, tree->pos);
      }
/*
 ************************************************************
 *                                                          *
 *  If Option() didn't handle the input, then it is illegal *
 *  and should be reported to the user.                     *
 *                                                          *
 ************************************************************
 */
      else {
        pondering = 0;
        if (Option(tree) == 0)
          printf("illegal move: %s\n", buffer);
        pondering = 1;
        display = tree->pos;
      }
    } while (!move);
    if (readstat < 0 || !strcmp(args[0], "exit"))
      Initialize();                         // < add this - JA
      SetBoard(tree, nargs, args, 1);       // < add this - JA
      break;
    wtm = Flip(wtm);
    if (wtm)
      move_number++;
  } while (1);
  analyze_mode = 0;
  printf("analyze complete.\n");
  pondering = 0;
  swindle_mode = save_swindle_mode;
}
Download: (win32 Intel pgo)
http://www.mediafire.com/?tmakdlwmya3


I will post link to 64 bit compiles later.

best Jim.
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Crafty 23.1 (JA) crashing when used for analysis ICCDash

Post by bob »

Jim Ablett wrote:Hi Jeremy,

I had a play around with analysis in Dasher. With my fixed crafty it seems
you need to toggle the computer analysis windows on/off in order for crafty to analyze each new position correctly.

Jim.
Something sounds broken. In analysis mode are we talking about a single game, or analyzing multiple games simultaneously? I have done both for many years without any problems, so it seems that maybe there is a misunderstanding in the communication between the GUI and Crafty???

Can you email me a log.nnn file from a point in time where the problem arises so I can see what is happening, and what should be happening???
User avatar
Jim Ablett
Posts: 2290
Joined: Fri Jul 14, 2006 7:56 am
Location: London, England
Full name: Jim Ablett

Re: Crafty 23.1 (JA) crashing when used for analysis ICCDash

Post by Jim Ablett »

bob wrote:
Jim Ablett wrote:Hi Jeremy,

I had a play around with analysis in Dasher. With my fixed crafty it seems
you need to toggle the computer analysis windows on/off in order for crafty to analyze each new position correctly.

Jim.
Something sounds broken. In analysis mode are we talking about a single game, or analyzing multiple games simultaneously? I have done both for many years without any problems, so it seems that maybe there is a misunderstanding in the communication between the GUI and Crafty???

Can you email me a log.nnn file from a point in time where the problem arises so I can see what is happening, and what should be happening???
Hi Bob,

Playing through a single game with Dasher & continously analyzing with Crafty causes a crash after about six positions/moves played. Here is the log, but it looks normal right up till engine crash. Seems like previous position becomes not entirely cleared after several setboard() calls. >

Code: Select all

hash table memory =   32M bytes.
pawn hash table memory =   16M bytes.


Crafty v23.1 JA (1 cpu)

White(1): xboard
White(1): protover 2
feature ping=1 setboard=1 san=1 time=1 draw=1
feature sigint=0 sigterm=0 reuse=1 analyze=1
feature myname="Crafty-23.1 JA" name=1
feature playother=1 colors=0
feature variants="normal,nocastle"
feature done=1
White(1): new
White(1): setboard rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1

       +---+---+---+---+---+---+---+---+
    8  |<R>|<N>|<B>|<Q>|<K>|<B>|<N>|<R>|
       +---+---+---+---+---+---+---+---+
    7  |<P>|<P>|<P>|<P>|<P>|<P>|<P>|<P>|
       +---+---+---+---+---+---+---+---+
    6  |   | . |   | . |   | . |   | . |
       +---+---+---+---+---+---+---+---+
    5  | . |   | . |   | . |   | . |   |
       +---+---+---+---+---+---+---+---+
    4  |   | . |   | . |   | . |   | . |
       +---+---+---+---+---+---+---+---+
    3  | . |   | . |   | . |   | . |   |
       +---+---+---+---+---+---+---+---+
    2  |-P-|-P-|-P-|-P-|-P-|-P-|-P-|-P-|
       +---+---+---+---+---+---+---+---+
    1  |-R-|-N-|-B-|-Q-|-K-|-B-|-N-|-R-|
       +---+---+---+---+---+---+---+---+
         a   b   c   d   e   f   g   h

White(1): post
White(1): analyze
              time surplus   0.00  time limit 57.00 (+27.00) (3:00)
              depth   time  score   variation (1)
               12     0.61   0.23   1. Nf3 Nc6 2. e3 Nf6 3. Nc3 e5 4. Bb5
                                    Bd6 5. O-O O-O 6. d3 Re8
               12->   1.89   0.23   1. Nf3 Nc6 2. e3 Nf6 3. Nc3 e5 4. Bb5
                                    Bd6 5. O-O O-O 6. d3 Re8
               13     2.64   0.17   1. Nf3 Nc6 2. e3 Nf6 3. Bd3 e5 4. Nc3
                                    d5 5. Bb5 d4 6. Bxc6+ bxc6 7. exd4
                                    exd4
               13->   4.51   0.17   1. Nf3 Nc6 2. e3 Nf6 3. Bd3 e5 4. Nc3
                                    d5 5. Bb5 d4 6. Bxc6+ bxc6 7. exd4
                                    exd4
White(1): setboard rnbqkbnr/pppppppp/8/8/2P5/8/PP1PPPPP/RNBQKBNR b KQkq c3 0 1

       +---+---+---+---+---+---+---+---+
    8  |<R>|<N>|<B>|<Q>|<K>|<B>|<N>|<R>|
       +---+---+---+---+---+---+---+---+
    7  |<P>|<P>|<P>|<P>|<P>|<P>|<P>|<P>|
       +---+---+---+---+---+---+---+---+
    6  |   | . |   | . |   | . |   | . |
       +---+---+---+---+---+---+---+---+
    5  | . |   | . |   | . |   | . |   |
       +---+---+---+---+---+---+---+---+
    4  |   | . |-P-| . |   | . |   | . |
       +---+---+---+---+---+---+---+---+
    3  | . |   | . |   | . |   | . |   |
       +---+---+---+---+---+---+---+---+
    2  |-P-|-P-|   |-P-|-P-|-P-|-P-|-P-|
       +---+---+---+---+---+---+---+---+
    1  |-R-|-N-|-B-|-Q-|-K-|-B-|-N-|-R-|
       +---+---+---+---+---+---+---+---+
         a   b   c   d   e   f   g   h

              time surplus   0.00  time limit 57.00 (+27.00) (3:00)
              depth   time  score   variation (1)
Black(0): post
Black(0): analyze
              time surplus   0.00  time limit 57.00 (+27.00) (3:00)
              depth   time  score   variation (1)
               12     0.46  -0.10   1. ... Nc6 2. Nc3 Nf6 3. Nf3 e6 4.
                                    d4 Bd6 5. d5 Ne5 6. Nxe5 Bxe5 7. Be3
                                    Bxc3+ 8. bxc3
               12->   1.53  -0.10   1. ... Nc6 2. Nc3 Nf6 3. Nf3 e6 4.
                                    d4 Bd6 5. d5 Ne5 6. Nxe5 Bxe5 7. Be3
                                    Bxc3+ 8. bxc3
               13     2.31  -0.17   1. ... Nc6 2. Nc3 Nf6 3. d4 e6 4. d5
                                    Ne5 5. Qd4 d6 6. Nf3 Nxf3+ 7. exf3
                                    e5 8. Qd3
               13->   2.70  -0.17   1. ... Nc6 2. Nc3 Nf6 3. d4 e6 4. d5
                                    Ne5 5. Qd4 d6 6. Nf3 Nxf3+ 7. exf3
                                    e5 8. Qd3
               14     4.40  -0.37   1. ... Nc6 2. Nc3 Nf6 3. d4 e6 4. d5
                                    Ne5 5. Qd4 d6 6. Nf3 Nxf3+ 7. exf3
                                    e5 8. Qd3 Bd7
               14->   7.14  -0.37   1. ... Nc6 2. Nc3 Nf6 3. d4 e6 4. d5
                                    Ne5 5. Qd4 d6 6. Nf3 Nxf3+ 7. exf3
                                    e5 8. Qd3 Bd7
Black(0): setboard rnbqkb1r/pppppppp/5n2/8/2P5/8/PP1PPPPP/RNBQKBNR w KQkq - 0 1

       +---+---+---+---+---+---+---+---+
    8  |<R>|<N>|<B>|<Q>|<K>|<B>|   |<R>|
       +---+---+---+---+---+---+---+---+
    7  |<P>|<P>|<P>|<P>|<P>|<P>|<P>|<P>|
       +---+---+---+---+---+---+---+---+
    6  |   | . |   | . |   |<N>|   | . |
       +---+---+---+---+---+---+---+---+
    5  | . |   | . |   | . |   | . |   |
       +---+---+---+---+---+---+---+---+
    4  |   | . |-P-| . |   | . |   | . |
       +---+---+---+---+---+---+---+---+
    3  | . |   | . |   | . |   | . |   |
       +---+---+---+---+---+---+---+---+
    2  |-P-|-P-|   |-P-|-P-|-P-|-P-|-P-|
       +---+---+---+---+---+---+---+---+
    1  |-R-|-N-|-B-|-Q-|-K-|-B-|-N-|-R-|
       +---+---+---+---+---+---+---+---+
         a   b   c   d   e   f   g   h

              time surplus   0.00  time limit 57.00 (+27.00) (3:00)
              depth   time  score   variation (1)
White(1): post
White(1): analyze
              time surplus   0.00  time limit 57.00 (+27.00) (3:00)
              depth   time  score   variation (1)
               12     0.74  -0.37   1. Nc3 Nc6 2. d4 e6 3. d5 Ne5 4. Qd4
                                    d6 5. Nf3 c5 6. Qh4 Bd7 7. Bg5 Rc8
                                    <HT>
               12->   0.74  -0.37   1. Nc3 Nc6 2. d4 e6 3. d5 Ne5 4. Qd4
                                    d6 5. Nf3 c5 6. Qh4 Bd7 7. Bg5 Rc8
                                    <HT>
               13     0.77  -0.37   1. Nc3 Nc6 2. d4 e6 3. d5 Ne5 4. Qd4
                                    d6 5. Nf3 c5 6. Qh4 Bd7 7. Bg5 Rc8
                                    <HT>
               13     1.04  -0.36   1. Nf3 Nc6 2. Nc3 e6 3. e4 Bb4 4. Bd3
                                    O-O 5. O-O Bc5 6. Re1 Nb4 7. Be2
               13->   1.49  -0.36   1. Nf3 Nc6 2. Nc3 e6 3. e4 Bb4 4. Bd3
                                    O-O 5. O-O Bc5 6. Re1 Nb4 7. Be2
               14     4.91  -0.15   1. Nf3 Nc6 2. Nc3 e5 3. e3 Bb4 4. Nd5
                                    e4 5. Nxb4 Nxb4 6. Qb3 Qe7 7. a3 Nc6
               14->   6.58  -0.15   1. Nf3 Nc6 2. Nc3 e5 3. e3 Bb4 4. Nd5
                                    e4 5. Nxb4 Nxb4 6. Qb3 Qe7 7. a3 Nc6
White(1): setboard rnbqkb1r/pppppppp/5n2/8/2P5/6P1/PP1PPP1P/RNBQKBNR b KQkq - 0 2

       +---+---+---+---+---+---+---+---+
    8  |<R>|<N>|<B>|<Q>|<K>|<B>|   |<R>|
       +---+---+---+---+---+---+---+---+
    7  |<P>|<P>|<P>|<P>|<P>|<P>|<P>|<P>|
       +---+---+---+---+---+---+---+---+
    6  |   | . |   | . |   |<N>|   | . |
       +---+---+---+---+---+---+---+---+
    5  | . |   | . |   | . |   | . |   |
       +---+---+---+---+---+---+---+---+
    4  |   | . |-P-| . |   | . |   | . |
       +---+---+---+---+---+---+---+---+
    3  | . |   | . |   | . |   |-P-|   |
       +---+---+---+---+---+---+---+---+
    2  |-P-|-P-|   |-P-|-P-|-P-|   |-P-|
       +---+---+---+---+---+---+---+---+
    1  |-R-|-N-|-B-|-Q-|-K-|-B-|-N-|-R-|
       +---+---+---+---+---+---+---+---+
         a   b   c   d   e   f   g   h

              time surplus   0.00  time limit 57.00 (+27.00) (3:00)
              depth   time  score   variation (1)
Black(0): post
Black(0): analyze
              time surplus   0.00  time limit 57.00 (+27.00) (3:00)
              depth   time  score   variation (1)
               10->   0.56  -0.66   1. ... Nc6 2. Nf3 e5 3. Nc3 Bc5 4.
                                    Na4 Be7 5. d4 Ne4 6. Nc3
               11     0.85  -0.86   1. ... Nc6 2. Nf3 e5 3. Nc3 Bc5 4.
                                    Bg2 O-O 5. O-O d5 6. Qb3 dxc4 7. Qxc4
               11->   0.92  -0.86   1. ... Nc6 2. Nf3 e5 3. Nc3 Bc5 4.
                                    Bg2 O-O 5. O-O d5 6. Qb3 dxc4 7. Qxc4
               12     1.39  -0.66   1. ... Nc6 2. Nf3 e5 3. Nc3 Bc5 4.
                                    Bg2 O-O 5. O-O d6 6. Na4 Bb4 7. d4
               12->   1.80  -0.66   1. ... Nc6 2. Nf3 e5 3. Nc3 Bc5 4.
                                    Bg2 O-O 5. O-O d6 6. Na4 Bb4 7. d4
               13     2.56  -0.75   1. ... Nc6 2. Nf3 e5 3. Nc3 Bc5 4.
                                    Bg2 O-O 5. O-O d6 6. d3 Bf5 7. Be3
                                    Bxe3 8. fxe3
               13->   3.06  -0.75   1. ... Nc6 2. Nf3 e5 3. Nc3 Bc5 4.
                                    Bg2 O-O 5. O-O d6 6. d3 Bf5 7. Be3
                                    Bxe3 8. fxe3
               14     4.22  -0.75   1. ... Nc6 2. Nf3 e5 3. Nc3 Bc5 4.
                                    Bg2 O-O 5. O-O d6 6. d3 Bf5 7. Be3
                                    Bxe3 8. fxe3
               14->   5.47  -0.75   1. ... Nc6 2. Nf3 e5 3. Nc3 Bc5 4.
                                    Bg2 O-O 5. O-O d6 6. d3 Bf5 7. Be3
                                    Bxe3 8. fxe3
Black(0): setboard rnbqkb1r/pppp1ppp/5n2/4p3/2P5/6P1/PP1PPP1P/RNBQKBNR w KQkq e6 0 2

       +---+---+---+---+---+---+---+---+
    8  |<R>|<N>|<B>|<Q>|<K>|<B>|   |<R>|
       +---+---+---+---+---+---+---+---+
    7  |<P>|<P>|<P>|<P>| . |<P>|<P>|<P>|
       +---+---+---+---+---+---+---+---+
    6  |   | . |   | . |   |<N>|   | . |
       +---+---+---+---+---+---+---+---+
    5  | . |   | . |   |<P>|   | . |   |
       +---+---+---+---+---+---+---+---+
    4  |   | . |-P-| . |   | . |   | . |
       +---+---+---+---+---+---+---+---+
    3  | . |   | . |   | . |   |-P-|   |
       +---+---+---+---+---+---+---+---+
    2  |-P-|-P-|   |-P-|-P-|-P-|   |-P-|
       +---+---+---+---+---+---+---+---+
    1  |-R-|-N-|-B-|-Q-|-K-|-B-|-N-|-R-|
       +---+---+---+---+---+---+---+---+
         a   b   c   d   e   f   g   h

              time surplus   0.00  time limit 57.00 (+27.00) (3:00)
              depth   time  score   variation (1)
White(1): post
White(1): analyze
              time surplus   0.00  time limit 57.00 (+27.00) (3:00)
              depth   time  score   variation (1)
               12->   0.39  -0.63   1. Nc3 Nc6 2. Bg2 Bc5 3. Nf3 O-O 4.
                                    O-O Re8 5. Na4 Bb4 6. a3 Bd6 7. d3
                                    e4 <HT>
               13     0.81  -0.63   1. Nc3 Nc6 2. Bg2 Bc5 3. Nf3 O-O 4.
                                    O-O Re8 5. Na4 Bb4 6. a3 Bd6 7. d3
                                    e4 <HT>
               13->   0.98  -0.63   1. Nc3 Nc6 2. Bg2 Bc5 3. Nf3 O-O 4.
                                    O-O Re8 5. Na4 Bb4 6. a3 Bd6 7. d3
                                    e4 <HT>
               14     2.10  -0.63   1. Nc3 Nc6 2. Bg2 Bc5 3. Nf3 O-O 4.
                                    O-O Re8 5. Na4 Bb4 6. a3 Bd6 7. d3
                                    e4 <HT>
               14->   5.12  -0.63   1. Nc3 Nc6 2. Bg2 Bc5 3. Nf3 O-O 4.
                                    O-O Re8 5. Na4 Bb4 6. a3 Bd6 7. d3
                                    e4 <HT>
White(1): setboard rnbqkb1r/pppp1ppp/5n2/4p3/2P5/6P1/PP1PPPBP/RNBQK1NR b KQkq - 0 3

       +---+---+---+---+---+---+---+---+
    8  |<R>|<N>|<B>|<Q>|<K>|<B>|   |<R>|
       +---+---+---+---+---+---+---+---+
    7  |<P>|<P>|<P>|<P>| . |<P>|<P>|<P>|
       +---+---+---+---+---+---+---+---+
    6  |   | . |   | . |   |<N>|   | . |
       +---+---+---+---+---+---+---+---+
    5  | . |   | . |   |<P>|   | . |   |
       +---+---+---+---+---+---+---+---+
    4  |   | . |-P-| . |   | . |   | . |
       +---+---+---+---+---+---+---+---+
    3  | . |   | . |   | . |   |-P-|   |
       +---+---+---+---+---+---+---+---+
    2  |-P-|-P-|   |-P-|-P-|-P-|-B-|-P-|
       +---+---+---+---+---+---+---+---+
    1  |-R-|-N-|-B-|-Q-|-K-|   |-N-|-R-|
       +---+---+---+---+---+---+---+---+
         a   b   c   d   e   f   g   h

              time surplus   0.00  time limit 57.00 (+27.00) (3:00)
              depth   time  score   variation (1)
Black(0): post
Black(0): analyze
              time surplus   0.00  time limit 57.00 (+27.00) (3:00)
              depth   time  score   variation (1)
               14     1.24  -0.52   1. ... Nc6 2. Nc3 Bc5 3. Nf3 O-O 4.
                                    O-O Re8 5. Ng5 d6 6. d3 Bf5 7. Be3
                                    Bxe3 8. fxe3 <HT>
               14->   6.07  -0.52   1. ... Nc6 2. Nc3 Bc5 3. Nf3 O-O 4.
                                    O-O Re8 5. Ng5 d6 6. d3 Bf5 7. Be3
                                    Bxe3 8. fxe3 <HT>
Black(0): setboard rnbqkb1r/pp1p1ppp/2p2n2/4p3/2P5/6P1/PP1PPPBP/RNBQK1NR w KQkq - 0 3    // < Crafty crashes here - JA
Jim.
User avatar
F.Huber
Posts: 867
Joined: Thu Mar 09, 2006 4:50 pm
Location: Austria
Full name: Franz Huber

Re: Crafty 23.1 (JA) crashing when used for analysis ICCDash

Post by F.Huber »

Jim Ablett wrote: Download: (win32 Intel pgo)
http://www.mediafire.com/?tmakdlwmya3
Just a little remark from me:

I've tried it in Arena 1.1 and here it's just the opposite:
your previous version works fine (with analyze mode), but this new version does not!
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Crafty 23.1 (JA) crashing when used for analysis ICCDash

Post by bob »

Thanks. I think I can cut/paste enough to recreate. But the "setboard" should be all that is needed since it sets everything required. It is possible that there is a bug in _there_ somewhere since much of this code has been modified in the elimination of the black/white stuff back in version 22.x

I'll test and fix.