<?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 will only work well if they are able to replace certain
    functions, such as <function>malloc</function>, with their own
    versions.  By default, statically linked <function>malloc
    functions</function> are not replaced. 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 use the option 
    <option>--soname-synonyms=somalloc=NONE</option>
    or to avoid statically linking your program.</para>

    <para>There will also be no replacement if you use an alternative 
    <function>malloc library</function> such as tcmalloc, jemalloc,
    ...  In such a case, the
    option <option>--soname-synonyms=somalloc=zzzz</option> (where
    zzzz is the soname of the alternative malloc library) will allow
    Valgrind to replace the functions.</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>
