Re:MEDIT (Oasis)

From: MAD MAT (
Date: 06/16/96

>ok...Everytime we use Medit it crashes :)
>It crashes after we answer YES to saving the object internally...
>Now, no one (to my knowledge) has messed with the olc I
>figured it was a mob file..(a bad one) I took all the ***.mob out of
>the index except 0.mob, assuming I could narrow down the bad mob file.
>It crashed. So I removed 0.mob and put in 30.mob, still crashed.
>Anyone know why? Does have to be in correlation with it, in
>some way that I am not familiar with?
>Any other reason why this could be happening, the only olc code to be
>eddited was olc.h, and all that was changes was a
>#define NUM_ITEM_EXTRA_FLAGS (or something like that)
>from 17 to 22....
>Anyone wanna help clear this up?

Hmm... the problem comes from a bad free in medit.c L237 :

    /*. Replace tables .*/
->  free(mob_proto);      /* this one... */
    mob_index = new_index;
    mob_proto = new_proto;

it seems to free the wrong pointer as gdb says:

Program received signal SIGBUS, Bus error.
0x73cb4 in free_unlocked ()

when it crashes and the backtrace is:

#0  0x73cb4 in free_unlocked ()
#1  0x73ae0 in free ()
#2  0x6ed44 in medit_save_internally (d=0x299660) at medit.c:238
#3  0x6faf0 in medit_parse (d=0x299660, arg=0xeffff428 "y") at medit.c:563
#4  0x5168c in nanny (d=0x299660, arg=0xeffff428 "y") at interpreter.c:1370
#5  0x1cad8 in game_loop (mother_desc=7) at comm.c:609
#6  0x1c174 in init_game (port=4000) at comm.c:243
#7  0x1c0f8 in main (argc=1, argv=0xeffffaac) at comm.c:213


I don't have much time right now so I just removed the free

waiting for a better solution...

This archive was generated by hypermail 2b30 : 12/18/00 PST