On Thu, 21 Jan 1999, Will Andrews wrote:
>Cannot access memory at address 0x200a9080.
>#0 0x201175d1 in ?? ()
>(gdb) bt
>#0 0x201175d1 in ?? ()
>#1 0x20116e34 in ?? ()
>#2 0x48c3 in nonblock (s=26) at comm.c:1812
Strange, that's only called during socket setup.
>#3 0xefbfdfdc in ?? ()
Looks thoroughly mangled.
>#4 0x87e4f in update_ferry () at ferry.c:137
>#5 0x29e5 in heartbeat (pulse=33600) at comm.c:826
>#6 0x28cd in game_loop (mother_desc=3) at comm.c:715
>#7 0x1c04 in init_game (port=4000) at comm.c:274
>#8 0x1a50 in main (argc=3, argv=0xefbfdd54) at comm.c:244
Not Linux or I could tell where you were by pointer addresses.
>ferry.c:135-138:
>if(time_info.hours == ferrys[onferrynum].ferry_time_board_dock1) {
> send_to_room(ferrys[onferrynum].board_dock_dock1,
>real_room(ferrys[onferrynum].dock1_room));
> send_to_room(ferrys[onferrynum].board_ferry_dock1,
>real_room(ferrys[onferrynum].ferry_at_dock_room));
>}
[...]
>This is where I get stumped. How can send_to_room possibly cause an
>infinite loop?
Could be real_room() getting confused on a corrupted world array. I'd add
a counter to real_room():
real_room()
{
int counter=0;
... top of loop ...
counter++;
if (counter > 10000) {
log(important_variables)
abort();
}
... bottom of loop ...
}
--
George Greer - greerga@circlemud.org - http://www.circlemud.org/~greerga/
I have three jobs covering 6 days of the week, 17 credit hours on two campuses
30 minutes apart, and am trying to have a semblance of a life. Don't be
suprised if I take week or more to answer anything directly mailed to me.
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST