xreflabel="Kinds of bugs that Memcheck can find">
<title>Kinds of bugs that Memcheck can find</title>
-<para>Memcheck is Valgrind-1.0.X's checking mechanism bundled up
-into a tool. All reads and writes of memory are checked, and
+<para>Memcheck is Valgrind's heavyweight memory checking
+tool. All reads and writes of memory are checked, and
calls to malloc/new/free/delete are intercepted. As a result,
Memcheck can detect the following problems:</para>
[default]</para>
<para><computeroutput>--workaround-gcc296-bugs=yes</computeroutput></para>
<para>When enabled, assume that reads and writes some small
- distance below the stack pointer
- <computeroutput>%esp</computeroutput> are due to bugs in gcc
+ distance below the stack pointer are due to bugs in gcc
2.96, and does not report them. The "small distance" is 256
bytes by default. Note that gcc 2.96 is the default compiler
on some popular Linux distributions (RedHat 7.X, Mandrake)
<para>In this example, Memcheck can't identify the address.
Actually the address is on the stack, but, for some reason, this
-is not a valid stack address -- it is below the stack pointer,
-<literal>%esp</literal>, and that isn't allowed. In this
+is not a valid stack address -- it is below the stack pointer
+and that isn't allowed. In this
particular case it's probably caused by gcc generating invalid
-code, a known bug in various flavours of gcc.</para>
+code, a known bug in various versions of gcc.</para>
<para>Note that Memcheck only tells you that your program is
about to access memory at an illegal address. It can't stop the
<listitem>
<para>When the stack pointer register
(<literal>SP</literal>) moves up or down,
- <literal>A</literal> bits are set. The rule is that the area
+ A bits are set. The rule is that the area
from <literal>SP</literal> up to the base of the stack is
marked as accessible, and below <literal>SP</literal> is
inaccessible. (If that sounds illogical, bear in mind that