|
From: <sv...@va...> - 2013-03-13 22:03:38
|
philippe 2013-03-13 22:03:31 +0000 (Wed, 13 Mar 2013)
New Revision: 13327
Log:
Document that user level client stack switches might cause crashes
and that these crahses might be avoided using VALGRIND_STACK_REGISTER
See bug 316613
Modified files:
trunk/docs/xml/manual-core-adv.xml
trunk/docs/xml/manual-core.xml
Modified: trunk/docs/xml/manual-core.xml (+10 -7)
===================================================================
--- trunk/docs/xml/manual-core.xml 2013-03-13 21:44:07 +00:00 (rev 13326)
+++ trunk/docs/xml/manual-core.xml 2013-03-13 22:03:31 +00:00 (rev 13327)
@@ -2609,13 +2609,16 @@
<para><computeroutput>Warning: client switching stacks?</computeroutput></para>
<para>Valgrind spotted such a large change in the stack pointer
- that it guesses the client is switching to
- a different stack. At this point it makes a kludgey guess where the
- base of the new stack is, and sets memory permissions accordingly.
- You may get many bogus error messages following this, if Valgrind
- guesses wrong. At the moment "large change" is defined as a change
- of more that 2000000 in the value of the
- stack pointer register.</para>
+ that it guesses the client is switching to a different stack. At
+ this point it makes a kludgey guess where the base of the new
+ stack is, and sets memory permissions accordingly. At the moment
+ "large change" is defined as a change of more that 2000000 in the
+ value of the stack pointer register. If Valgrind guesses wrong,
+ you may get many bogus error messages following this and/or have
+ crashes in the stack trace recording code. You might avoid these
+ problems by informing Valgrind about the stack bounds using
+ VALGRIND_STACK_REGISTER client request. </para>
+
</listitem>
<listitem>
Modified: trunk/docs/xml/manual-core-adv.xml (+6 -5)
===================================================================
--- trunk/docs/xml/manual-core-adv.xml 2013-03-13 21:44:07 +00:00 (rev 13326)
+++ trunk/docs/xml/manual-core-adv.xml 2013-03-13 22:03:31 +00:00 (rev 13327)
@@ -247,11 +247,12 @@
between start and end is a unique stack. Returns a stack identifier
that can be used with other
<computeroutput>VALGRIND_STACK_*</computeroutput> calls.</para>
- <para>Valgrind will use this information to determine if a change to
- the stack pointer is an item pushed onto the stack or a change over
- to a new stack. Use this if you're using a user-level thread package
- and are noticing spurious errors from Valgrind about uninitialized
- memory reads.</para>
+ <para>Valgrind will use this information to determine if a change
+ to the stack pointer is an item pushed onto the stack or a change
+ over to a new stack. Use this if you're using a user-level thread
+ package and are noticing crashes in stack trace recording or
+ spurious errors from Valgrind about uninitialized memory
+ reads.</para>
<para><command>Warning:</command> Unfortunately, this client request is
unreliable and best avoided.</para>
|