Closed GoogleCodeExporter closed 9 years ago
Is it reproduceable? I haven't seen this. Maybe it's because I haven't been
winning enough games ;)
Original comment by mattgatto
on 25 Oct 2013 at 6:35
It's in Debian bugtracker too:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=659377
It happens once in a blue moon, at least for me.
Original comment by gbtami
on 25 Oct 2013 at 9:35
It happened again today. After my FICS game finished, my partner sent me a
"thank you" chat message. Right after that, pychess quit.
Original comment by gbtami
on 18 Feb 2014 at 11:39
Attachments:
Apparently these X server messages are usually the result of threading errors
where a thread is trying to manipulate the GUI without having the
glock/gdk-lock (via threads_enter()). It seems like the common "thread" between
these two crashes is that a user you played a game against disconnected. The
only areas of code that receive callbacks from FICSPlayerExited are the Players
List tab and the Chat window. In the Players List tab, the callback is locked,
so that's not the culprit:
class PlayerTabSection (ParrentListSection):
[...]
@glock.glocked
def onPlayerAdded (self, players, player):
But the callback in the ChatWindow.py is not locked:
def addRow (self, id, text, type):
if id in self.id2iter: return
iter = self.props.model.append([id, text, type])
self.id2iter[id] = iter
self.idSet.add(id)
[...]
def addPlayer (players, player):
self.playersList.addRow(self.compileId(player.name, TYPE_PERSONAL),
player.name + player.display_titles(), TYPE_PERSONAL)
return False
self.connection.players.connect("FICSPlayerEntered", addPlayer)
def removePlayer (players, player):
self.playersList.removeRow(self.compileId(player.name, TYPE_PERSONAL))
return False
self.connection.players.connect("FICSPlayerExited", removePlayer)
And I verified this is the case (i.e., that addRow() can get called from a
non-Main thread without the gdk lock) via an Eclipse run. This is shown in the
attached screenshot.
Fix coming...
Original comment by mattgatto
on 21 Feb 2014 at 12:50
Attachments:
This issue was closed by revision eb97966cef90.
Original comment by mattgatto
on 21 Feb 2014 at 1:59
It happened again today.
Original comment by gbtami
on 22 Feb 2014 at 9:46
Attachments:
This issue was closed by revision df77ba0efc4e.
Original comment by mattgatto
on 23 Feb 2014 at 11:13
I think the crash from your comment #6 was different than the previous crashes
in this issue report. The previous logs ended with:
00:21:18 ('GuestTSHD', 'lines') DEBUG: <wd> Preserve
... But comment #6 ended with:
10:37:04 Default DEBUG: BM.onPlayGameCreated: Creating: lmftel (1408) gbtami
(1413) rated lightning 2 1
{Game 224 (lmftel vs. gbtami) Creating rated lightning match.}
10:37:04 ('Ping', '09:02:34.353') DEBUG: 64 bytes from fics.freechess.org
(69.36.243.188): icmp_seq=2422 ttl=52 time=230 ms
... And since gamewidget creation is all done using GtkWorker and Publisher
which have gdk locking built-in, it must have been the pinger updating the ping
time in the FICS Lounge without the gdk lock.
Original comment by mattgatto
on 23 Feb 2014 at 11:18
It happened again.
Original comment by gbtami
on 28 Feb 2014 at 10:22
Attachments:
This issue was closed by revision 4b9d2a1c38e2.
Original comment by mattgatto
on 2 Mar 2014 at 6:41
Original issue reported on code.google.com by
gbtami
on 25 Oct 2013 at 12:51