Closed hippich closed 13 years ago
Raw log - http://pastebin.com/raw.php?i=853Bg8DW
Today another table ended in crashed state.
Here is actual error:
2011-07-29 04:19:29+0000 [HTTPChannel,1596,127.0.0.1] [Server][PokerGame 14290] ERROR: unable to update position
And a little bit later this happens:
2011-07-29 04:19:40+0000 [HTTPChannel,1516,127.0.0.1] [11215][PokerGame 14290] Dealing Hold'em hand number 297509 2011-07-29 04:19:40+0000 [HTTPChannel,1516,127.0.0.1] PokerAvatar: Traceback (most recent call last): 2011-07-29 04:19:40+0000 [HTTPChannel,1516,127.0.0.1] File "/usr/lib/python2.6/dist-packages/pokernetwork/pokeravatar.py", line 328, in sendPacket 2011-07-29 04:19:40+0000 [HTTPChannel,1516,127.0.0.1] self.explain.explain(packet) 2011-07-29 04:19:40+0000 [HTTPChannel,1516,127.0.0.1] File "/usr/lib/python2.6/dist-packages/pokernetwork/pokerexplain.py", line 323, in explain 2011-07-29 04:19:40+0000 [HTTPChannel,1516,127.0.0.1] game.beginTurn(packet.hand_serial) 2011-07-29 04:19:40+0000 [HTTPChannel,1516,127.0.0.1] File "/usr/lib/python2.6/dist-packages/pokerengine/pokergame.py", line 982, in beginTurn 2011-07-29 04:19:40+0000 [HTTPChannel,1516,127.0.0.1] if not self.buildPlayerList(True): 2011-07-29 04:19:40+0000 [HTTPChannel,1516,127.0.0.1] File "/usr/lib/python2.6/dist-packages/pokernetwork/pokergameclient.py", line 58, in buildPlayerList 2011-07-29 04:19:40+0000 [HTTPChannel,1516,127.0.0.1] assert self.player_list == filter(lambda x: self.serial2player[x].isSit(), self.player_list) 2011-07-29 04:19:40+0000 [HTTPChannel,1516,127.0.0.1] AssertionError
Here is full log - http://ubuntuone.com/p/170Y/
Thanks to @gg for help on the repro.
Summary (full log attached)
Hand 262007 starts. Player 11110 (theFED) is included as part of the player
list at the start of the hand in position 5 (he had just played in the previous
hand 262006):
Player 11110 posts the small blind of 50 during the blind and antes round:
Then he rebuys 208 chips and sits in:
So does this mean he was sitting out when he posted the blind of 50? And how was
he able to rebuy if he already posted the small blind?
After all blinds and antes have been posted, player 11110 is no longer in the
players list, and when the preflop round starts, he is not dealt cards. The log
indicates he is waiting to play (reason=first_round).
Since player 11110 posted the small blind, shouldn't he be in the players list
and have been dealt cards?
During the preflop round player 11110 joins the table:
I did not see any mention in the log about him leaving. Could he have been
disconnected?
When he joins, packets are sent to him as follows (see class
PacketPokerTableJoin? in pokernetwork/pokerpackets.py):
When rebroadcasting the start of the hand to player 11110, an exception is raised:
Notice that position = 5 is the position of player 11110 at the start of the
hand. The possible cause of this exception may be described in the comment for
sit(self, serial) in pokergame.py:
Perhaps player 11110 was marked wait_for="first_round" and was removed from the
player list at the end of the blind/ante round?
There is another exception that is raised after the POKER_STREAM_MODE packet is
sent:
The cause for this is probably the same as the cause for the IndexError?.
Throughout the hand there are many 'unable to update position' errors:
During the flop round, player 11110 joins the table again:
The same IndexError? and "avatar is not in the list of know avatars" errors occur
when rebroadcasting the hand.
Before the hand ends, player 11110 leaves the table:
Finally after the hand is completed, there is an error when distributing the
rake:
PokerGame?.getPlayer(serial) returns None -- perhaps because player 11110 left
the table, or was not part of the players list?
At this point the table is in a "crashed" state in the sense that play is
stopped. A new hand is not being dealt, and when observers join the table they
see hand #262007 being replayed.