I have just recently subscribed to the mailing list, so I do not know if the
following "crash bug" has _yet_ been discovered.
Fist start a character (any character) and then self-deleted.
Then attempt to login as that character again and wait.
CASE FAILURE:
A character flagged deleted that has connected
Now that the mud sees that the char has been DELETED it will prompt them
for the name comfirm in nanny().
"Did I get that right, Dummychar (Y/N)?"
Before input, break your telnet link (i.e ^]q) and watch what happens.
This will cause a crash every time, and without any clues to find this, which
is why I am writing :-)
The SEGV comes from function free_char() that is called after the link has
been broken (comm.c, close_socket). It is faling here:
while ((a = GET_ALIASES(ch)) != NULL) {
GET_ALIASES(ch) = (GET_ALIASES(ch))->next; <----- CRASH
free_alias(a);
}
To prevent this (which I am not saying is to be the "right way") I added
a line before the while statement:
if (ch->player_specials->aliases->next != NULL) { <----- SEAT BELT :-)
while ((a = GET_ALIASES(ch)) != NULL) {
GET_ALIASES(ch) = (GET_ALIASES(ch))->next;
free_alias(a);
}
}
I do hope that this helps some people out, for it cause me some headaches :)
Cliff aka Tapo
unknown.net-connect.net 5000
This archive was generated by hypermail 2b30 : 12/07/00 PST