Alright, in and of itself, this shouldn't be too terribly strange, but it seems to be narrowed down to only one, single player who crashes the game every single time he shows up. It isn't his pfile - the same error occurs every time he connects, whether to his own pfile, the Guest pfile, random new pfiles, etc. Me and others can connect to the same pfiles with no difficulty.
Troubleshooting that has already been done:
- As mentioned above, I checked and doublechecked that it wasn't an error with his pfile. No matter which pfile he signs into, the game crashes with the same error. Other users, including myself, can use the same pfiles without issue.
- Just in case I deleted his pfile and remade it. Same things occurred - I can sign into it without issue. He signs into it, we crash.
- His client is MUSHclient, which is the most commonly used client on our game. It seems highly unlikely to be his client because we (almost) all use it.
- He is not inputting any unusual commands, and he can occasionally stay logged in long enough to have a brief conversation. The timing seems fairly random as to when the error decides to occur, but it always occurs eventually.
- He can sign into the game from The Mud Connector FMud in-browser client without any problems. The game does not crash. This is using the mudconnector.com proxy. However, having him use a free proxy through MUSHClient does not have the same effect. He connects through the proxy and the same error occurs. It is only the in-browser FMud client on TMC that seems immune.
I am a fairly new coder, so this is a little outside my knowledge. I did what I could to try and pin the problem down, but the results are difficult for me to process, let alone what I should do with them.
This is what I get in gdb when it crashes:
Program received signal SIGSEGV, Segmentation fault.
0x00259bb9 in strcat () from /lib/libc.so.6
Backtrace:
(gdb) bt
#0 0x00259bb9 in strcat () from /lib/libc.so.6
#1 0x0809a76a in read_from_buffer (d=0xb70460e4) at comm.c:1397
#2 0x080995f6 in game_loop_unix (control=8) at comm.c:835
#3 0x08098fc3 in main (argc=2, argv=0xbfffd834) at comm.c:439
The portions of comm.c referenced in the backtrace:
Line 1837 specified in context below
if ((signed char) 255 > d->inbuf > (signed char) 250)
{
i++;
strcat(telbuf, " ");
if (IS_TELOPT(d->inbuf))
strcat(telbuf, telopts[(unsigned char)d->inbuf]); /* Line 1397 */
else
{
sprintf(buf, "(%d)", d->inbuf);
strcat(telbuf, buf);
}
}
Line 835 specified in context below
if (d->character != NULL && d->character->wait > 0)
{
--d->character->wait;
continue;
}
read_from_buffer (d); /* Line 835 */
if (d->incomm[0] != '\0')
{
d->fcommand = TRUE;
stop_idling (d->character);
Line 439 specified in context below
#if defined(unix)
if (!fCopyOver)
control = init_socket (port);
boot_db (fCopyOver);
sprintf (log_buf, "The Requiem has docked at port %d.", port);
log_string (log_buf, CHANNEL_LOG_NORMAL);
game_loop_unix (control); /* Line 439 */
close (control);
#endif
Continued... |