Re: Confusing crash... *sigh* :)

From: Allan Hangaard (villain@get2net.dk)
Date: 05/29/00


> On Mon, 29 May 2000, The Merciless Lord of Everything wrote:
>
> >We're currently looking so much at corefiles that we are blue in the face
> >(or black/white, you decide.. :), since we're having mysterious crashes
> >when people edit new rooms. This is a new crash and as soon as I have
some
> >more information, I might ask about this... BUT!!
> >
> >The other day, one of our players type 'get coins from corpse' should be
> >pretty much straightforward, *BOOM* Mud crashes, very big ponder about
> >this one..
>
> You're probably trashing random parts of memory and as such GDB backtraces
> are useless since they're showing the symptoms and not the cause.
>
> Link your MUD with -lefence (Electric Fence) and boot it into mini-mud
mode
> (unless you have gobs of memory) and then create new rooms and such until
> it crashes. If that doesn't do it, try setting the environment variable
> EF_PROTECT_BELOW to 1 and then running the MUD with Electric Fence.
>
> There's also a variable called EF_PROTECT_FREE to enable if you suspect
its
> using previously freed memory.  However, that option will consume even
more
> memory.  Fortunately, most if it can be swapped out without causing harm
to
> the machine so just make tons of swap.
>
> --
> George Greer            | Sammy's Code - OBuild

Another note on thisone is if you are tryingto recreate the crash, run the
MUD throught gdb.
Go to your mud home directory, fire up gdb abd then type in the following
commands:

"file bin/circle"

"run"

Next the MUD crashes GDB will know the exact point. If indeed you are
randomly thrashing memory however this might not be the reason the MUD
crashes. try a few times, see if it's the same commands crashing it over and
over again. It might be that you are overwriting used memory when editing
rooms, to prevent this see if you can find a place in the code to allocate
memory for a room before filling it in. Take as much memory as a room can
possibly use (malloc), or just (realloc) with every addition to the edited
obj or room. that should free unused mem, and reserve what's needed.

Note however you STILL have to free it after you are done with it (free)

use man on the words in () if you don't know them yet that'll explain in
detail.

Allan Hangaard


     +------------------------------------------------------------+
     | 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 : 04/10/01 PDT