==8892== Invalid write of size 1
==8892== at 0x401E414: mempcpy (mc_replace_strmem.c:677)
==8892== by 0x40C9B31: _IO_default_xsputn (in /lib/libc-2.3.5.so)
==8892== by 0x40A74C4: vfprintf (in /lib/libc-2.3.5.so)
==8892== by 0x40C028A: vsprintf (in /lib/libc-2.3.5.so)
==8892== by 0x40ADDFC: sprintf (in /lib/libc-2.3.5.so)
==8892== by 0x804A536: talk_channel (act_comm.c:566)
==8892== by 0x804AC45: do_yell (act_comm.c:913)
==8892== by 0x807F7AC: violence_update (fight.c:419)
==8892== by 0x809F3D7: update_handler (update.c:2411)
==8892== by 0x8070849: game_loop_unix (comm.c:933)
==8892== by 0x8070DE3: main (comm.c:520)
==8892== Address 0xbf00c7c2 is not stack'd, malloc'd or (recently) free'd
==8892==
==8892== Process terminating with default action of signal 11 (SIGSEGV)
==8892== Access not within mapped region at address 0xBF00C7C2
==8892== at 0x401E414: mempcpy (mc_replace_strmem.c:677)
==8892== by 0x40C9B31: _IO_default_xsputn (in /lib/libc-2.3.5.so)
==8892== by 0x40A74C4: vfprintf (in /lib/libc-2.3.5.so)
==8892== by 0x40C028A: vsprintf (in /lib/libc-2.3.5.so)
==8892== by 0x40ADDFC: sprintf (in /lib/libc-2.3.5.so)
==8892== by 0x804A536: talk_channel (act_comm.c:566)
==8892== by 0x804AC45: do_yell (act_comm.c:913)
==8892== by 0x807F7AC: violence_update (fight.c:419)
==8892== by 0x809F3D7: update_handler (update.c:2411)
==8892== by 0x8070849: game_loop_unix (comm.c:933)
==8892== by 0x8070DE3: main (comm.c:520)
==8892==
==8892== ERROR SUMMARY: 64 errors from 3 contexts (suppressed: 15 from 2)
==8892== malloc/free: in use at exit: 18,257,900 bytes in 65 blocks.
==8892== malloc/free: 610 allocs, 545 frees, 18,444,304 bytes allocated.
==8892== For counts of detected errors, rerun with: -v
==8892== searching for pointers to 65 not-freed blocks.
==8892== checked 18,741,276 bytes.
==8892==
==8892== LEAK SUMMARY:
==8892== definitely lost: 0 bytes in 0 blocks.
==8892== possibly lost: 0 bytes in 0 blocks.
==8892== still reachable: 18,257,900 bytes in 65 blocks.
==8892== suppressed: 0 bytes in 0 blocks.
==8892== Rerun with –leak-check=full to see details of leaked memory.
==9048== Jump to the invalid address stated on the next line
==9048== at 0x20706C65: ???
==9048== Address 0x20706c65 is not stack'd, malloc'd or (recently) free'd
==9048==
==9048== Process terminating with default action of signal 11 (SIGSEGV)
==9048== Access not within mapped region at address 0x20706C65
==9048== at 0x20706C65: ???
==9048==
==9048== ERROR SUMMARY: 21 errors from 2 contexts (suppressed: 15 from 2)
==9048== malloc/free: in use at exit: 18,520,044 bytes in 67 blocks.
==9048== malloc/free: 610 allocs, 543 frees, 18,705,720 bytes allocated.
==9048== For counts of detected errors, rerun with: -v
==9048== searching for pointers to 67 not-freed blocks.
==9048== checked 19,001,752 bytes.
==9048==
==9048==
==9048== 364 bytes in 1 blocks are still reachable in loss record 1 of 3
==9048== at 0x401C909: malloc (vg_replace_malloc.c:207)
==9048== by 0x40BE16E: __fopen_internal (in /lib/libc-2.3.5.so)
==9048== by 0x40BE22E: fopen@@GLIBC_2.1 (in /lib/libc-2.3.5.so)
==9048== by 0x80998A6: save_char_obj (save.c:262)
==9048== by 0x809F328: char_update (update.c:1564)
==9048== by 0x809F47A: update_handler (update.c:2442)
==9048== by 0x8070849: game_loop_unix (comm.c:933)
==9048== by 0x8070DE3: main (comm.c:520)
==9048==
==9048==
==9048== 8,519,680 bytes in 65 blocks are still reachable in loss record 2 of 3
==9048== at 0x401BA29: calloc (vg_replace_malloc.c:397)
==9048== by 0x80723F6: alloc_perm (db.c:3228)
==9048== by 0x8073E5A: load_helps (db.c:793)
==9048== by 0x807620E: boot_db (db.c:553)
==9048== by 0x8070DBC: main (comm.c:517)
==9048==
==9048==
==9048== 10,000,000 bytes in 1 blocks are still reachable in loss record 3 of 3
==9048== at 0x401BA29: calloc (vg_replace_malloc.c:397)
==9048== by 0x8075F03: boot_db (db.c:433)
==9048== by 0x8070DBC: main (comm.c:517)
==9048==
==9048== LEAK SUMMARY:
==9048== definitely lost: 0 bytes in 0 blocks.
==9048== possibly lost: 0 bytes in 0 blocks.
==9048== still reachable: 18,520,044 bytes in 67 blocks.
==9048== suppressed: 0 bytes in 0 blocks.
Segmentation fault
switch (channel)
{
default:
sprintf (buf, "You %s '%s'\n\r", verb, argument); <———566
send_to_char (buf, ch);
sprintf (buf, "$n %ss '$t'", verb);
break;
case CHANNEL_SHOUT:
sprintf (buf, "^c$n^c shouts across the land '^B$t^c'^w");
position = ch->position;
ch->position = POS_STANDING;
act (buf, ch, argument, NULL, TO_CHAR);
ch->position = position;
break;
void
do_yell (CHAR_DATA * ch, char *argument)
{
talk_channel (ch, color_strip(argument), CHANNEL_YELL, "yell"); <—–913
return;
}
if (IS_NPC (target))
{
sprintf (buf, "A call to arms! I've spotted %s at %s!",
target->short_descr,
newname);
do_yell (ch, buf); <—–419
}
else
{
if (is_outlaw (ch, target))
{
sprintf (buf, "A call to arms! I've spotted the outlaw %s
at %s!",
target->name,
newname);
do_yell (ch, buf);
}
if (–pulse_area <= 0)
{
pulse_area = number_range (PULSE_AREA / 2, 3 * PULSE_AREA / 2);
if (!sleepmode)
area_update ();
if (!firsttime)
{
if (count_players() == 0)
{
standby();
}
else
{
wakeup();
}
}
else
{
firsttime = FALSE;
}
}
<——–This space here is the 2411 line.
if (–pulse_violence <= 0)
{
pulse_violence = PULSE_VIOLENCE;
if (!sleepmode)
violence_update ();
}
/*
* Autonomous game motion.
*/
update_handler (); <———–933
#if defined( unix ) || defined ( WIN32 )
control = init_socket (port);
// init hash table for ip traffic controling
for (i = 0 ; i < IP_HASH_SIZE; i++)
{
iptable[i] = NULL;
}
boot_db ();
sprintf (log_buf, "-AD- is ready to rock on port %d.", port);
log_string (log_buf);
game_loop_unix (control); <——-Line 520
sprintf (buf, "A call to arms! I've spotted %s at %s!",
target->short_descr,
newname);
do_yell (ch, buf); <—–419
sprintf (buf, "A call to arms! I've spotted %s at %s!",
target->short_descr,
newname);
do_yell (ch, buf); <—–419
Then it spit out those numbers up through 1200 before I just quit the backtrace. I have not messed with the talk channel and have been working on classes. Is there anything in that code that you can discern or what kind of information can I give?