<div dir="ltr">On Thu, Jan 26, 2012 at 18:08, Yedidyah Bar-David <span dir="ltr">&lt;<a href="mailto:linux-il@didi.bardavid.org">linux-il@didi.bardavid.org</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="HOEnZb"><div class="h5">On Thu, Jan 26, 2012 at 10:54:56AM -0500, Ori Berger wrote:<br>
&gt; On 01/26/2012 10:16 AM, Baruch Siach wrote:<br>
&gt;<br>
&gt; &gt;&gt;Only by using valgrind, that I could find the exact location and figure<br>
&gt; &gt;&gt;out, that it was another function that had the problem.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;How does the modern memory management system is working then, that it takes<br>
&gt; &gt;&gt;so much time for the problem to surface ?<br>
&gt; &gt;<br>
&gt; &gt;Now, if you corrupt the internal glibc data structure, glibc won&#39;t notice<br>
&gt; &gt;until you try to call one of malloc(), free(), etc.<br>
&gt;<br>
&gt; And in addition to what Baruch said:<br>
&gt;<br>
&gt; Valgrind will always catch these errors, but will result in<br>
&gt; significant slowdown (x10-x20). There are tools like DUMA (and its<br>
&gt; earlier incarnation, Electric Fence) incur almost no CPU overhead<br>
&gt; and can detect many kinds of corruptions as soon as they happen, by<br>
&gt; using the memory management units.<br>
&gt;<br>
&gt; (Because of the MMU granularity, you need to run your program twice<br>
&gt; - one in which allocations are aligned to the lower address, and one<br>
&gt; when they are aligned to the top address)<br>
&gt;<br>
&gt; There is also a middle ground; gcc&#39;s mudflap<br>
&gt; &lt;<a href="http://www.stlinux.com/devel/debug/mudflap" target="_blank">http://www.stlinux.com/devel/debug/mudflap</a>&gt; and -- if your program<br>
&gt; is pure C and can be compiled by tcc,<br>
&gt; &lt;<a href="http://bellard.org/tcc/tcc-doc.html#SEC21" target="_blank">http://bellard.org/tcc/tcc-doc.html#SEC21</a>&gt;; These are comparable to<br>
&gt; valgrind in functionality (for code you compile with them; standard<br>
&gt; library code runs at full speed/unchecked), but usually only<br>
&gt; introduce a small slowdown (10% or so).<br>
<br>
</div></div>BTW, in case you do not know Fabric Bellard, he does lots of very cool<br>
stuff - he is the author of qemu, and every now and then I give a look<br>
at his site. I now did because of this post and found out an amazing<br>
project of a PC Emulator in Javascript:<br>
<a href="http://bellard.org/jslinux/" target="_blank">http://bellard.org/jslinux/</a><br>
The guy is simply amazing.<br>
<span class="HOEnZb"><font color="#888888">--<br>
Didi<br></font></span></blockquote><div><br>Thank you all, you made me wiser :)<br><br>Ido <br></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

<span class="HOEnZb"><font color="#888888">
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
_______________________________________________<br>
Linux-il mailing list<br>
<a href="mailto:Linux-il@cs.huji.ac.il">Linux-il@cs.huji.ac.il</a><br>
<a href="http://mailman.cs.huji.ac.il/mailman/listinfo/linux-il" target="_blank">http://mailman.cs.huji.ac.il/mailman/listinfo/linux-il</a><br>
</div></div></blockquote></div><br></div>