Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 20 Sep 2008 07:04:03 -0700 (PDT)
From:      Unga <unga888@yahoo.com>
To:        Giorgos Keramidas <keramida@ceid.upatras.gr>
Cc:        freebsd-questions@freebsd.org, Nash Nipples <trashy_bumper@yahoo.com>
Subject:   Re: Segmentation fault when free [SOLVED]
Message-ID:  <55974.31287.qm@web57001.mail.re3.yahoo.com>
In-Reply-To: <87bpyj9qi9.fsf@kobe.laptop>

next in thread | previous in thread | raw e-mail | index | archive | help
--- On Sat, 9/20/08, Giorgos Keramidas <keramida@ceid.upatras.gr> wrote:

> > ktrace.out shows:
> > malloc_init()
> > 0x8103400 = malloc(1024)
> > malloc_init()
> > malloc_init()
> > 0x810b0b0 = malloc(400)
> > :
> > so many malloc
> > :
> > so many free
> > :
> > malloc/free combinations
> > :
> > free(0xbfbfc9c9)
> >
> > 1. This clearly shows my program is trying to free a
> memory that has
> > not been allocated. How it could have happened?
> 
> Aha.  This looks remarkably like an address in the runtime
> stack.  It
> usually happens when you have a function that returns the
> address of a
> 'local' variable, instead of a newly allocated heap
> area, i.e.:
> 
>     char *
>     function(void)
>     {
>         char buffer[100];
> 
>         return buf;
>     }
> 

This was indeed the case, worst yet, I was trying to free a part of the buffer (as per your example above) by mistake which was not allocated by malloc.

Thank you all who helped me. 

Best regards
Unga





      



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?55974.31287.qm>