Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 20 Sep 2008 09:23:12 +0300
From:      Giorgos Keramidas <keramida@ceid.upatras.gr>
To:        unga888@yahoo.com
Cc:        trashy_bumper@yahoo.com, freebsd-questions@freebsd.org
Subject:   Re: Segmentation fault when free
Message-ID:  <874p4bgwtr.fsf@kobe.laptop>
In-Reply-To: <614097.81584.qm@web57007.mail.re3.yahoo.com> (Unga's message of "Fri, 19 Sep 2008 20:03:03 -0700 (PDT)")
References:  <614097.81584.qm@web57007.mail.re3.yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 19 Sep 2008 20:03:03 -0700 (PDT), Unga <unga888@yahoo.com> wrote:
> Hi thank you very much for your reply and the test case.
>
> That is, in a trivial case like this, free() works well. Hopefully
> free() works well in all cases too.
>
> But my main program is 1900 lines, f1() and f2() are in a 2200 lines
> second file. The f1() and f2() calls some functions from a 500 lines
> third file. The main program call another function, f3(), from 2nd
> file, pass pointers to two functions f4(), f5() of main program. The
> while loop iterate more than one million times. Its quite a complex
> situation.

You are probably calling free() multiple times for the same buffer.

Try tracing the malloc and free calls, using the information from this
message:

http://lists.freebsd.org/pipermail/freebsd-questions/2008-July/179480.html

> There must be an error somewhere else. I noted free() causes lot of
> troubles. It is easy to write complex programs if you just let to leak
> memory. But in my case, since the program iterate millions of times,
> if I let to leak, I'm sure it will run out of RAM.

Leaking memory is *never* a good choice.  Especially if you are writing
library code that others are supposed to use, or code that is supposed
to run millions of times.

While it's understandable as a 'quick hack' when you are first writing a
program, I've seen far too many 'quick hacks' that lived years and years
after the original 'experimental' period passed.  Hence the knee-jerk
reaction when I see leaks being used as a 'temporary' solution :)




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