[FIXED] Crash: Sending chunk to dangling pointer to cClientHandle
#1
Woooo! Another crash Sad
The server was running rev 426

cChunkSender::SendChunk called with an invalid pointer to a cClientHandle.
According to the log, the cClientHandle was deleted 1 second before the crash.

I'll be uploading the dump and everything now

http://dl.dropbox.com/u/27784874/MCServer_Crash.rar
Reply
Thanks given by:
#2
The log file would have been useful, too
Bu at least now debugging works, the symbols matched Smile
I think I know what the issue is, just not yet sure how to fix it.
cChunkSender::RemoveClient() is supposed to block until the client is really really removed, so it needs to wait for the sendthread to actually finish the current sending job. This waiting is flawed, because it uses a semaphore that is signalled everytime the sending job finishes, which makes the semaphore passable without waiting upon further queries.
I'll think it over when I go home from work tonight, I guess I'll have a fix for that in the evening.
Reply
Thanks given by:
#3
Glad the dump works. Anyway here's a piece of the log if you still want it

http://pastebin.com/9TbHKP0d
Reply
Thanks given by:
#4
I think I fixed that in rev 438. Added a proper counting of semaphore operations.
Reply
Thanks given by:




Users browsing this thread: 2 Guest(s)