Ticket #128 (closed defect: fixed)

Opened 6 years ago

Last modified 6 years ago

try to play illegal suicide or ko, while playing endgame damezumari.

Reported by: alain Owned by: gnugo
Priority: normal Milestone: 3.7.10
Component: source Version:
Severity: normal Keywords:
Cc: patch: yes

Description (last modified by alain) (diff)

Reported by Hiroshi Yamashita

GNU 3.7.9 try to play J4 an illegal suicide move 81.

gnugo -l Aya-GNU-illegal-81.sgf -L 81 -d0x400000

Top moves:

Top moves:
1. D6  0.14
black (X) move J4

Additional examples are taken from CGOS, where the time limit makes GNU Go decrease level, so to reproduce them level 5 or less is sometimes needed.

Attachments

Aya-GNU-illegal-81.sgf Download (586 bytes) - added by alain 6 years ago.
filllib.diff Download (458 bytes) - added by alain 6 years ago.
simple patch, maybe i missed some subtlities, but i seems OK.
146.sgf Download (712 bytes) - added by alain 6 years ago.
Last proposed move is suicide at C1, if level is low. Fixed by the patch.
9509.sgf Download (659 bytes) - added by alain 6 years ago.
Last proposed move is suicide. Comment is inside the game.
60311.sgf Download (673 bytes) - added by alain 6 years ago.
Last proposed move is suicide. Comment is inside the game.
58273.sgf Download (696 bytes) - added by alain 6 years ago.
At level 5 or less, fillib play illegal simple-ko violation.
8723.sgf Download (680 bytes) - added by alain 6 years ago.
At level 5 or less, fillib play illegal simple-ko violation.
gunnar_7_10.10.diff Download (1.4 KB) - added by gunnar 6 years ago.
new testcases and detect_tactical_blunder() revision

Regression Results

Attachment Rev. PASS FAIL Nodes Status
filllib.diff Download never tested
gunnar_7_10.10.diff Download never tested

Change History

Changed 6 years ago by alain

comment:1 Changed 6 years ago by alain

valgrind gnugo \-l Aya-GNU-illegal-81.sgf -L81 -d0x400000
==15013== Memcheck, a memory error detector for x86-linux.
==15013== Copyright (C) 2002-2005, and GNU GPL'd, by Julian Seward et al.
==15013== Using valgrind-2.4.0, a program supervision framework for x86-linux.
==15013== Copyright (C) 2000-2005, and GNU GPL'd, by Julian Seward et al.
==15013== For more details, rerun with: -v
==15013==
==15013== Conditional jump or move depends on uninitialised value(s)
==15013==    at 0x8088111: store_persistent_semeai_cache (persistent.c:1283)
==15013==    by 0x80844E9: owl_analyze_semeai_after_move (owl.c:584)
==15013==    by 0x808499D: owl_analyze_semeai (owl.c:362)
==15013==    by 0x809FD25: semeai (semeai.c:381)
==15013==    by 0x806727C: make_dragons (dragon.c:418)
==15013==    by 0x806905C: examine_position (genmove.c:160)
==15013==    by 0x806940E: do_genmove (genmove.c:352)
==15013==    by 0x806A16B: genmove (genmove.c:258)
==15013==    by 0x8054894: load_and_analyze_sgf_file (play_solo.c:156)
==15013==    by 0x804A4FC: main (main.c:1035)

Top moves:

Top moves:
1. D6  0.14
black (X) move J4

comment:2 Changed 6 years ago by alain

_But_ after applying the 2 gunnar-patch (see #124) valgrind does not complains and the bug is still here.

Top moves:

Top moves:
1. D6  0.15
black (X) move J4
==15075==
==15075== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 15 from 1)

comment:3 Changed 6 years ago by alain

Top move list is only one move D6.
It is seen as blunder => removed from the list, which is now empty

So it should PASS , but i don't understand why it does not.

OT: the real good move is B2, but it is not seen.

comment:4 Changed 6 years ago by alain

Oops, it is so simple : ./interface/gnugo -t ....

Top moves:
1. D6  0.14
Checking safety of a black move at D6
  After D6 Worm at A4 becomes attackable.
Move at D6 is a blunder, subtracting 1.42.
Move at D6 is now valued -1.27.
Checking safety of a black move at D6
  After D6 Worm at A4 becomes attackable.
Filling a liberty at J4
genmove() recommends J4 with value 1.00
black (X) move J4

Changed 6 years ago by alain

simple patch, maybe i missed some subtlities, but i seems OK.

comment:5 Changed 6 years ago by alain

  • patch set

With the patch:

gnugo -t -l Aya-GNU-illegal-81.sgf -L 81 
...
Aftermath move at B2
genmove() recommends B2 with value 1.00
black (X) move B2

comment:6 Changed 6 years ago by alain

  • Milestone changed from 3.8 to 3.7.10

Changed 6 years ago by alain

Last proposed move is suicide at C1, if level is low. Fixed by the patch.

Changed 6 years ago by alain

Last proposed move is suicide. Comment is inside the game.

Changed 6 years ago by alain

Last proposed move is suicide. Comment is inside the game.

comment:7 Changed 6 years ago by alain

  • Description modified (diff)

comment:8 Changed 6 years ago by alain

  • Summary changed from try to play suicide to try to play illegal suicide or ko, while playing endgame damezumari.

Changed 6 years ago by alain

At level 5 or less, fillib play illegal simple-ko violation.

Changed 6 years ago by alain

At level 5 or less, fillib play illegal simple-ko violation.

comment:9 Changed 6 years ago by alain

  • Description modified (diff)

comment:10 Changed 6 years ago by alain

  • Description modified (diff)

comment:11 Changed 6 years ago by gunnar

In the original example the move at D6 actually is fine, sacrificing A4 is harmless.

There's nothing wrong with the proposed patch although there is a deeper problem in confirm_safety() returning illegal defense moves, which should be fixed as well.

Changed 6 years ago by gunnar

new testcases and detect_tactical_blunder() revision

comment:12 Changed 6 years ago by gunnar

The attached patch gunnar_7_10.10 fixes the confirm_safety() problem by revising detect_tactical_blunder(). It also adds three testcases from these games (including the first one called filllib19.sgf) and a FIXME about the fact that D6 in the first game isn't really a blunder.

All problems reported in this ticket are solved by the patch.

comment:13 Changed 6 years ago by gunnar

  • Status changed from new to closed
  • Resolution set to fixed

The patch in filllib.diff has been added under the name alain_7_10.1. Together with gunnar_7_10.10 everything in this ticket should be resolved now.

Note: See TracTickets for help on using tickets.