Ok, it looks like it's crashing with the IS_IMMORTAL() macro which really points to get_trust(). However, without the line numbers in your do_clan_talk() function, we don't know which IS_IMMORTAL() macro crashed it...either, IS_IMMORTAL(ch) or IS_IMMORTAL(d->character) further down in the function.
- Will Strife Daemonkin ----- Original Message ----- From: "MarkD" <[EMAIL PROTECTED]> To: <[email protected]> Sent: Saturday, January 05, 2002 11:04 PM Subject: Very odd crashes [sorta-long] > Hey list, > This has been happening lately for no good reason that i can figure out. > The mud has been crashing whenever someone uses the 'clan talk' command. > Does anyone have any idea why this is crashing? Here's the gdb output (the > clan talk command is below it) > > #0 get_trust (ch=0x0) at handler.c:729 > 729 if ( ch->desc != NULL && ch->desc->original != NULL ) > (gdb) bt > #0 get_trust (ch=0x0) at handler.c:729 > #1 0x8075601 in do_clan_talk (ch=0x40704278, > argument=0xbfffe8dd "Do I get to kill him?") at clan.c:1140 > #2 0x8095c91 in interpret (ch=0x40704278, > argument=0xbfffe8d4 "newbreed Do I get to kill him?") at interp.c:718 > #3 0x8070bcd in substitute_alias (d=0x40961fa4, > argument=0x409623c1 "newbreed Do I get to kill him?") at alias.c:95 > #4 0x8075da1 in game_loop_unix (control=4) at comm.c:818 > #5 0x8075929 in main (argc=2, argv=0xbffffd04) at comm.c:448 > (gdb) print ch->name > Cannot access memory at address 0x7c > (gdb) up > #1 0x8075601 in do_clan_talk (ch=0x40704278, > argument=0xbfffe8dd "Do I get to kill him?") at clan.c:1140 > 1140 if ( (d->connected == CON_PLAYING && /*is > playing*/ > (gdb) print ch->name > $1 = 0x409a7d94 "Menelaus" > (gdb) > > (Sorry about the formatting if it looks a little rough) > > void do_clan_talk(CHAR_DATA *ch, char *argument) > { > DESCRIPTOR_DATA *d; > char buf[MSL]; > > if(IS_IMMORTAL(ch)) > { > send_to_char("Use the clantalk command.\n\rType 'help clantalk' to see > info on it.\n\r",ch); > return; > } > > if (!is_clan(ch)) > { > send_to_char("You aren't in a clan.\n\r",ch); > return; > } > > if ( argument[0] == '\0' ) > { > if (IS_SET(ch->comm,COMM_NOCLAN)) > { > send_to_char("Clan channel is now ON\n\r",ch); > REMOVE_BIT(ch->comm,COMM_NOCLAN); > } > else > { > send_to_char("Clan channel is now OFF\n\r",ch); > SET_BIT(ch->comm,COMM_NOCLAN); > } > return; > } > > if (IS_SET(ch->comm,COMM_NOCHANNELS)) > { > send_to_char("The gods have revoked your channel priviliges.\n\r",ch); > return; > } > > REMOVE_BIT(ch->comm,COMM_NOCLAN); > > sprintf(buf,"%s: {wYou '%s'{x\n\r", clan_table[ch->clan].who_name, > argument); > send_to_char(buf, ch); /*sends to char*/ > > for ( d = descriptor_list; d != NULL; d = d->next ) > { > if ( (d->connected == CON_PLAYING && /*is playing*/ > d->character != ch && /*isn't sender*/ > is_same_clan(ch,d->character) && /*same clan as sender*/ > !IS_SET(d->character->comm,COMM_NOCLAN) && /*doesn't have > noclan on*/ > !IS_SET(d->character->comm,COMM_QUIET)) || /*doesn't have quiet mode > on*/ > IS_IMMORTAL(d->character)) /* is an imm */ > { > sprintf(buf,"%s: {w%s '%s'{x\n\r", clan_table[ch->clan].who_name, > ch->name, argument); > send_to_char(buf, d->character); /*sends to mud */ > } > else if(IS_IMMORTAL(d->character) && (d->character != ch) && > (is_same_clan(ch,d->character))) > { > sprintf(buf,"%s: {w%s '%s'{x\n\r", clan_table[ch->clan].who_name, > ch->name, argument); > send_to_char(buf, d->character); > } /* this function sends it to all imms */ > } > return; > } > > > _____________________________________________ > Free email with personality! Over 200 domains! > http://www.MyOwnEmail.com > > > -- > ROM mailing list > [email protected] > http://www.rom.org/cgi-bin/mailman/listinfo/rom >

