Valnir wrote:
We're getting ready to port our mud to a new server and we're having a bit
of an issue. Everything compiles clean, but when we login we get past our
account login and when we select what character to play the mud crashes.
Program terminated with signal 11, Segmentation fault.
#0  0x080b373c in set_host (ch=0xb74f63bc, d=0xb74f5240) at comm.c:5793
5793                free_string(ch->usrdata->alt_hosts[h]);
print ch->usrdata
print h
print ch->usrdata->alt_hosts[h]

These will give us the proper feedback on exactly what is causing the crash. I'm willing to bet ch->usrdata is 0x0, or is 0x3 or some such invalid mem address (caused by an overrun of some sort). If it is, you may want to insert an alloc_mem in the new_char_data() and the corresponding free_mem() in the free_char_data().
(gdb) where
#0  0x080b373c in set_host (ch=0xb74f63bc, d=0xb74f5240) at comm.c:5793
#1  0x080a905c in nanny (d=0xb74f5240, argument=0xb74f5661 "Valnir") at
comm.c:2560
#2  0x080a4a49 in game_loop_unix (control=4) at comm.c:885
#3  0x080a4424 in main (argc=2, argv=0xbf911974) at comm.c:490
(gdb) It's crashing while trying to update the listing of hosts that a players has
connected from.
/* consolidate list and remove the current host from the list, if needed
*/
might want to put this block inside a if ( ch->usrdata != null ) check
    for ( h = 0; h < MAX_HOSTS; h++ )
    {
        if ( !str_cmp( ch->usrdata->alt_hosts[h], d->host ) )
            continue;
if ( !IS_NULLSTR(ch->usrdata->alt_hosts[h]) )
        {
            hosts[i++] = str_dup(ch->usrdata->alt_hosts[h]);
            free_string(ch->usrdata->alt_hosts[h]);
            ch->usrdata->alt_hosts[h] = &str_empty[0];
        }
    }
The new server is running GCC 4.1.1 and any help would be greatly
appreciated. Thanks!
- Valnir

Ammaross Danan
Realms of the Forgotten
www.rotf.net 4998
--
ROM mailing list
[email protected]
Unsubscribe here ->>> http://www.rom.org/cgi-bin/mailman/listinfo/rom

Reply via email to