<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2448.0">
<TITLE>RE: [LCP]Segmentation Faults when calling free()</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=2>&gt; Solution?&nbsp; Compile with electric fence, and run in a debugger.&nbsp; Efence</FONT>
<BR><FONT SIZE=2>&gt; causes a segfault on the first instruction which writes </FONT>
<BR><FONT SIZE=2>&gt; outside the n bytes</FONT>
<BR><FONT SIZE=2>&gt; which you've been specifically allocated (and hence catches overruns,</FONT>
<BR><FONT SIZE=2>&gt; underruns, and fencepost errors).&nbsp; Very, very useful for </FONT>
<BR><FONT SIZE=2>&gt; finding bugs like</FONT>
<BR><FONT SIZE=2>&gt; this.</FONT>
</P>

<P><FONT SIZE=2>Just be aware that since efence aligns the memory to change page</FONT>
<BR><FONT SIZE=2>where the allocated space ends, you'll have to do at least two runs,</FONT>
<BR><FONT SIZE=2>once to detect overruns, and another to detect underruns (as in each</FONT>
<BR><FONT SIZE=2>it will align differently, either the end of a block on the end of</FONT>
<BR><FONT SIZE=2>a page, or the beginning of a block to the beginning of a page).</FONT>
</P>

<P><FONT SIZE=2>There is also Valgrind, which runs your program in a virtual CPU,</FONT>
<BR><FONT SIZE=2>keeping track of what is yours and what is not.</FONT>
</P>

<P><FONT SIZE=2>Sorry for the HTML, it leaves in plain text but is converted by</FONT>
<BR><FONT SIZE=2>our company's (MS) mail server.</FONT>
</P>

<P><FONT SIZE=2>-- </FONT>
<BR><FONT SIZE=2>Vincent Penquerc'h </FONT>
</P>

</BODY>
</HTML>