|
From: <sv...@va...> - 2005-08-03 22:57:07
|
Author: de
Date: 2005-08-03 23:57:01 +0100 (Wed, 03 Aug 2005)
New Revision: 161
Log:
one-page faq coming up, as requested :)
Removed:
trunk/docs/FAQ/faq.abort.html
trunk/docs/FAQ/faq.background.html
trunk/docs/FAQ/faq.help.html
trunk/docs/FAQ/faq.installing.html
trunk/docs/FAQ/faq.misc.html
trunk/docs/FAQ/faq.notfound.html
trunk/docs/FAQ/faq.unexpected.html
trunk/docs/FAQ/license.gfdl.html
Modified:
trunk/docs/FAQ/index.html
Deleted: trunk/docs/FAQ/faq.abort.html
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/docs/FAQ/faq.abort.html 2005-08-03 22:44:55 UTC (rev 160)
+++ trunk/docs/FAQ/faq.abort.html 2005-08-03 22:57:01 UTC (rev 161)
@@ -1,214 +0,0 @@
-<div><table class=3D"nav" width=3D"100%" cellspacing=3D"3" cellpadding=3D=
"3" border=3D"0" summary=3D"Navigation header"><tr>
-<td width=3D"22px" align=3D"center" valign=3D"middle"><a accesskey=3D"p"=
href=3D"faq.installing.html"><img src=3D"images/prev.png" width=3D"18" h=
eight=3D"21" border=3D"0" alt=3D"Prev"></a></td>
-<td width=3D"25px" align=3D"center" valign=3D"middle"><a accesskey=3D"u"=
href=3D"index.html"><img src=3D"images/up.png" width=3D"21" height=3D"18=
" border=3D"0" alt=3D"Up"></a></td>
-<td width=3D"31px" align=3D"center" valign=3D"middle"><a accesskey=3D"h"=
href=3D"index.html"><img src=3D"images/home.png" width=3D"27" height=3D"=
20" border=3D"0" alt=3D"Up"></a></td>
-<th align=3D"center" valign=3D"middle">Valgrind FAQ</th>
-<td width=3D"22px" align=3D"center" valign=3D"middle"><a accesskey=3D"n"=
href=3D"faq.unexpected.html"><img src=3D"images/next.png" width=3D"18" h=
eight=3D"21" border=3D"0" alt=3D"Next"></a></td>
-</tr></table></div>
-<div class=3D"sect1" lang=3D"en">
-<div class=3D"titlepage">
-<div><div><h2 class=3D"title" style=3D"clear: both">
-<a name=3D"faq.abort"></a>4.=A0Valgrind aborts unexpectedly</h2></div></=
div>
-<div></div>
-</div>
-<div class=3D"qandaset">
-<dl>
-<dt>4.1. <a href=3D"faq.abort.html#faq.exit_errors">Programs run OK on V=
algrind, but at exit produce a bunch
- of errors a bit like this:</a>
-</dt>
-<dt>4.2. <a href=3D"faq.abort.html#faq.bugdeath">My (buggy) program dies=
like this:</a>
-</dt>
-<dt>4.3. <a href=3D"faq.abort.html#faq.msgdeath">My program dies, printi=
ng a message like this along the
- way:</a>
-</dt>
-<dt>4.4. <a href=3D"faq.abort.html#faq.defdeath">My program dies like th=
is:</a>
-</dt>
-</dl>
-<table border=3D"0" summary=3D"Q and A Set">
-<col align=3D"left" width=3D"1%">
-<tbody>
-<tr class=3D"question">
-<td align=3D"left" valign=3D"top">
-<a name=3D"faq.exit_errors"></a><a name=3D"id2459844"></a><b>4.1.</b>
-</td>
-<td align=3D"left" valign=3D"top"><p>Programs run OK on Valgrind, but at=
exit produce a bunch
- of errors a bit like this:</p></td>
-</tr>
-<tr class=3D"answer">
-<td>=A0</td>
-<td align=3D"left" valign=3D"top">
-<p>
-</p>
-<pre class=3D"programlisting">
-=3D=3D20755=3D=3D Invalid read of size 4
-=3D=3D20755=3D=3D at 0x40281C8A: _nl_unload_locale (loadlocale.c:238)
-=3D=3D20755=3D=3D by 0x4028179D: free_mem (findlocale.c:257)
-=3D=3D20755=3D=3D by 0x402E0962: __libc_freeres (set-freeres.c:34)
-=3D=3D20755=3D=3D by 0x40048DCC: vgPlain___libc_freeres_wrapper (vg_c=
lientfuncs.c:585)
-=3D=3D20755=3D=3D Address 0x40CC304C is 8 bytes inside a block of siz=
e 380 free'd
-=3D=3D20755=3D=3D at 0x400484C9: free (vg_clientfuncs.c:180)
-=3D=3D20755=3D=3D by 0x40281CBA: _nl_unload_locale (loadlocale.c:246)
-=3D=3D20755=3D=3D by 0x40281218: free_mem (setlocale.c:461)
-=3D=3D20755=3D=3D by 0x402E0962: __libc_freeres (set-freeres.c:34)
-</pre>
-<p>
-
- and then die with a segmentation fault.</p>
-<p>When the program exits, Valgrind runs the procedure
- <tt class=3D"literal">__libc_freeres()</tt> 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.</p>
-<p>Problem is that running
- <tt class=3D"literal">__libc_freeres()</tt> in older glibc versions
- causes this crash.</p>
-<p>WORKAROUND FOR 1.1.X and later
- versions of Valgrind: use the
- <tt class=3D"literal">--run-libc-freeres=3Dno</tt> flag. 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.</p>
-</td>
-</tr>
-<tr><td colspan=3D"2">=A0</td></tr>
-<tr class=3D"question">
-<td align=3D"left" valign=3D"top">
-<a name=3D"faq.bugdeath"></a><a name=3D"id2459918"></a><b>4.2.</b>
-</td>
-<td align=3D"left" valign=3D"top"><p>My (buggy) program dies like this:<=
/p></td>
-</tr>
-<tr class=3D"answer">
-<td>=A0</td>
-<td align=3D"left" valign=3D"top">
-<pre class=3D"screen">
-% valgrind: vg_malloc2.c:442 (bszW_to_pszW): Assertion 'pszW >=3D 0' =
failed.
-</pre>
-<p>If Memcheck (the memory checker) shows any invalid reads,
- invalid writes and 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 like this. 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.</p>
-</td>
-</tr>
-<tr><td colspan=3D"2">=A0</td></tr>
-<tr class=3D"question">
-<td align=3D"left" valign=3D"top">
-<a name=3D"faq.msgdeath"></a><a name=3D"id2458703"></a><b>4.3.</b>
-</td>
-<td align=3D"left" valign=3D"top"><p>My program dies, printing a message=
like this along the
- way:</p></td>
-</tr>
-<tr class=3D"answer">
-<td>=A0</td>
-<td align=3D"left" valign=3D"top">
-<pre class=3D"screen">
-% disInstr: unhandled instruction bytes: 0x66 0xF 0x2E 0x5
-</pre>
-<p>Older versions did not support some x86 instructions,
- particularly SSE/SSE2 instructions. Try a newer Valgrind; we
- now support almost all instructions. If it still happens with
- newer versions, if the failing instruction is an SSE/SSE2
- instruction, you might be able to recompile your program
- without it by using the flag
- <tt class=3D"computeroutput">-march</tt> to gcc. Either way,
- let us know and we'll try to fix it.</p>
-<p>Another 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/Addrcheck may issue a warning
- just before this happens, but they might not if the jump
- happens to land in addressable memory.</p>
-</td>
-</tr>
-<tr><td colspan=3D"2">=A0</td></tr>
-<tr class=3D"question">
-<td align=3D"left" valign=3D"top">
-<a name=3D"faq.defdeath"></a><a name=3D"id2458751"></a><b>4.4.</b>
-</td>
-<td align=3D"left" valign=3D"top"><p>My program dies like this:</p></td>
-</tr>
-<tr class=3D"answer">
-<td>=A0</td>
-<td align=3D"left" valign=3D"top">
-<pre class=3D"screen">
-% error: /lib/librt.so.1: symbol __pthread_clock_settime,=20
- version GLIBC_PRIVATE not defined in file libpthread.so.0 with link ti=
me reference
-</pre>
-<p>This is a total swamp. Nevertheless there is a way out.
- It's a problem which is not easy to fix. Really the problem is
- that <tt class=3D"filename">/lib/librt.so.1</tt> refers to some
- symbols <tt class=3D"literal">__pthread_clock_settime</tt> and
- <tt class=3D"literal">__pthread_clock_gettime</tt> in
- <tt class=3D"filename">/lib/libpthread.so</tt> which are not intended
- to be exported, ie they are private.</p>
-<p>Best solution is to ensure your program does not use
- <tt class=3D"filename">/lib/librt.so.1</tt>.</p>
-<p>However ... since you're probably not using it directly,
- or even knowingly, that's hard to do. You might instead be
- able to fix it by playing around with
- <tt class=3D"filename">coregrind/vg_libpthread.vs</tt>. Things to
- try:</p>
-<p>Remove this:</p>
-<pre class=3D"programlisting">
-GLIBC_PRIVATE {
- __pthread_clock_gettime;
- __pthread_clock_settime;
-};
-</pre>
-<p>or maybe remove this</p>
-<pre class=3D"programlisting">
-GLIBC_2.2.3 {
- __pthread_clock_gettime;
- __pthread_clock_settime;
-} GLIBC_2.2;
-</pre>
-<p>or maybe add this:</p>
-<pre class=3D"programlisting">
-GLIBC_2.2.4 {
- __pthread_clock_gettime;
- __pthread_clock_settime;
-} GLIBC_2.2;
-
-GLIBC_2.2.5 {
- __pthread_clock_gettime;
- __pthread_clock_settime;
-} GLIBC_2.2;
-</pre>
-<p>or some combination of the above. After each change you
- need to delete <tt class=3D"filename">coregrind/libpthread.so</tt> and
- do <tt class=3D"computeroutput">make && make
- install</tt>.</p>
-<p>I just don't know if any of the above will work. If you
- can find a solution which works, I would be interested to hear
- it.</p>
-<p>To which someone replied:</p>
-<pre class=3D"screen">
-I deleted this:
-
-GLIBC_2.2.3 {=20
- __pthread_clock_gettime;=20
- __pthread_clock_settime;=20
-} GLIBC_2.2;=20
-
-and it worked.
-</pre>
-</td>
-</tr>
-<tr><td colspan=3D"2">=A0</td></tr>
-</tbody>
-</table>
-</div>
-</div>
-<div>
-<br><table class=3D"nav" width=3D"100%" cellspacing=3D"3" cellpadding=3D=
"2" border=3D"0" summary=3D"Navigation footer">
-<tr>
-<td rowspan=3D"2" width=3D"40%" align=3D"left">
-<a accesskey=3D"p" href=3D"faq.installing.html"><<=A03.=A0Compilin=
g, installing and configuring</a>=A0</td>
-<td width=3D"20%" align=3D"center"><a accesskey=3D"u" href=3D"index.html=
">Up</a></td>
-<td rowspan=3D"2" width=3D"40%" align=3D"right">=A0<a accesskey=3D"n" hr=
ef=3D"faq.unexpected.html">5.=A0Valgrind behaves unexpectedly=A0>><=
/a>
-</td>
-</tr>
-<tr><td width=3D"20%" align=3D"center"><a accesskey=3D"h" href=3D"index.=
html">Home</a></td></tr>
-</table>
-</div>
Deleted: trunk/docs/FAQ/faq.background.html
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/docs/FAQ/faq.background.html 2005-08-03 22:44:55 UTC (rev 160)
+++ trunk/docs/FAQ/faq.background.html 2005-08-03 22:57:01 UTC (rev 161)
@@ -1,84 +0,0 @@
-<div><table class=3D"nav" width=3D"100%" cellspacing=3D"3" cellpadding=3D=
"3" border=3D"0" summary=3D"Navigation header"><tr>
-<td width=3D"22px" align=3D"center" valign=3D"middle"><a accesskey=3D"p"=
href=3D"index.html"><img src=3D"images/prev.png" width=3D"18" height=3D"=
21" border=3D"0" alt=3D"Prev"></a></td>
-<td width=3D"25px" align=3D"center" valign=3D"middle"><a accesskey=3D"u"=
href=3D"index.html"><img src=3D"images/up.png" width=3D"21" height=3D"18=
" border=3D"0" alt=3D"Up"></a></td>
-<td width=3D"31px" align=3D"center" valign=3D"middle"><a accesskey=3D"h"=
href=3D"index.html"><img src=3D"images/home.png" width=3D"27" height=3D"=
20" border=3D"0" alt=3D"Up"></a></td>
-<th align=3D"center" valign=3D"middle">Valgrind FAQ</th>
-<td width=3D"22px" align=3D"center" valign=3D"middle"><a accesskey=3D"n"=
href=3D"faq.installing.html"><img src=3D"images/next.png" width=3D"18" h=
eight=3D"21" border=3D"0" alt=3D"Next"></a></td>
-</tr></table></div>
-<div class=3D"sect1" lang=3D"en">
-<div class=3D"titlepage">
-<div><div><h2 class=3D"title" style=3D"clear: both">
-<a name=3D"faq.background"></a>2.=A0Background</h2></div></div>
-<div></div>
-</div>
-<div class=3D"qandaset">
-<dl>
-<dt>2.1. <a href=3D"faq.background.html#faq.pronounce">How do you pronou=
nce "Valgrind"?</a>
-</dt>
-<dt>2.2. <a href=3D"faq.background.html#faq.whence">Where does the name =
"Valgrind" come from?</a>
-</dt>
-</dl>
-<table border=3D"0" summary=3D"Q and A Set">
-<col align=3D"left" width=3D"1%">
-<tbody>
-<tr class=3D"question">
-<td align=3D"left" valign=3D"top">
-<a name=3D"faq.pronounce"></a><a name=3D"id2507613"></a><b>2.1.</b>
-</td>
-<td align=3D"left" valign=3D"top"><p>How do you pronounce "Valgrind"?</p=
></td>
-</tr>
-<tr class=3D"answer">
-<td>=A0</td>
-<td align=3D"left" valign=3D"top">
-<p>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").</p>
-<p>Don't feel bad: almost everyone gets it wrong at
- first.</p>
-</td>
-</tr>
-<tr><td colspan=3D"2">=A0</td></tr>
-<tr class=3D"question">
-<td align=3D"left" valign=3D"top">
-<a name=3D"faq.whence"></a><a name=3D"id2507641"></a><b>2.2.</b>
-</td>
-<td align=3D"left" valign=3D"top"><p>Where does the name "Valgrind" come=
from?</p></td>
-</tr>
-<tr class=3D"answer">
-<td>=A0</td>
-<td align=3D"left" valign=3D"top">
-<p>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".</p>
-<p>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.</p>
-<p>It's not short for "value grinder", although that's not a
- bad guess.</p>
-</td>
-</tr>
-<tr><td colspan=3D"2">=A0</td></tr>
-</tbody>
-</table>
-</div>
-</div>
-<div>
-<br><table class=3D"nav" width=3D"100%" cellspacing=3D"3" cellpadding=3D=
"2" border=3D"0" summary=3D"Navigation footer">
-<tr>
-<td rowspan=3D"2" width=3D"40%" align=3D"left">
-<a accesskey=3D"p" href=3D"index.html"><<=A0Valgrind FAQ</a>=A0</t=
d>
-<td width=3D"20%" align=3D"center"><a accesskey=3D"u" href=3D"index.html=
">Up</a></td>
-<td rowspan=3D"2" width=3D"40%" align=3D"right">=A0<a accesskey=3D"n" hr=
ef=3D"faq.installing.html">3.=A0Compiling, installing and configuring=A0&=
gt;></a>
-</td>
-</tr>
-<tr><td width=3D"20%" align=3D"center"><a accesskey=3D"h" href=3D"index.=
html">Home</a></td></tr>
-</table>
-</div>
Deleted: trunk/docs/FAQ/faq.help.html
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/docs/FAQ/faq.help.html 2005-08-03 22:44:55 UTC (rev 160)
+++ trunk/docs/FAQ/faq.help.html 2005-08-03 22:57:01 UTC (rev 161)
@@ -1,92 +0,0 @@
-<div><table class=3D"nav" width=3D"100%" cellspacing=3D"3" cellpadding=3D=
"3" border=3D"0" summary=3D"Navigation header"><tr>
-<td width=3D"22px" align=3D"center" valign=3D"middle"><a accesskey=3D"p"=
href=3D"faq.misc.html"><img src=3D"images/prev.png" width=3D"18" height=3D=
"21" border=3D"0" alt=3D"Prev"></a></td>
-<td width=3D"25px" align=3D"center" valign=3D"middle"><a accesskey=3D"u"=
href=3D"index.html"><img src=3D"images/up.png" width=3D"21" height=3D"18=
" border=3D"0" alt=3D"Up"></a></td>
-<td width=3D"31px" align=3D"center" valign=3D"middle"><a accesskey=3D"h"=
href=3D"index.html"><img src=3D"images/home.png" width=3D"27" height=3D"=
20" border=3D"0" alt=3D"Up"></a></td>
-<th align=3D"center" valign=3D"middle">Valgrind FAQ</th>
-<td width=3D"22px" align=3D"center" valign=3D"middle"><a accesskey=3D"n"=
href=3D"license.gfdl.html"><img src=3D"images/next.png" width=3D"18" hei=
ght=3D"21" border=3D"0" alt=3D"Next"></a></td>
-</tr></table></div>
-<div class=3D"sect1" lang=3D"en">
-<div class=3D"titlepage">
-<div><div><h2 class=3D"title" style=3D"clear: both">
-<a name=3D"faq.help"></a>8.=A0How To Get Further Assistance</h2></div></=
div>
-<div></div>
-</div>
-<div class=3D"sect2" lang=3D"en">
-<div class=3D"titlepage">
-<div><div><h3 class=3D"title">
-<a name=3D"faq.unanswered"></a>8.1.=A0If Your Question Still Isn't Answe=
red ...</h3></div></div>
-<div></div>
-</div>
-<p>Please read all of this section before posting. It's a bit
-long, but you may be about to make a fool of yourself in front of
-50,000 people and waste hundreds of hours of their time. Don't
-you think it's worth spending some of your time to read and
-follow these instructions?</p>
-<p>If you think an answer is incomplete or inaccurate, please
-e-mail <a href=3D"mailto:val...@va..." target=3D"_top">valgrind=
@valgrind.org</a>.</p>
-<p>Read the appropriate section(s) of the Manual(s):=20
-<a href=3D"http://www.valgrind.org/docs/" target=3D"_top">Valgrind=20
-Documentation</a>.</p>
-<p>Read the Valgrind Distribution Documents.</p>
-<p><a href=3D"http://search.gmane.org" target=3D"_top">Search</a> the=20
-<a href=3D"http://news.gmane.org/gmane.comp.debugging.valgrind" target=3D=
"_top">valgrind-users</a> mailing list archives, using the group name=20
-<tt class=3D"computeroutput">gmane.comp.debugging.valgrind</tt>.</p>
-<p>Only when you have tried all of these things and are still
-stuck, should you post to the <a href=3D"http://lists.sourceforge.net/li=
sts/listinfo/valgrind-users" target=3D"_top">valgrind-users mailing list<=
/a>. Make sure you read the next section first: <a href=3D"faq.help.html#=
faq.request">What to Put in a Request for Help</a>.</p>
-</div>
-<div class=3D"sect2" lang=3D"en">
-<div class=3D"titlepage">
-<div><div><h3 class=3D"title">
-<a name=3D"faq.request"></a>8.2.=A0What to Put in a Request for Help</h3=
></div></div>
-<div></div>
-</div>
-<p>Please read the following advice carefully about how to
-write your posting or email. Making a complete posting will
-greatly increase the chances that an expert or fellow user
-reading it will have enough information and motivation to
-reply.</p>
-<p>Make sure you give full details of the problem,
-including:</p>
-<div class=3D"itemizedlist"><ul type=3D"disc">
-<li><p>Exactly what version you are having problems
- with. To find out, run valgrind:
- <tt class=3D"computeroutput">% valgrind --version</tt>
- </p></li>
-<li><p>Which Linux release you're using (Red Hat, Suse, Debian,
- whatever), and what version of that release.</p></li>
-<li><p>The exact and complete text of any error messages
- printed.</p></li>
-<li><p>What version of the kernel and shared libraries you have
- installed. The kernel version can be found by typing
- <tt class=3D"computeroutput">uname -a</tt>, and the shared
- library version by typing=20
- <tt class=3D"computeroutput">ls -l /lib/libc*</tt>.</p></li>
-<li><p>Details of what hardware you're running on.</p></li>
-</ul></div>
-<p>You are in little danger of making your posting too long
-unless you include large chunks of valgrind's (unsuppressed)
-output, so err on the side of giving too much information.</p>
-<p>Use a clear, detailed Subject line. Don't put things like
-"doesn't work", "Valgrind", "help", or "question" in it -- we
-already know that. Use the space for part of an error message, or
-a summary of the unusual behavior.</p>
-<p>Summarize your problem in a short paragarph at the top of
-your posting.</p>
-<p>Finally, 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 right to expect an answer.</p>
-</div>
-</div>
-<div>
-<br><table class=3D"nav" width=3D"100%" cellspacing=3D"3" cellpadding=3D=
"2" border=3D"0" summary=3D"Navigation footer">
-<tr>
-<td rowspan=3D"2" width=3D"40%" align=3D"left">
-<a accesskey=3D"p" href=3D"faq.misc.html"><<=A07.=A0Miscellaneous<=
/a>=A0</td>
-<td width=3D"20%" align=3D"center"><a accesskey=3D"u" href=3D"index.html=
">Up</a></td>
-<td rowspan=3D"2" width=3D"40%" align=3D"right">=A0<a accesskey=3D"n" hr=
ef=3D"license.gfdl.html">9.=A0The GNU Free Documentation License=A0>&g=
t;</a>
-</td>
-</tr>
-<tr><td width=3D"20%" align=3D"center"><a accesskey=3D"h" href=3D"index.=
html">Home</a></td></tr>
-</table>
-</div>
Deleted: trunk/docs/FAQ/faq.installing.html
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/docs/FAQ/faq.installing.html 2005-08-03 22:44:55 UTC (rev 160)
+++ trunk/docs/FAQ/faq.installing.html 2005-08-03 22:57:01 UTC (rev 161)
@@ -1,67 +0,0 @@
-<div><table class=3D"nav" width=3D"100%" cellspacing=3D"3" cellpadding=3D=
"3" border=3D"0" summary=3D"Navigation header"><tr>
-<td width=3D"22px" align=3D"center" valign=3D"middle"><a accesskey=3D"p"=
href=3D"faq.background.html"><img src=3D"images/prev.png" width=3D"18" h=
eight=3D"21" border=3D"0" alt=3D"Prev"></a></td>
-<td width=3D"25px" align=3D"center" valign=3D"middle"><a accesskey=3D"u"=
href=3D"index.html"><img src=3D"images/up.png" width=3D"21" height=3D"18=
" border=3D"0" alt=3D"Up"></a></td>
-<td width=3D"31px" align=3D"center" valign=3D"middle"><a accesskey=3D"h"=
href=3D"index.html"><img src=3D"images/home.png" width=3D"27" height=3D"=
20" border=3D"0" alt=3D"Up"></a></td>
-<th align=3D"center" valign=3D"middle">Valgrind FAQ</th>
-<td width=3D"22px" align=3D"center" valign=3D"middle"><a accesskey=3D"n"=
href=3D"faq.abort.html"><img src=3D"images/next.png" width=3D"18" height=
=3D"21" border=3D"0" alt=3D"Next"></a></td>
-</tr></table></div>
-<div class=3D"sect1" lang=3D"en">
-<div class=3D"titlepage">
-<div><div><h2 class=3D"title" style=3D"clear: both">
-<a name=3D"faq.installing"></a>3.=A0Compiling, installing and configurin=
g</h2></div></div>
-<div></div>
-</div>
-<div class=3D"qandaset">
-<dl><dt>3.1. <a href=3D"faq.installing.html#faq.make_dies">When I trying=
building Valgrind, 'make' dies partway with
- an assertion failure, something like this:=20
-
-% make: expand.c:489: allocated_variable_append:=20
- Assertion 'current_variable_set_list->next !=3D 0' failed.
-
- </a>
-</dt></dl>
-<table border=3D"0" summary=3D"Q and A Set">
-<col align=3D"left" width=3D"1%">
-<tbody>
-<tr class=3D"question">
-<td align=3D"left" valign=3D"top">
-<a name=3D"faq.make_dies"></a><a name=3D"id2459790"></a><b>3.1.</b>
-</td>
-<td align=3D"left" valign=3D"top">
-<p>When I trying building Valgrind, 'make' dies partway with
- an assertion failure, something like this:=20
-</p>
-<pre class=3D"screen">
-% make: expand.c:489: allocated_variable_append:=20
- Assertion 'current_variable_set_list->next !=3D 0' failed.
-</pre>
-<p>
- </p>
-</td>
-</tr>
-<tr class=3D"answer">
-<td>=A0</td>
-<td align=3D"left" valign=3D"top"><p>It's probably a bug in 'make'. Som=
e, but not all,
- instances of version 3.79.1 have this bug, see
- www.mail-archive.com/bug...@gn.../msg01658.html. Try
- upgrading to a more recent version of 'make'. Alternatively,
- we have heard that unsetting the CFLAGS environment variable
- avoids the problem.</p></td>
-</tr>
-<tr><td colspan=3D"2">=A0</td></tr>
-</tbody>
-</table>
-</div>
-</div>
-<div>
-<br><table class=3D"nav" width=3D"100%" cellspacing=3D"3" cellpadding=3D=
"2" border=3D"0" summary=3D"Navigation footer">
-<tr>
-<td rowspan=3D"2" width=3D"40%" align=3D"left">
-<a accesskey=3D"p" href=3D"faq.background.html"><<=A02.=A0Backgrou=
nd</a>=A0</td>
-<td width=3D"20%" align=3D"center"><a accesskey=3D"u" href=3D"index.html=
">Up</a></td>
-<td rowspan=3D"2" width=3D"40%" align=3D"right">=A0<a accesskey=3D"n" hr=
ef=3D"faq.abort.html">4.=A0Valgrind aborts unexpectedly=A0>></a>
-</td>
-</tr>
-<tr><td width=3D"20%" align=3D"center"><a accesskey=3D"h" href=3D"index.=
html">Home</a></td></tr>
-</table>
-</div>
Deleted: trunk/docs/FAQ/faq.misc.html
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/docs/FAQ/faq.misc.html 2005-08-03 22:44:55 UTC (rev 160)
+++ trunk/docs/FAQ/faq.misc.html 2005-08-03 22:57:01 UTC (rev 161)
@@ -1,96 +0,0 @@
-<div><table class=3D"nav" width=3D"100%" cellspacing=3D"3" cellpadding=3D=
"3" border=3D"0" summary=3D"Navigation header"><tr>
-<td width=3D"22px" align=3D"center" valign=3D"middle"><a accesskey=3D"p"=
href=3D"faq.notfound.html"><img src=3D"images/prev.png" width=3D"18" hei=
ght=3D"21" border=3D"0" alt=3D"Prev"></a></td>
-<td width=3D"25px" align=3D"center" valign=3D"middle"><a accesskey=3D"u"=
href=3D"index.html"><img src=3D"images/up.png" width=3D"21" height=3D"18=
" border=3D"0" alt=3D"Up"></a></td>
-<td width=3D"31px" align=3D"center" valign=3D"middle"><a accesskey=3D"h"=
href=3D"index.html"><img src=3D"images/home.png" width=3D"27" height=3D"=
20" border=3D"0" alt=3D"Up"></a></td>
-<th align=3D"center" valign=3D"middle">Valgrind FAQ</th>
-<td width=3D"22px" align=3D"center" valign=3D"middle"><a accesskey=3D"n"=
href=3D"faq.help.html"><img src=3D"images/next.png" width=3D"18" height=3D=
"21" border=3D"0" alt=3D"Next"></a></td>
-</tr></table></div>
-<div class=3D"sect1" lang=3D"en">
-<div class=3D"titlepage">
-<div><div><h2 class=3D"title" style=3D"clear: both">
-<a name=3D"faq.misc"></a>7.=A0Miscellaneous</h2></div></div>
-<div></div>
-</div>
-<div class=3D"qandaset">
-<dl>
-<dt>7.1. <a href=3D"faq.misc.html#faq.writesupp">I tried writing a suppr=
ession but it didn't work. Can
- you write my suppression for me?</a>
-</dt>
-<dt>7.2. <a href=3D"faq.misc.html#faq.deflost">With Memcheck/Addrcheck's=
memory leak detector, what's
- the difference between "definitely lost", "possibly lost",
- "still reachable", and "suppressed"?</a>
-</dt>
-</dl>
-<table border=3D"0" summary=3D"Q and A Set">
-<col align=3D"left" width=3D"1%">
-<tbody>
-<tr class=3D"question">
-<td align=3D"left" valign=3D"top">
-<a name=3D"faq.writesupp"></a><a name=3D"id2520582"></a><b>7.1.</b>
-</td>
-<td align=3D"left" valign=3D"top"><p>I tried writing a suppression but i=
t didn't work. Can
- you write my suppression for me?</p></td>
-</tr>
-<tr class=3D"answer">
-<td>=A0</td>
-<td align=3D"left" valign=3D"top">
-<p>Yes! Use the
- <tt class=3D"computeroutput">--gen-suppressions=3Dyes</tt> 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
- <tt class=3D"literal">'*'</tt>.</p>
-<p>If you really want to write suppressions by hand, read
- the manual carefully. Note particularly that C++ function
- names must be <tt class=3D"literal">_mangled_</tt>.</p>
-</td>
-</tr>
-<tr><td colspan=3D"2">=A0</td></tr>
-<tr class=3D"question">
-<td align=3D"left" valign=3D"top">
-<a name=3D"faq.deflost"></a><a name=3D"id2520629"></a><b>7.2.</b>
-</td>
-<td align=3D"left" valign=3D"top"><p>With Memcheck/Addrcheck's memory le=
ak detector, what's
- the difference between "definitely lost", "possibly lost",
- "still reachable", and "suppressed"?</p></td>
-</tr>
-<tr class=3D"answer">
-<td>=A0</td>
-<td align=3D"left" valign=3D"top">
-<p>The details are in the Manual:=20
- <a href=3D"http://www.valgrind.org/docs/bookset/mc-main.leaks.html" t=
arget=3D"_top">Memory leak detection</a>.</p>
-<p>In short:</p>
-<div class=3D"itemizedlist"><ul type=3D"disc">
-<li><p>"definitely lost" means your program is leaking memory
- -- fix it!</p></li>
-<li><p>"possibly lost" means your program is probably leaking
- memory, unless you're doing funny things with
- pointers.</p></li>
-<li><p>"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
- <tt class=3D"computeroutput">--show-reachable=3Dyes</tt> if you
- don't want to see these reports.</p></li>
-<li><p>"suppressed" means that a leak error has been
- suppressed. There are some suppressions in the default
- suppression files. You can ignore suppressed errors.</p></li>
-</ul></div>
-</td>
-</tr>
-<tr><td colspan=3D"2">=A0</td></tr>
-</tbody>
-</table>
-</div>
-</div>
-<div>
-<br><table class=3D"nav" width=3D"100%" cellspacing=3D"3" cellpadding=3D=
"2" border=3D"0" summary=3D"Navigation footer">
-<tr>
-<td rowspan=3D"2" width=3D"40%" align=3D"left">
-<a accesskey=3D"p" href=3D"faq.notfound.html"><<=A06.=A0Memcheck d=
oesn't find my bug</a>=A0</td>
-<td width=3D"20%" align=3D"center"><a accesskey=3D"u" href=3D"index.html=
">Up</a></td>
-<td rowspan=3D"2" width=3D"40%" align=3D"right">=A0<a accesskey=3D"n" hr=
ef=3D"faq.help.html">8.=A0How To Get Further Assistance=A0>></a>
-</td>
-</tr>
-<tr><td width=3D"20%" align=3D"center"><a accesskey=3D"h" href=3D"index.=
html">Home</a></td></tr>
-</table>
-</div>
Deleted: trunk/docs/FAQ/faq.notfound.html
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/docs/FAQ/faq.notfound.html 2005-08-03 22:44:55 UTC (rev 160)
+++ trunk/docs/FAQ/faq.notfound.html 2005-08-03 22:57:01 UTC (rev 161)
@@ -1,131 +0,0 @@
-<div><table class=3D"nav" width=3D"100%" cellspacing=3D"3" cellpadding=3D=
"3" border=3D"0" summary=3D"Navigation header"><tr>
-<td width=3D"22px" align=3D"center" valign=3D"middle"><a accesskey=3D"p"=
href=3D"faq.unexpected.html"><img src=3D"images/prev.png" width=3D"18" h=
eight=3D"21" border=3D"0" alt=3D"Prev"></a></td>
-<td width=3D"25px" align=3D"center" valign=3D"middle"><a accesskey=3D"u"=
href=3D"index.html"><img src=3D"images/up.png" width=3D"21" height=3D"18=
" border=3D"0" alt=3D"Up"></a></td>
-<td width=3D"31px" align=3D"center" valign=3D"middle"><a accesskey=3D"h"=
href=3D"index.html"><img src=3D"images/home.png" width=3D"27" height=3D"=
20" border=3D"0" alt=3D"Up"></a></td>
-<th align=3D"center" valign=3D"middle">Valgrind FAQ</th>
-<td width=3D"22px" align=3D"center" valign=3D"middle"><a accesskey=3D"n"=
href=3D"faq.misc.html"><img src=3D"images/next.png" width=3D"18" height=3D=
"21" border=3D"0" alt=3D"Next"></a></td>
-</tr></table></div>
-<div class=3D"sect1" lang=3D"en">
-<div class=3D"titlepage">
-<div><div><h2 class=3D"title" style=3D"clear: both">
-<a name=3D"faq.notfound"></a>6.=A0Memcheck doesn't find my bug</h2></div=
></div>
-<div></div>
-</div>
-<div class=3D"qandaset">
-<dl>
-<dt>6.1. <a href=3D"faq.notfound.html#faq.hiddenbug">I try running "valg=
rind --tool=3Dmemcheck my_program" and
- get Valgrind's startup message, but I don't get any errors and
- I know my program has errors.</a>
-</dt>
-<dt>6.2. <a href=3D"faq.notfound.html#faq.overruns">Why doesn't Memcheck=
find the array overruns in this program?</a>
-</dt>
-<dt>6.3. <a href=3D"faq.notfound.html#faq.segfault">My program dies with=
a segmentation fault, but Memcheck
- doesn't give any error messages before it, or none that look
- related.</a>
-</dt>
-</dl>
-<table border=3D"0" summary=3D"Q and A Set">
-<col align=3D"left" width=3D"1%">
-<tbody>
-<tr class=3D"question">
-<td align=3D"left" valign=3D"top">
-<a name=3D"faq.hiddenbug"></a><a name=3D"id2520412"></a><b>6.1.</b>
-</td>
-<td align=3D"left" valign=3D"top"><p>I try running "valgrind --tool=3Dme=
mcheck my_program" and
- get Valgrind's startup message, but I don't get any errors and
- I know my program has errors.</p></td>
-</tr>
-<tr class=3D"answer">
-<td>=A0</td>
-<td align=3D"left" valign=3D"top">
-<p>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.</p>
-<p>To trace child processes, use the
- <tt class=3D"literal">--trace-children=3Dyes</tt> option.</p>
-<p>If you are tracing large trees of processes, it can be
- less disruptive to have the output sent over the network. Give
- Valgrind the flag
- <tt class=3D"literal">--log-socket=3D127.0.0.1:12345</tt> (if you want
- logging output sent to <tt class=3D"literal">port 12345</tt> on
- <tt class=3D"literal">localhost</tt>). You can use the
- valgrind-listener program to listen on that port:</p>
-<pre class=3D"programlisting">
-valgrind-listener 12345
-</pre>
-<p>Obviously you have to start the listener process first.
- See the Manual: <a href=3D"http://www.valgrind.org/docs/manual/coregri=
nd_core.html#comment" target=3D"_top">Directing output to file</a> for mo=
re details.</p>
-</td>
-</tr>
-<tr><td colspan=3D"2">=A0</td></tr>
-<tr class=3D"question">
-<td align=3D"left" valign=3D"top">
-<a name=3D"faq.overruns"></a><a name=3D"id2520493"></a><b>6.2.</b>
-</td>
-<td align=3D"left" valign=3D"top"><p>Why doesn't Memcheck find the array=
overruns in this program?</p></td>
-</tr>
-<tr class=3D"answer">
-<td>=A0</td>
-<td align=3D"left" valign=3D"top">
-<pre class=3D"programlisting">
-int static[5];
-
-int main(void)
-{
- int stack[5];
-
- static[5] =3D 0;
- stack [5] =3D 0;
- =20
- return 0;
-}
-</pre>
-<p>Unfortunately, Memcheck doesn't do bounds checking on
- static 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.</p>
-</td>
-</tr>
-<tr><td colspan=3D"2">=A0</td></tr>
-<tr class=3D"question">
-<td align=3D"left" valign=3D"top">
-<a name=3D"faq.segfault"></a><a name=3D"id2520525"></a><b>6.3.</b>
-</td>
-<td align=3D"left" valign=3D"top"><p>My program dies with a segmentation=
fault, but Memcheck
- doesn't give any error messages before it, or none that look
- related.</p></td>
-</tr>
-<tr class=3D"answer">
-<td>=A0</td>
-<td align=3D"left" valign=3D"top">
-<p>One possibility is that your program accesses to memory
- with inappropriate permissions set, such as writing to
- read-only memory. Maybe your program is writing to a static
- string like this:</p>
-<pre class=3D"programlisting">
-char* s =3D "hello";
-s[0] =3D 'j';
-</pre>
-<p>or something similar. Writing to read-only memory can
- also apparently make LinuxThreads behave strangely.</p>
-</td>
-</tr>
-<tr><td colspan=3D"2">=A0</td></tr>
-</tbody>
-</table>
-</div>
-</div>
-<div>
-<br><table class=3D"nav" width=3D"100%" cellspacing=3D"3" cellpadding=3D=
"2" border=3D"0" summary=3D"Navigation footer">
-<tr>
-<td rowspan=3D"2" width=3D"40%" align=3D"left">
-<a accesskey=3D"p" href=3D"faq.unexpected.html"><<=A05.=A0Valgrind=
behaves unexpectedly</a>=A0</td>
-<td width=3D"20%" align=3D"center"><a accesskey=3D"u" href=3D"index.html=
">Up</a></td>
-<td rowspan=3D"2" width=3D"40%" align=3D"right">=A0<a accesskey=3D"n" hr=
ef=3D"faq.misc.html">7.=A0Miscellaneous=A0>></a>
-</td>
-</tr>
-<tr><td width=3D"20%" align=3D"center"><a accesskey=3D"h" href=3D"index.=
html">Home</a></td></tr>
-</table>
-</div>
Deleted: trunk/docs/FAQ/faq.unexpected.html
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/docs/FAQ/faq.unexpected.html 2005-08-03 22:44:55 UTC (rev 160)
+++ trunk/docs/FAQ/faq.unexpected.html 2005-08-03 22:57:01 UTC (rev 161)
@@ -1,237 +0,0 @@
-<div><table class=3D"nav" width=3D"100%" cellspacing=3D"3" cellpadding=3D=
"3" border=3D"0" summary=3D"Navigation header"><tr>
-<td width=3D"22px" align=3D"center" valign=3D"middle"><a accesskey=3D"p"=
href=3D"faq.abort.html"><img src=3D"images/prev.png" width=3D"18" height=
=3D"21" border=3D"0" alt=3D"Prev"></a></td>
-<td width=3D"25px" align=3D"center" valign=3D"middle"><a accesskey=3D"u"=
href=3D"index.html"><img src=3D"images/up.png" width=3D"21" height=3D"18=
" border=3D"0" alt=3D"Up"></a></td>
-<td width=3D"31px" align=3D"center" valign=3D"middle"><a accesskey=3D"h"=
href=3D"index.html"><img src=3D"images/home.png" width=3D"27" height=3D"=
20" border=3D"0" alt=3D"Up"></a></td>
-<th align=3D"center" valign=3D"middle">Valgrind FAQ</th>
-<td width=3D"22px" align=3D"center" valign=3D"middle"><a accesskey=3D"n"=
href=3D"faq.notfound.html"><img src=3D"images/next.png" width=3D"18" hei=
ght=3D"21" border=3D"0" alt=3D"Next"></a></td>
-</tr></table></div>
-<div class=3D"sect1" lang=3D"en">
-<div class=3D"titlepage">
-<div><div><h2 class=3D"title" style=3D"clear: both">
-<a name=3D"faq.unexpected"></a>5.=A0Valgrind behaves unexpectedly</h2></=
div></div>
-<div></div>
-</div>
-<div class=3D"qandaset">
-<dl>
-<dt>5.1. <a href=3D"faq.unexpected.html#faq.no-output">I try running "va=
lgrind my-program", but my-program runs
- normally, and Valgrind doesn't emit any output at all.</a>
-</dt>
-<dt>5.2. <a href=3D"faq.unexpected.html#faq.slowthread">My threaded serv=
er process runs unbelievably slowly on
- Valgrind. So slowly, in fact, that at first I thought it had
- completely locked up.</a>
-</dt>
-<dt>5.3. <a href=3D"faq.unexpected.html#faq.reports">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.</a>
-</dt>
-<dt>5.4. <a href=3D"faq.unexpected.html#faq.unhelpful">The stack traces =
given by Memcheck (or another tool)
- aren't helpful. How can I improve them?</a>
-</dt>
-</dl>
-<table border=3D"0" summary=3D"Q and A Set">
-<col align=3D"left" width=3D"1%">
-<tbody>
-<tr class=3D"question">
-<td align=3D"left" valign=3D"top">
-<a name=3D"faq.no-output"></a><a name=3D"id2458918"></a><b>5.1.</b>
-</td>
-<td align=3D"left" valign=3D"top"><p>I try running "valgrind my-program"=
, but my-program runs
- normally, and Valgrind doesn't emit any output at all.</p></td>
-</tr>
-<tr class=3D"answer">
-<td>=A0</td>
-<td align=3D"left" valign=3D"top">
-<p><span><b class=3D"command">For versions prior to 2.1.1:</b></span></p=
>
-<p>Valgrind doesn't work out-of-the-box with programs that
- are entirely statically linked. It does a quick test at
- startup, and if it detects that the program is statically
- linked, it aborts with an explanation.</p>
-<p>This test may fail in some obscure cases, eg. if you run
- a script under Valgrind and the script interpreter is
- statically linked.</p>
-<p>If you still want static linking, you can ask gcc to link
- certain libraries statically. Try the following options:</p>
-<pre class=3D"screen">
--Wl,-Bstatic -lmyLibrary1 -lotherLibrary -Wl,-Bdynamic
-</pre>
-<p>Just make sure you end with
- <tt class=3D"computeroutput">-Wl,-Bdynamic</tt> so that libc is
- dynamically linked.</p>
-<p>If you absolutely cannot use dynamic libraries, you can
- try statically linking together all the .o files in coregrind/,
- all the .o files of the tool of your choice (eg. those in
- memcheck/), and the .o files of your program. You'll end up
- with a statically linked binary that runs permanently under
- Valgrind's control. Note that we haven't tested this procedure
- thoroughly.</p>
-<p><span><b class=3D"command">For versions 2.1.1 and later:</b></span></=
p>
-<p>Valgrind does now work with static binaries, although
- beware that some of the tools won't operate as well as normal,
- because they have access to less information about how the
- program runs. Eg. Memcheck will miss some errors that it would
- otherwise find. This is because Valgrind doesn't replace
- malloc() and friends with its own versions. It's best if your
- program is dynamically linked with glibc.</p>
-</td>
-</tr>
-<tr><td colspan=3D"2">=A0</td></tr>
-<tr class=3D"question">
-<td align=3D"left" valign=3D"top">
-<a name=3D"faq.slowthread"></a><a name=3D"id2459006"></a><b>5.2.</b>
-</td>
-<td align=3D"left" valign=3D"top"><p>My threaded server process runs unb=
elievably slowly on
- Valgrind. So slowly, in fact, that at first I thought it had
- completely locked up.</p></td>
-</tr>
-<tr class=3D"answer">
-<td>=A0</td>
-<td align=3D"left" valign=3D"top">
-<p>We are not completely sure about this, but one
- possibility is that laptops with power management fool
- Valgrind's timekeeping mechanism, which is (somewhat in error)
- based on the x86 RDTSC instruction. A "fix" which is claimed
- to work is to run some other cpu-intensive process at the same
- time, so that the laptop's power-management clock-slowing does
- not kick in. We would be interested in hearing more feedback
- on this.</p>
-<p>Another possible cause is that versions prior to 1.9.6
- did not support threading on glibc 2.3.X systems well.
- Hopefully the situation is much improved with 1.9.6 and later
- versions.</p>
-</td>
-</tr>
-<tr><td colspan=3D"2">=A0</td></tr>
-<tr class=3D"question">
-<td align=3D"left" valign=3D"top">
-<a name=3D"faq.reports"></a><a name=3D"id2459042"></a><b>5.3.</b>
-</td>
-<td align=3D"left" valign=3D"top"><p>My program uses the C++ STL and str=
ing classes. Valgrind
- reports 'still reachable' memory leaks involving these classes
- at the exit of the program, but there should be none.</p></td>
-</tr>
-<tr class=3D"answer">
-<td>=A0</td>
-<td align=3D"left" valign=3D"top">
-<p>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.</p>
-<p>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.</p>
-<div class=3D"itemizedlist"><ul type=3D"disc">
-<li><p>With gcc 2.91, 2.95, 3.0 and 3.1, compile all source
- using the STL with <tt class=3D"literal">-D__USE_MALLOC</tt>. Beware=
!
- This is removed from gcc starting with version 3.3.</p></li>
-<li><p>With gcc 3.2.2 and later, you should export the environment
- variable <tt class=3D"literal">GLIBCPP_FORCE_NEW</tt> before running
- your program.</p></li>
-<li><p>With gcc 3.4 and later, that variable has changed name to
- <tt class=3D"literal">GLIBCXX_FORCE_NEW</tt>.</p></li>
-</ul></div>
-<p>There are other ways to disable memory pooling: using the
- <tt class=3D"literal">malloc_alloc</tt> template with your objects (no=
t
- 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 <a href=3D"http://gcc.gnu.org/onlinedocs/libstd=
c++/ext/howto.html" target=3D"_top">
- http://gcc.gnu.org/onlinedocs/libstdc++/ext/howto.html</a>
- if you absolutely want to do that. But beware:</p>
-<div class=3D"orderedlist"><ol type=3D"1">
-<li><p>there are currently changes underway for gcc which are
- not totally reflected in the docs right now ("now" =3D=3D 26 Apr
- 03)</p></li>
-<li><p>allocators belong to the more messy parts of the STL
- and people went to great lengths to make it portable across
- platforms. Chances are good that your solution will work on
- your platform, but not on others.</p></li>
-</ol></div>
-</td>
-</tr>
-<tr><td colspan=3D"2">=A0</td></tr>
-<tr class=3D"question">
-<td align=3D"left" valign=3D"top">
-<a name=3D"faq.unhelpful"></a><a name=3D"id2520280"></a><b>5.4.</b>
-</td>
-<td align=3D"left" valign=3D"top"><p>The stack traces given by Memcheck =
(or another tool)
- aren't helpful. How can I improve them?</p></td>
-</tr>
-<tr class=3D"answer">
-<td>=A0</td>
-<td align=3D"left" valign=3D"top">
-<p>If they're not long enough, use
- <tt class=3D"literal">--num-callers</tt> to make them longer.</p>
-<p>If they're not detailed enough, make sure you are
- compiling with <tt class=3D"literal">-g</tt> to add debug information.
- And don't strip symbol tables (programs should be unstripped
- unless you run 'strip' on them; some libraries ship
- stripped).</p>
-<p>Also, for leak reports involving shared objects, if the shared object=
is
- unloaded before the program terminates, Valgrind will discard the debu=
g
- information and the error message will be full of
- <tt class=3D"literal">???</tt> entries. The workaround here is to avo=
id
- calling <tt class=3D"literal">dlclose()</tt> on these shared objects.<=
/p>
-<p>Also, <tt class=3D"literal">-fomit-frame-pointer</tt> and
- <tt class=3D"literal">-fstack-check</tt> can make stack traces
- worse.</p>
-<p>Some example sub-traces:</p>
-<p>With debug information and unstripped (best):</p>
-<pre class=3D"programlisting">
-Invalid write of size 1
- at 0x80483BF: really (malloc1.c:20)
- by 0x8048370: main (malloc1.c:9)
-</pre>
-<p>With no debug information, unstripped:</p>
-<pre class=3D"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)
-</pre>
-<p>With no debug information, stripped:</p>
-<pre class=3D"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)
-</pre>
-<p>With debug information and -fomit-frame-pointer:</p>
-<pre class=3D"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)
-</pre>
-<p>A leak error message involving an unloaded shared object:</p>
-<pre class=3D"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)
-</pre>
-</td>
-</tr>
-<tr><td colspan=3D"2">=A0</td></tr>
-</tbody>
-</table>
-</div>
-</div>
-<div>
-<br><table class=3D"nav" width=3D"100%" cellspacing=3D"3" cellpadding=3D=
"2" border=3D"0" summary=3D"Navigation footer">
-<tr>
-<td rowspan=3D"2" width=3D"40%" align=3D"left">
-<a accesskey=3D"p" href=3D"faq.abort.html"><<=A04.=A0Valgrind abor=
ts unexpectedly</a>=A0</td>
-<td width=3D"20%" align=3D"center"><a accesskey=3D"u" href=3D"index.html=
">Up</a></td>
-<td rowspan=3D"2" width=3D"40%" align=3D"right">=A0<a accesskey=3D"n" hr=
ef=3D"faq.notfound.html">6.=A0Memcheck doesn't find my bug=A0>></a>
-</td>
-</tr>
-<tr><td width=3D"20%" align=3D"center"><a accesskey=3D"h" href=3D"index.=
html">Home</a></td></tr>
-</table>
-</div>
Modified: trunk/docs/FAQ/index.html
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/docs/FAQ/index.html 2005-08-03 22:44:55 UTC (rev 160)
+++ trunk/docs/FAQ/index.html 2005-08-03 22:57:01 UTC (rev 161)
@@ -1,106 +1,654 @@
-<div></div>
-<div class=3D"article" lang=3D"en">
+<div class=3D"book" lang=3D"en">
<div class=3D"titlepage">
<div>
<div><h1 class=3D"title">
-<a name=3D"faq"></a>Valgrind FAQ</h1></div>
-<div><h3 class=3D"subtitle"><i>Valgrind Frequently Asked Questions</i></=
h3></div>
+<a name=3D"FAQ"></a>Valgrind FAQ</h1></div>
+<div><h2 class=3D"subtitle">Valgrind Frequently Asked Questions</h2></di=
v>
<div><div class=3D"author">
<h3 class=3D"author"><span class=3D"surname">
- <a href=3D"http://www.valgrind.org/info/developers.html" target=3D=
"_top">Valgrind Developers</a>
+ <a href=3D"http://www.valgrind.org/www/developers.html" target=3D"=
_top">Valgrind Developers</a>
</span></h3>
<div class=3D"affiliation"><span class=3D"orgname">
<a href=3D"mailto:val...@va..." target=3D"_top">valgrind@=
valgrind.org</a>
<br></span></div>
</div></div>
-<div><p class=3D"releaseinfo">Revision 2.1.4 of August 25 2004</p></div>
+<div><p class=3D"releaseinfo">August 3 2005</p></div>
</div>
+<div></div>
<hr>
</div>
-<div class=3D"toc">
-<p><b>Table of Contents</b></p>
+<div class=3D"sect1" lang=3D"en">
+<div class=3D"titlepage">
+<div><div><h2 class=3D"title" style=3D"clear: both">
+<a name=3D"faq.background"></a>1.=A0Background</h2></div></div>
+<div></div>
+</div>
+<div class=3D"qandaset">
<dl>
-<dt><span class=3D"sect1"><a href=3D"index.html#faq.intro">1. Introducti=
on</a></span></dt>
-<dd><dl>
-<dt><span class=3D"sect2"><a href=3D"index.html#faq.about">1.1. About th=
e FAQ</a></span></dt>
-<dt><span class=3D"sect2"><a href=3D"index.html#faq.comments">1.2. Where=
To Send Questions</a></span></dt>
-<dt><span class=3D"sect2"><a href=3D"index.html#faq.copyright">1.3. Copy=
right and License</a></span></dt>
-</dl></dd>
-<dt><span class=3D"sect1"><a href=3D"faq.background.html">2. Background<=
/a></span></dt>
-<dt><span class=3D"sect1"><a href=3D"faq.installing.html">3. Compiling, =
installing and configuring</a></span></dt>
-<dt><span class=3D"sect1"><a href=3D"faq.abort.html">4. Valgrind aborts =
unexpectedly</a></span></dt>
-<dt><span class=3D"sect1"><a href=3D"faq.unexpected.html">5. Valgrind be=
haves unexpectedly</a></span></dt>
-<dt><span class=3D"sect1"><a href=3D"faq.notfound.html">6. Memcheck does=
n't find my bug</a></span></dt>
-<dt><span class=3D"sect1"><a href=3D"faq.misc.html">7. Miscellaneous</a>=
</span></dt>
-<dt><span class=3D"sect1"><a href=3D"faq.help.html">8. How To Get Furthe=
r Assistance</a></span></dt>
-<dd><dl>
-<dt><span class=3D"sect2"><a href=3D"faq.help.html#faq.unanswered">8.1. =
If Your Question Still Isn't Answered ...</a></span></dt>
-<dt><span class=3D"sect2"><a href=3D"faq.help.html#faq.request">8.2. Wha=
t to Put in a Request for Help</a></span></dt>
-</dl></dd>
-<dt><span class=3D"sect1"><a href=3D"license.gfdl.html">9. The GNU Free =
Documentation License</a></span></dt>
+<dt>1.1. <a href=3D"FAQ.html#faq.pronounce">How do you pronounce "Valgri=
nd"?</a>
+</dt>
+<dt>1.2. <a href=3D"FAQ.html#faq.whence">Where does the name "Valgrind" =
come from?</a>
+</dt>
</dl>
+<table border=3D"0" summary=3D"Q and A Set">
+<col align=3D"left" width=3D"1%">
+<tbody>
+<tr class=3D"question">
+<td align=3D"left" valign=3D"top">
+<a name=3D"faq.pronounce"></a><a name=3D"id4869828"></a><b>1.1.</b>
+</td>
+<td align=3D"left" valign=3D"top"><p>How do you pronounce "Valgrind"?</p=
></td>
+</tr>
+<tr class=3D"answer">
+<td>=A0</td>
+<td align=3D"left" valign=3D"top">
+<p>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").</p>
+<p>Don't feel bad: almost everyone gets it wrong at
+ first.</p>
+</td>
+</tr>
+<tr><td colspan=3D"2">=A0</td></tr>
+<tr class=3D"question">
+<td align=3D"left" valign=3D"top">
+<a name=3D"faq.whence"></a><a name=3D"id4834215"></a><b>1.2.</b>
+</td>
+<td align=3D"left" valign=3D"top"><p>Where does the name "Valgrind" come=
from?</p></td>
+</tr>
+<tr class=3D"answer">
+<td>=A0</td>
+<td align=3D"left" valign=3D"top">
+<p>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".</p>
+<p>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.</p>
+<p>It's not short for "value grinder", although that's not a
+ bad guess.</p>
+</td>
+</tr>
+<tr><td colspan=3D"2">=A0</td></tr>
+</tbody>
+</table>
</div>
+</div>
<div class=3D"sect1" lang=3D"en">
<div class=3D"titlepage">
<div><div><h2 class=3D"title" style=3D"clear: both">
-<a name=3D"faq.intro"></a>1.=A0Introduction</h2></div></div>
+<a name=3D"faq.installing"></a>2.=A0Compiling, installing and configurin=
g</h2></div></div>
<div></div>
</div>
-<div class=3D"sect2" lang=3D"en">
+<div class=3D"qandaset">
+<dl><dt>2.1. <a href=3D"FAQ.html#faq.make_dies">When I trying building V=
algrind, 'make' dies partway with
+ an assertion failure, something like this:=20
+
+% make: expand.c:489: allocated_variable_append:=20
+ Assertion 'current_variable_set_list->next !=3D 0' failed.
+
+ </a>
+</dt></dl>
+<table border=3D"0" summary=3D"Q and A Set">
+<col align=3D"left" width=3D"1%">
+<tbody>
+<tr class=3D"question">
+<td align=3D"left" valign=3D"top">
+<a name=3D"faq.make_dies"></a><a name=3D"id4817600"></a><b>2.1.</b>
+</td>
+<td align=3D"left" valign=3D"top">
+<p>When I trying building Valgrind, 'make' dies partway with
+ an assertion failure, something like this:=20
+</p>
+<pre class=3D"screen">
+% make: expand.c:489: allocated_variable_append:=20
+ Assertion 'current_variable_set_list->next !=3D 0' failed.
+</pre>
+<p>
+ </p>
+</td>
+</tr>
+<tr class=3D"answer">
+<td>=A0</td>
+<td align=3D"left" valign=3D"top"><p>It's probably a bug in 'make'. Som=
e, but not all,
+ instances of version 3.79.1 have this bug, see
+ www.mail-archive.com/bug...@gn.../msg01658.html. Try
+ upgrading to a more recent version of 'make'. Alternatively,
+ we have heard that unsetting the CFLAGS environment variable
+ avoids the problem.</p></td>
+</tr>
+<tr><td colspan=3D"2">=A0</td></tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class=3D"sect1" lang=3D"en">
<div class=3D"titlepage">
-<div><div><h3 class=3D"title">
-<a name=3D"faq.about"></a>1.1.=A0About the FAQ</h3></div></div>
+<div><div><h2 class=3D"title" style=3D"clear: both">
+<a name=3D"faq.abort"></a>3.=A0Valgrind aborts unexpectedly</h2></div></=
div>
<div></div>
</div>
-<p>This document contains a collection of answers to the most
-common questions people ask about Valgrind.</p>
-<p>The latest version is available from=20
-<a href=3D"http://www.valgrind.org" target=3D"_top">http://www.valgrind.=
org</a>.</p>
-<p><span><b class=3D"command">Disclaimer:</b></span> While every attempt=
has been
-made to provide accurate and helpful information, we make no
-promises or guarantees of any kind. Use this information at your
-own risk.</p>
+<div class=3D"qandaset">
+<dl>
+<dt>3.1. <a href=3D"FAQ.html#faq.exit_errors">Programs run OK on Valgrin=
d, but at exit produce a bunch
+ of errors a bit like this:</a>
+</dt>
+<dt>3.2. <a href=3D"FAQ.html#faq.bugdeath">My (buggy) program dies like =
this:</a>
+</dt>
+<dt>3.3. <a href=3D"FAQ.html#faq.msgdeath">My program dies, printing a m=
essage like this along the
+ way:</a>
+</dt>
+</dl>
+<table border=3D"0" summary=3D"Q and A Set">
+<col align=3D"left" width=3D"1%">
+<tbody>
+<tr class=3D"question">
+<td align=3D"left" valign=3D"top">
+<a name=3D"faq.exit_errors"></a><a name=3D"id4817647"></a><b>3.1.</b>
+</td>
+<td align=3D"left" valign=3D"top"><p>Programs run OK on Valgrind, but at=
exit produce a bunch
+ of errors a bit like this:</p></td>
+</tr>
+<tr class=3D"answer">
+<td>=A0</td>
+<td align=3D"left" valign=3D"top">
+<p>
+</p>
+<pre class=3D"programlisting">
+=3D=3D20755=3D=3D Invalid read of size 4
+=3D=3D20755=3D=3D at 0x40281C8A: _nl_unload_locale (loadlocale.c:238)
+=3D=3D20755=3D=3D by 0x4028179D: free_mem (findlocale.c:257)
+=3D=3D20755=3D=3D by 0x402E0962: __libc_freeres (set-freeres.c:34)
+=3D=3D20755=3D=3D by 0x40048DCC: vgPlain___libc_freeres_wrapper (vg_c=
lientfuncs.c:585)
+=3D=3D20755=3D=3D Address 0x40CC304C is 8 bytes inside a block of siz=
e 380 free'd
+=3D=3D20755=3D=3D at 0x400484C9: free (vg_clientfuncs.c:180)
+=3D=3D20755=3D=3D by 0x40281CBA: _nl_unload_locale (loadlocale.c:246)
+=3D=3D20755=3D=3D by 0x40281218: free_mem (setlocale.c:461)
+=3D=3D20755=3D=3D by 0x402E0962: __libc_freeres (set-freeres.c:34)
+</pre>
+<p>
+
+ and then die with a segmentation fault.</p>
+<p>When the program exits, Valgrind runs the procedure
+ <tt class=3D"literal">__libc_freeres()</tt> 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.</p>
+<p>Problem is that running
+ <tt class=3D"literal">__libc_freeres()</tt> in older glibc versions
+ causes this crash.</p>
+<p>WORKAROUND FOR 1.1.X and later
+ versions of Valgrind: use the
+ <tt class=3D"literal">--run-libc-freeres=3Dno</tt> flag. 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.</p>
+</td>
+</tr>
+<tr><td colspan=3D"2">=A0</td></tr>
+<tr class=3D"question">
+<td align=3D"left" valign=3D"top">
+<a name=3D"faq.bugdeath"></a><a name=3D"id4828813"></a><b>3.2.</b>
+</td>
+<td align=3D"left" valign=3D"top"><p>My (buggy) program dies like this:<=
/p></td>
+</tr>
+<tr class=3D"answer">
+<td>=A0</td>
+<td align=3D"left" valign=3D"top">
+<pre class=3D"screen">
+% valgrind: vg_malloc2.c:442 (bszW_to_pszW): Assertion 'pszW >=3D 0' =
failed.
+</pre>
+<p>If Memcheck (the memory checker) shows any invalid reads,
+ invalid writes and 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 like this. 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.</p>
+</td>
+</tr>
+<tr><td colspan=3D"2">=A0</td></tr>
+<tr class=3D"question">
+<td align=3D"left" valign=3D"top">
+<a name=3D"faq.msgdeath"></a><a name=3D"id4783893"></a><b>3.3.</b>
+</td>
+<td align=3D"left" valign=3D"top"><p>My program dies, printing a message=
like this along the
+ way:</p></td>
+</tr>
+<tr class=3D"answer">
+<td>=A0</td>
+<td align=3D"left" valign=3D"top">
+<pre class=3D"screen">
+% disInstr: unhandled instruction bytes: 0x66 0xF 0x2E 0x5
+</pre>
+<p>Older versions did not support some x86 instructions,
+ particularly SSE/SSE2 instructions. Try a newer Valgrind; we
+ now support almost all instructions. If it still happens with
+ newer versions, if the failing instruction is an SSE/SSE2
+ instruction, you might be able to recompile your program
+ without it by using the flag
+ <tt class=3D"computeroutput">-march</tt> to gcc. Either way,
+ let us know and we'll try to fix it.</p>
+<p>Another 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/Addrcheck may issue a warning
+ just before this happens, but they might not if the jump
+ happens to land in addressable memory.</p>
+</td>
+</tr>
+<tr><td colspan=3D"2">=A0</td></tr>
+</tbody>
+</table>
</div>
-<div class=3D"sect2" lang=3D"en">
+</div>
+<div class=3D"sect1" lang=3D"en">
<div class=3D"titlepage">
-<div><div><h3 class=3D"title">
-<a name=3D"faq.comments"></a>1.2.=A0Where To Send Questions</h3></div></=
div>
+<div><div><h2 class=3D"title" style=3D"clear: both">
+<a name=3D"faq.unexpected"></a>4.=A0Valgrind behaves unexpectedly</h2></=
div></div>
<div></div>
</div>
-<p>If you have a question about Valgrind that was not answered
-here, or any comments, feel free to send it to the us at=20
-<a href=3D"mailto:val...@va..." target=3D"_top">valgrind@valgri=
nd.org</a>. We won't
-guarantee to answer all questions, but we will answer as many as
-we can. Questions that we receive repeatedly will be added to
-this FAQ. If you wish to refer to a question in the FAQ, please
-include the title of the question in your email.</p>
-<p>If you have an addition to the FAQ, by all means send
-it. Contributions may be in any format, but we infinitely prefer
-plain text.</p>
+<div class=3D"qandaset">
+<dl>
+<dt>4.1. <a href=3D"FAQ.html#faq.slowthread">My threaded server process =
runs unbelievably slowly on
+ Valgrind. So slowly, in fact, that at first I thought it had
+ completely locked up.</a>
+</dt>
+<dt>4.2. <a href=...
[truncated message content] |