From: Ric Klaren (
Date: 06/26/96


On Wed, 26 Jun 1996, Jvrgen Zigge Sigvardsson wrote:

> Does anyone have a clue?
> This line of code crashes my mud: free(mob_proto);
> Where mob_proto is a pointer to a char_data structure 
> (struct char_data *mob_proto)

First guess, mob_proto isn't the pointer which was malloced anymore... eg 
you are trying to free something that wasn't malloced.

Second guess, something wrote beyond/before the mob_proto struct in the
memory and damaged some internal struct of malloc/free hard to detect and 

Try placing a breakpoint in the code with gdb and check out the struct 
you are trying to free up.

> The debugger tells me the following:
> 	signal BUS (invalid address alignment) in free_unlocked at 0xe0714
> 	free_unlocked+0x1c4:	st     	%l1, [%l0 + 4]
> What can I do to make the address correctly aligned?
> BTW I'm on a Sparc Station 5 using Solaris 2.5

If it's none of the above.. (which I don't think it is) Dunno for sure 
about the sparc it may work with even addresses or quad aligned 
addresses. So malloc 1 byte or 3 bytes extra and add 1 until you're on 
the right alignment. (add 1 is impracticle use some addition and some AND 
mask which is appropriate for the case)

If needed send me some code (if you're desperate ;) (if it's lots send it 
to the second email in my sig, that's no phone connection....)

Greetz Ric

- Ric Klaren - - -------------
``Why don't we just invite them to dinner and massacre them all when
they're drunk?''
``You heard the man. There's seven hundred thousand of them.''
``Ah? So it'd have to be something simple with pasta, then.''
From: Interesting Times by Terry Pratchet

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