Complete freeze on player leaving. #3410
Comments
vexed changed status from |
vexed changed resolution from `` to |
vexed commented This still happen in beta 9 ? Looks like you redid most of the code... |
Cyp changed status from |
Cyp changed resolution from |
Cyp commented The code I touched recently would execute after the complete freeze, so wouldn't fix it. Very rare, and think has only happened when hosting, and not if all clients are running on my computer. I assume it still happens in β9 (although haven't seen it yet). My current guess is a bug in glibc select()/send() code, but don't know. Hmmm... In the BUGS section of the select() man page, it says: The freeze was during send(), rather than recv(), but maybe need to make all sockets non-blocking (using the setSocketBlocking() function). |
Cyp changed status from |
Cyp changed resolution from `` to |
Cyp commented Make sockets nonblocking as workaround for socket calls unexpectedly blocking. For some weird reason, select() sometimes returns that a socket write would not block, but the socket write does On display in the bottom of a locked manpage for select(), stuck in a disused lavatory with a sign on the door This would explain a socket read unexpectedly blocking, although the issue is actually a socket write unexpectedly Fixes #3410, or else.
|
Cyp commented Make sockets nonblocking as workaround for socket calls unexpectedly blocking. For some weird reason, select() sometimes returns that a socket write would not block, but the socket write does On display in the bottom of a locked manpage for select(), stuck in a disused lavatory with a sign on the door This would explain a socket read unexpectedly blocking, although the issue is actually a socket write unexpectedly Fixes #3410, or else.
|
2 similar comments
Cyp commented Make sockets nonblocking as workaround for socket calls unexpectedly blocking. For some weird reason, select() sometimes returns that a socket write would not block, but the socket write does On display in the bottom of a locked manpage for select(), stuck in a disused lavatory with a sign on the door This would explain a socket read unexpectedly blocking, although the issue is actually a socket write unexpectedly Fixes #3410, or else.
|
Cyp commented Make sockets nonblocking as workaround for socket calls unexpectedly blocking. For some weird reason, select() sometimes returns that a socket write would not block, but the socket write does On display in the bottom of a locked manpage for select(), stuck in a disused lavatory with a sign on the door This would explain a socket read unexpectedly blocking, although the issue is actually a socket write unexpectedly Fixes #3410, or else.
|
resolution_fixed
type_bug
| by CypGame froze completely (UI frozen, too, that is). Was just as a player left, so could be related.
After attaching a debugger, getting a backtrace, and quitting the debugger, the game unfroze.
The text was updated successfully, but these errors were encountered: