Okay,
it seems i is pointing to NULL, or something,
but the question is why? as it seem to go through the object list in
exactly the same way as all the others.
Is it the DG scripts going through the list and messing it up?
anyway:
Program received signal SIGSEGV, Segmentation fault.
0x806cd73 in tick_grenade () at fight.c:1191
1191 if (IS_SET(GET_OBJ_EXTRA(i), ITEM_LIVE_GRENADE)) {
(gdb) print i
$1 = (obj_data *) 0x80
(gdb)
1186 one of the extra flag bits. After the pin is pulled
the grenade
1187 starts counting down. once it reaches zero,
it explodes. */
1188
1189 for (i = object_list; i; i = i->next) {
1190
1191 if (IS_SET(GET_OBJ_EXTRA(i), ITEM_LIVE_GRENADE)) {
1192 /* update ticks */
1193 if (i->obj_flags.value[0] >0)
1194 i->obj_flags.value[0] -=1;
1195 else {
The backtrace :
#0 0x806cd73 in tick_grenade () at fight.c:1191
#1 0x804a045 in heartbeat (pulse=220) at comm.c:723
#2 0x8049f8d in game_loop (mother_desc=7) at comm.c:686
#3 0x8049646 in init_game (port=4000) at comm.c:279
#4 0x80495da in main (argc=1, argv=0xbffffd88) at comm.c:249
#5 0x804931b in _start ()
Most of the Front of tick_grenade:
void tick_grenade(void)
{
struct obj_data *i, *tobj;
struct char_data *tch, *next_tch;
int s, t, dam, door;
/* grenades are activated by pulling the pin - ie, setting the
one of the extra flag bits. After the pin is pulled the grenade
starts counting down. once it reaches zero, it explodes. */
for (i = object_list; i; i = i->next) {
if (IS_SET(GET_OBJ_EXTRA(i), ITEM_LIVE_GRENADE)) {
/* update ticks */
if (i->obj_flags.value[0] >0)
i->obj_flags.value[0] -=1;
else {
t = 0;
/* blow it up */
and FINALLY
Comm.c
void heartbeat(int pulse)
{
static int mins_since_crashsave = 0;
void process_events(void);
dg_global_pulse++;
process_events();
if (!(pulse % PULSE_ZONE))
zone_update();
if (!(pulse % (15 * PASSES_PER_SEC))) /* 15 seconds */
check_idle_passwords();
if (!(pulse % PULSE_MOBILE))
mobile_activity();
if (!(pulse % PULSE_DG_SCRIPT))
script_trigger_check();
if (!(pulse % PULSE_VIOLENCE)) {
tick_grenade();
perform_violence();
}
So it script_trigger_check mucking it up?
Any ideas?
Dan.
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST