<?xml version="1.0"?> <!-- -*- sgml -*- -->
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[ <!ENTITY % vg-entities SYSTEM "vg-entities.xml"> %vg-entities; ]>


<book id="FAQ" xreflabel="Valgrind FAQ">

<bookinfo>
  <title>Valgrind FAQ</title>
  <releaseinfo>&rel-type; &rel-version; &rel-date;</releaseinfo>
  <copyright>
    <year>&vg-lifespan;</year>
    <holder><ulink url="&vg-devs-url;">Valgrind Developers</ulink></holder>
  </copyright>
  <legalnotice>
    <para>Email: <ulink url="mailto:&vg-vemail;">&vg-vemail;</ulink></para>
  </legalnotice>
</bookinfo>


<article id="faq">
<title>Valgrind Frequently Asked Questions</title>


<!-- FAQ starts here -->
<qandaset>


<!-- Background -->
<qandadiv id="faq.background" xreflabel="Background">
<title>Background</title>

<qandaentry id="faq.pronounce">
 <question id="q-pronounce">
  <para>How do you pronounce "Valgrind"?</para>
 </question>
 <answer id="a-pronounce">
  <para>The "Val" as in the world "value".  The "grind" is pronounced
  with a short 'i' -- ie. "grinned" (rhymes with "tinned") rather than
  "grined" (rhymes with "find").</para> <para>Don't feel bad: almost
  everyone gets it wrong at first.</para>
 </answer>
</qandaentry>

<qandaentry id="faq.whence">
 <question id="q-whence">
  <para>Where does the name "Valgrind" come from?</para>
 </question>
 <answer id="a-whence">

  <para>From Nordic mythology.  Originally (before release) the project
  was named Heimdall, after the watchman of the Nordic gods.  He could
  "see a hundred miles by day or night, hear the grass growing, see the
  wool growing on a sheep's back", etc.  This would have been a great
  name, but it was already taken by a security package "Heimdal".</para>

  <para>Keeping with the Nordic theme, Valgrind was chosen.  Valgrind is
  the name of the main entrance to Valhalla (the Hall of the Chosen
  Slain in Asgard).  Over this entrance there resides a wolf and over it
  there is the head of a boar and on it perches a huge eagle, whose eyes
  can see to the far regions of the nine worlds.  Only those judged
  worthy by the guardians are allowed to pass through Valgrind.  All
  others are refused entrance.</para>

  <para>It's not short for "value grinder", although that's not a bad
  guess.</para>
  </answer>
 </qandaentry>

</qandadiv>



<!-- Compiling, Installing and Configuring -->
<qandadiv id="faq.installing" xreflabel="Compiling, installing and configuring">
<title>Compiling, installing and configuring</title>

<qandaentry id="faq.make_dies">
 <question id="q-make_dies">
  <para>When building Valgrind, 'make' dies partway with
  an assertion failure, something like this:</para>
<screen>
% make: expand.c:489: allocated_variable_append: 
        Assertion 'current_variable_set_list->next != 0' failed.
</screen>
 </question>
 <answer id="a-make_dies">
  <para>It's probably a bug in 'make'.  Some, but not all, instances of
  version 3.79.1 have this bug, see
  <ulink url="http://www.mail-archive.com/bug-make@gnu.org/msg01658.html">this</ulink>.
  Try upgrading to a more recent version of 'make'.  Alternatively, we have
  heard that unsetting the CFLAGS environment variable avoids the
  problem.</para>
 </answer>
</qandaentry>

<qandaentry id="faq.glibc_devel">
 <question>
  <para>When building Valgrind, 'make' fails with this:</para>
<screen>
/usr/bin/ld: cannot find -lc
collect2: ld returned 1 exit status
</screen>
 </question>
 <answer>
  <para>You need to install the glibc-static-devel package.</para>
 </answer>
</qandaentry>

</qandadiv>


<!-- Valgrind aborts unexpectedly -->
<qandadiv id="faq.abort" xreflabel="Valgrind aborts unexpectedly">
<title>Valgrind aborts unexpectedly</title>

<qandaentry id="faq.exit_errors">
  <question id="q-exit_errors">
    <para>Programs run OK on Valgrind, but at exit produce a bunch of
    errors involving <literal>__libc_freeres</literal> and then die
    with a segmentation fault.</para>
  </question>
  <answer id="a-exit_errors">
    <para>When the program exits, Valgrind runs the procedure
    <function>__libc_freeres</function> in glibc.  This is a hook for
    memory debuggers, so they can ask glibc to free up any memory it has
    used.  Doing that is needed to ensure that Valgrind doesn't
    incorrectly report space leaks in glibc.</para>

    <para>The problem is that running <literal>__libc_freeres</literal> in
    older glibc versions causes this crash.</para>

    <para>Workaround for 1.1.X and later versions of Valgrind: use the
    <option>--run-libc-freeres=no</option> option.  You may then get space
    leak reports for glibc allocations (please don't report these to
    the glibc people, since they are not real leaks), but at least the
    program runs.</para>
  </answer>
</qandaentry>

<qandaentry id="faq.bugdeath">
  <question id="q-bugdeath">
    <para>My (buggy) program dies like this:</para>
<screen>valgrind: m_mallocfree.c:248 (get_bszB_as_is): Assertion 'bszB_lo == bszB_hi' failed.</screen>
    <para>or like this:</para>
<screen>valgrind: m_mallocfree.c:442 (mk_inuse_bszB): Assertion 'bszB != 0' failed.</screen>
    <para>or otherwise aborts or crashes in m_mallocfree.c.</para>

  </question>
  <answer id="a-bugdeath">
    <para>If Memcheck (the memory checker) shows any invalid reads,
    invalid writes or invalid frees in your program, the above may
    happen.  Reason is that your program may trash Valgrind's low-level
    memory manager, which then dies with the above assertion, or
    something similar.  The cure is to fix your program so that it
    doesn't do any illegal memory accesses.  The above failure will
    hopefully go away after that.</para>
  </answer>
</qandaentry>

<qandaentry id="faq.msgdeath">
  <question id="q-msgdeath">
    <para>My program dies, printing a message like this along the
    way:</para>
<screen>vex x86->IR: unhandled instruction bytes: 0x66 0xF 0x2E 0x5</screen>
  </question>
  <answer id="a-msgdeath">
    <para>One possibility is that your program has a bug and erroneously
    jumps to a non-code address, in which case you'll get a SIGILL signal.
    Memcheck may issue a warning just before this happens, but it might not
    if the jump happens to land in addressable memory.</para>

    <para>Another possibility is that Valgrind does not handle the
    instruction.  If you are using an older Valgrind, a newer version might
    handle the instruction.  However, all instruction sets have some
    obscure, rarely used instructions.  Also, on amd64 there are an almost
    limitless number of combinations of redundant instruction prefixes, many
    of them undocumented but accepted by CPUs.  So Valgrind will still have
    decoding failures from time to time.  If this happens, please file a bug
    report.</para>
  </answer>
</qandaentry>

<qandaentry id="faq.java">
  <question id="q-java">
    <para>I tried running a Java program (or another program that uses a
    just-in-time compiler) under Valgrind but something went wrong.
    Does Valgrind handle such programs?</para>
  </question>
  <answer id="a-java">
    <para>Valgrind can handle dynamically generated code, so long as
    none of the generated code is later overwritten by other generated
    code.  If this happens, though, things will go wrong as Valgrind
    will continue running its translations of the old code (this is true
    on x86 and amd64, on PowerPC there are explicit cache flush
    instructions which Valgrind detects and honours).
    You should try running with
    <option>--smc-check=all</option> in this case.  Valgrind will run
    much more slowly, but should detect the use of the out-of-date
    code.</para>

    <para>Alternatively, if you have the source code to the JIT compiler
    you can insert calls to the
    <computeroutput>VALGRIND_DISCARD_TRANSLATIONS</computeroutput>
    client request to mark out-of-date code, saving you from using
    <option>--smc-check=all</option>.</para>

    <para>Apart from this, in theory Valgrind can run any Java program
    just fine, even those that use JNI and are partially implemented in
    other languages like C and C++.  In practice, Java implementations
    tend to do nasty things that most programs do not, and Valgrind
    sometimes falls over these corner cases.</para>

    <para>If your Java programs do not run under Valgrind, even with
    <option>--smc-check=all</option>, please file a bug report and
    hopefully we'll be able to fix the problem.</para>
  </answer>
</qandaentry>

</qandadiv>


<!-- Valgrind behaves unexpectedly -->
<qandadiv id="faq.unexpected" xreflabel="Valgrind behaves unexpectedly">
<title>Valgrind behaves unexpectedly</title>

<qandaentry id="faq.reports">
  <question id="q-reports">
    <para>My program uses the C++ STL and string classes.  Valgrind
    reports 'still reachable' memory leaks involving these classes at
    the exit of the program, but there should be none.</para>
  </question>
  <answer id="a-reports">
    <para>First of all: relax, it's probably not a bug, but a feature.
    Many implementations of the C++ standard libraries use their own
    memory pool allocators.  Memory for quite a number of destructed
    objects is not immediately freed and given back to the OS, but kept
    in the pool(s) for later re-use.  The fact that the pools are not
    freed at the exit of the program cause Valgrind to report this
    memory as still reachable.  The behaviour not to free pools at the
    exit could be called a bug of the library though.</para>

    <para>Using GCC, you can force the STL to use malloc and to free
    memory as soon as possible by globally disabling memory caching.
    Beware!  Doing so will probably slow down your program, sometimes
    drastically.</para>
    <itemizedlist>
      <listitem>
        <para>With GCC 2.91, 2.95, 3.0 and 3.1, compile all source using
        the STL with <literal>-D__USE_MALLOC</literal>. Beware!  This was
        removed from GCC starting with version 3.3.</para>
      </listitem>
      <listitem>
        <para>With GCC 3.2.2 and later, you should export the
        environment variable <literal>GLIBCPP_FORCE_NEW</literal> before
        running your program.</para>
      </listitem>
      <listitem>
        <para>With GCC 3.4 and later, that variable has changed name to
        <literal>GLIBCXX_FORCE_NEW</literal>.</para>
      </listitem>
    </itemizedlist>

    <para>There are other ways to disable memory pooling: using the
    <literal>malloc_alloc</literal> template with your objects (not
    portable, but should work for GCC) or even writing your own memory
    allocators. But all this goes beyond the scope of this FAQ.  Start
    by reading 
    <ulink 
    url="http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html#4_4_leak">
         http://gcc.gnu.org/onlinedocs/libstdc++/faq/index.html#4_4_leak</ulink>
    if you absolutely want to do that. But beware: 
    allocators belong to the more messy parts of the STL and
    people went to great lengths to make the STL portable across
    platforms. Chances are good that your solution will work on your
    platform, but not on others.</para>
 </answer>
</qandaentry>


<qandaentry id="faq.unhelpful">
  <question id="q-unhelpful">
    <para>The stack traces given by Memcheck (or another tool) aren't
    helpful.  How can I improve them?</para>
  </question>
  <answer id="a-unhelpful">
    <para>If they're not long enough, use <option>--num-callers</option>
    to make them longer.</para>

    <para>If they're not detailed enough, make sure you are compiling
    with <option>-g</option> to add debug information.  And don't strip
    symbol tables (programs should be unstripped unless you run 'strip'
    on them; some libraries ship stripped).</para>

    <para>Also, for leak reports involving shared objects, if the shared
    object is unloaded before the program terminates, Valgrind will
    discard the debug information and the error message will be full of
    <literal>???</literal> entries.  The workaround here is to avoid
    calling <function>dlclose</function> on these shared objects.</para>

    <para>Also, <option>-fomit-frame-pointer</option> and
    <option>-fstack-check</option> can make stack traces worse.</para>

  <para>Some example sub-traces:</para>

   <itemizedlist>
     <listitem>
       <para>With debug information and unstripped (best):</para>
<programlisting>
Invalid write of size 1
   at 0x80483BF: really (malloc1.c:20)
   by 0x8048370: main (malloc1.c:9)
</programlisting>
     </listitem>

     <listitem>
       <para>With no debug information, unstripped:</para>
<programlisting>
Invalid write of size 1
   at 0x80483BF: really (in /auto/homes/njn25/grind/head5/a.out)
   by 0x8048370: main (in /auto/homes/njn25/grind/head5/a.out)
</programlisting>
     </listitem>

     <listitem>
       <para>With no debug information, stripped:</para>
<programlisting>
Invalid write of size 1
   at 0x80483BF: (within /auto/homes/njn25/grind/head5/a.out)
   by 0x8048370: (within /auto/homes/njn25/grind/head5/a.out)
   by 0x42015703: __libc_start_main (in /lib/tls/libc-2.3.2.so)
   by 0x80482CC: (within /auto/homes/njn25/grind/head5/a.out)
</programlisting>
     </listitem>

     <listitem>
       <para>With debug information and -fomit-frame-pointer:</para>
<programlisting>
Invalid write of size 1
   at 0x80483C4: really (malloc1.c:20)
   by 0x42015703: __libc_start_main (in /lib/tls/libc-2.3.2.so)
   by 0x80482CC: ??? (start.S:81)
</programlisting>
     </listitem>

     <listitem>
      <para>A leak error message involving an unloaded shared object:</para>
<programlisting>
84 bytes in 1 blocks are possibly lost in loss record 488 of 713
   at 0x1B9036DA: operator new(unsigned) (vg_replace_malloc.c:132)
   by 0x1DB63EEB: ???
   by 0x1DB4B800: ???
   by 0x1D65E007: ???
   by 0x8049EE6: main (main.cpp:24)
</programlisting>
     </listitem>
   </itemizedlist>

 </answer>
</qandaentry>

<qandaentry id="faq.aliases">
  <question id="q-aliases">
    <para>The stack traces given by Memcheck (or another tool) seem to
    have the wrong function name in them.  What's happening?</para>
  </question>
  <answer id="a-aliases">
    <para>Occasionally Valgrind stack traces get the wrong function
    names.  This is caused by glibc using aliases to effectively give
    one function two names.  Most of the time Valgrind chooses a
    suitable name, but very occasionally it gets it wrong.  Examples we know
    of are printing <function>bcmp</function> instead of
    <function>memcmp</function>, <function>index</function> instead of
    <function>strchr</function>, and <function>rindex</function> instead of
    <function>strrchr</function>.</para>
  </answer>
</qandaentry>


<qandaentry id="faq.crashes">
  <question id="q-crashes">
    <para>My program crashes normally, but doesn't under Valgrind, or vice
    versa.  What's happening?</para>
  </question>
  <answer id="a-crashes">
    <para>When a program runs under Valgrind, its environment is slightly
    different to when it runs natively.  For example, the memory layout is
    different, and the way that threads are scheduled is different.</para>
    
    <para>Most of the time this doesn't make any difference, but it can,
    particularly if your program is buggy.  For example, if your program
    crashes because it erroneously accesses memory that is unaddressable,
    it's possible that this memory will not be unaddressable when run under
    Valgrind.  Alternatively, if your program has data races, these may not
    manifest under Valgrind.</para>

    <para>There isn't anything you can do to change this, it's just the
    nature of the way Valgrind works that it cannot exactly replicate a
    native execution environment.  In the case where your program crashes
    due to a memory error when run natively but not when run under Valgrind,
    in most cases Memcheck should identify the bad memory operation.</para>.
  </answer>
</qandaentry>



<qandaentry id="faq.hiddenbug">
  <question id="q-hiddenbug">
    <para> Memcheck doesn't report any errors and I know my program has
    errors.</para>
  </question>
  <answer id="a-hiddenbug">
    <para>There are two possible causes of this.</para>

    <para>First, by default, Valgrind only traces the top-level process.
    So if your program spawns children, they won't be traced by Valgrind
    by default.  Also, if your program is started by a shell script,
    Perl script, or something similar, Valgrind will trace the shell, or
    the Perl interpreter, or equivalent.</para>

    <para>To trace child processes, use the
    <option>--trace-children=yes</option> option.</para>

    <para>If you are tracing large trees of processes, it can be less
    disruptive to have the output sent over the network.  Give Valgrind
    the option <option>--log-socket=127.0.0.1:12345</option> (if you want
    logging output sent to port <literal>12345</literal> on
    <literal>localhost</literal>).  You can use the valgrind-listener
    program to listen on that port:</para>
<programlisting>
valgrind-listener 12345
</programlisting>

    <para>Obviously you have to start the listener process first.  See
    the manual for more details.</para>

    <para>Second, if your program is statically linked, most Valgrind
    tools won't work as well, because they won't be able to replace
    certain functions, such as <function>malloc</function>, with their own
    versions.  A key indicator of this is if Memcheck says:
<programlisting>
All heap blocks were freed -- no leaks are possible
</programlisting>
    when you know your program calls <function>malloc</function>.  The
    workaround is to avoid statically linking your program.</para>
  </answer>
</qandaentry>


<qandaentry id="faq.overruns">
  <question id="q-overruns">
    <para>Why doesn't Memcheck find the array overruns in this
    program?</para>
<programlisting>
int static[5];

int main(void)
{
  int stack[5];

  static[5] = 0;
  stack [5] = 0;
          
  return 0;
}
</programlisting>
  </question>
  <answer id="a-overruns">
    <para>Unfortunately, Memcheck doesn't do bounds checking on global
    or stack arrays.  We'd like to, but it's just not possible to do in
    a reasonable way that fits with how Memcheck works.  Sorry.</para>
    
    <para>However, the experimental tool SGcheck can detect errors like
    this.  Run Valgrind with the <option>--tool=exp-sgcheck</option> option
    to try it, but be aware that it is not as robust as Memcheck.</para>
  </answer>
</qandaentry>

</qandadiv>



<!-- Miscellaneous -->
<qandadiv id="faq.misc" xreflabel="Miscellaneous">
<title>Miscellaneous</title>

<qandaentry id="faq.writesupp">
  <question id="q-writesupp">
    <para>I tried writing a suppression but it didn't work.  Can you
    write my suppression for me?</para>
  </question>
  <answer id="a-writesupp">
    <para>Yes!  Use the <option>--gen-suppressions=yes</option> feature
    to spit out suppressions automatically for you.  You can then edit
    them if you like, eg.  combining similar automatically generated
    suppressions using wildcards like <literal>'*'</literal>.</para>

    <para>If you really want to write suppressions by hand, read the
    manual carefully.  Note particularly that C++ function names must be
    mangled (that is, not demangled).</para>
  </answer>
</qandaentry>


<qandaentry id="faq.deflost">
  <question id="q-deflost">
    <para>With Memcheck's memory leak detector, what's the
    difference between "definitely lost", "indirectly lost", "possibly
    lost", "still reachable", and "suppressed"?</para>
  </question>
  <answer id="a-deflost">
    <para>The details are in the Memcheck section of the user manual.</para>

    <para>In short:</para>
    <itemizedlist>
      <listitem>
        <para>"definitely lost" means your program is leaking memory --
        fix those leaks!</para>
      </listitem>
      <listitem>
        <para>"indirectly lost" means your program is leaking memory in
        a pointer-based structure.  (E.g. if the root node of a binary tree
        is "definitely lost", all the children will be "indirectly lost".) 
        If you fix the "definitely lost" leaks, the "indirectly lost" leaks
        should go away.
        </para>
      </listitem>
      <listitem>
        <para>"possibly lost" means your program is leaking
        memory, unless you're doing unusual things with pointers that could
        cause them to point into the middle of an allocated block;  see the
        user manual for some possible causes.  Use
        <option>--show-possibly-lost=no</option> if you don't want to see
        these reports.</para>
      </listitem>
      <listitem>
        <para>"still reachable" means your program is probably ok -- it
        didn't free some memory it could have.  This is quite common and
        often reasonable.  Don't use
        <option>--show-reachable=yes</option> if you don't want to see
        these reports.</para>
      </listitem>
      <listitem>
        <para>"suppressed" means that a leak error has been suppressed.
        There are some suppressions in the default suppression files.
        You can ignore suppressed errors.</para>
      </listitem>
    </itemizedlist>
  </answer>
</qandaentry>

<qandaentry id="faq.undeferrors">
  <question id="q-undeferrors">
    <para>Memcheck's uninitialised value errors are hard to track down,
    because they are often reported some time after they are caused.  Could 
    Memcheck record a trail of operations to better link the cause to the
    effect?  Or maybe just eagerly report any copies of uninitialised
    memory values?</para>
  </question>
  <answer id="a-undeferrors">
    <para>Prior to version 3.4.0, the answer was "we don't know how to do it
    without huge performance penalties".  As of 3.4.0, try using the
    <option>--track-origins=yes</option> option.  It will run slower than
    usual, but will give you extra information about the origin of
    uninitialised values.</para>

    <para>Or if you want to do it the old fashioned way, you can use the
    client request
    <computeroutput>VALGRIND_CHECK_VALUE_IS_DEFINED</computeroutput> to help
    track these errors down -- work backwards from the point where the
    uninitialised error occurs, checking suspect values until you find the
    cause.  This requires editing, compiling and re-running your program
    multiple times, which is a pain, but still easier than debugging the
    problem without Memcheck's help.</para>

    <para>As for eager reporting of copies of uninitialised memory values,
    this has been suggested multiple times.  Unfortunately, almost all
    programs legitimately copy uninitialised memory values around (because
    compilers pad structs to preserve alignment) and eager checking leads to
    hundreds of false positives.  Therefore Memcheck does not support eager
    checking at this time.</para>
  </answer>
</qandaentry>


<qandaentry id="faq.attach">
  <question id="q-attach">
    <para>Is it possible to attach Valgrind to a program that is already
    running?</para>
  </question>
  <answer id="a-attach">
    <para>No.  The environment that Valgrind provides for running programs
    is significantly different to that for normal programs, e.g. due to
    different layout of memory.  Therefore Valgrind has to have full control
    from the very start.</para>

    <para>It is possible to achieve something like this by running your
    program without any instrumentation (which involves a slow-down of about
    5x, less than that of most tools), and then adding instrumentation once
    you get to a point of interest.  Support for this must be provided by
    the tool, however, and Callgrind is the only tool that currently has
    such support.  See the instructions on the
    <computeroutput>callgrind_control</computeroutput> program for details.
    </para>
  </answer>
</qandaentry>


</qandadiv>



<!-- Further Assistance -->
<qandadiv id="faq.help" xreflabel="How To Get Further Assistance">
<title>How To Get Further Assistance</title>

<!-- WARNING: this file should not xref other parts of the docs, because it
is built standalone as FAQ.txt.  That's why we link to, for example, the
online copy of the manual. -->

<qandaentry id="e-help">
  <!-- <question><para/></question> -->
  <answer id="a-help">
  <para>Read the appropriate section(s) of the 
  <ulink url="&vg-docs-url;">Valgrind Documentation</ulink>.</para>

  <para><ulink url="http://search.gmane.org">Search</ulink> the 
  <ulink url="http://news.gmane.org/gmane.comp.debugging.valgrind">valgrind-users</ulink> mailing list archives, using the group name 
  <computeroutput>gmane.comp.debugging.valgrind</computeroutput>.</para>

  <para>If you think an answer in this FAQ is incomplete or inaccurate, please
  e-mail <ulink url="mailto:&vg-vemail;">&vg-vemail;</ulink>.</para>

  <para>If you have tried all of these things and are still
  stuck, you can try mailing the
  <ulink url="&vg-lists-url;">valgrind-users mailing list</ulink>. 
  Note that an email has a better change of being answered usefully if it is
  clearly written.  Also remember that, despite the fact that most of the
  community are very helpful and responsive to emailed questions, you are
  probably requesting help from unpaid volunteers, so you have no guarantee
  of receiving an answer.</para>
</answer>

</qandaentry>
</qandadiv>


<!-- FAQ ends here -->
</qandaset>



<!-- template 
<qandadiv id="faq.installing" xreflabel="Installing">
<title>Installing</title>

<qandaentry id="faq.problem">
 <question id="q-problem">
  <para></para>
 </question>
 <answer id="a-problem">
  <para></para>
 </answer>
</qandaentry>

</qandadiv>
-->

</article>

</book>
