Ticket #134 (closed defect: fixed)
--allow-suicide crash 3.7.9
| 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)
Game played by twinbot on KGS
GNU Go 3.7.9 reproduces the failure with the random seed and --allow-suicide.
I am not sure that G8 is allowed even under New-Zeland rules, and it is a useless move.
gnugo-3.7.9-ref --seed 575930647 --allow-suicide -l twinbot-nz1.sgf ***assertion failure: combination.c:414 - trymove near G8*** A B C D E F G H J 9 . . . . . . X . . 9 8 . . . . X X . X O 8 7 . . X . . . X O . 7 6 . . . . . . . . . 6 5 . X . . X . . X . 5 4 . . . . . . . . . 4 3 . . X . . . X . . 3 2 . . . . X . . . . 2 WHITE (O) has captured 0 stones 1 . . . . . . . . . 1 BLACK (X) has captured 1 stones A B C D E F G H J (;GM[1]FF[4]SZ[9]KM[0.0]HA[9]GN[GNU Go 3.7.9 stepped on a bug] AB[eb][cc][gc][be][ee][he][cg][gg][eh] ;W[gb];B[hb];W[hc];B[fb];W[ib];B[ga] ) gnugo 3.7.9 (seed 575930647): You stepped on a bug.
Attachments
Regression Results
| Attachment | Rev. | PASS | FAIL | Nodes | Status |
Change History
Changed 6 years ago by alain
-
attachment
twinbot-nz2.sgf
added
The same crash but _only_ with the twin. I cannot reproduce it with 3.7.9. Is it a cache pb due to the twin?
comment:2 Changed 6 years ago by alain
The twin contains all recent CVS bugfix patches, and since then it often step on this bug
Without the twin, the end of the trace is
Move generation values A2 to 25.06 Top moves: 1. A2 25.06 Move at A2 would be an illegal ko capture. Reevaluating ko threats. Top moves: Filling a liberty at D2 genmove() recommends D2 with value 1.00 nz-crash:20 pass D2 [D2]
With the twin option, the end of the trace is
Top moves: 1. A2 25.06 Move at A2 would be an illegal ko capture. Reevaluating ko threats. Top moves: Filling a liberty at D2 genmove() recommends D2 with value 1.00 Checking safety of a black move at D2 ***assertion failure: combination.c:414 - trymove near D2***
Changed 6 years ago by alain
-
attachment
nz-crash.tst
added
test for the twin. gg379 passes the test, twin fails n°20.
comment:3 Changed 6 years ago by gunnar
The problem is that --allow-suicide modifies the behavior of is_legal(), which is unsafe since many parts of the code assumes that legal moves don't suicide. A typical example is that after a trymove has been played, it's assumed that there is a stone on the vertex for which e.g. countlib can be called.
I don't think we should try to change those conventions since there is little to gain by allowing suicides in the internal reading. Instead we should change so that externally generated suicide moves are allowed explicitly in respective interface.
