From: Julian Seward Date: Sat, 24 Jan 2009 00:07:53 +0000 (+0000) Subject: VG_(apply_StackTrace): following r8818, we should regard an entry of -1 X-Git-Tag: svn/VALGRIND_3_5_0~1046 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cc781fbfbd13998f0b79aa90b8068181ee462a6c;p=thirdparty%2Fvalgrind.git VG_(apply_StackTrace): following r8818, we should regard an entry of -1 as denoting the logical end of the stack. This change stops printing of a lot of junk below the logical "-1" end mark. See added comments for details. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9051 --- diff --git a/coregrind/m_stacktrace.c b/coregrind/m_stacktrace.c index bd1e42a6cf..687d2062f5 100644 --- a/coregrind/m_stacktrace.c +++ b/coregrind/m_stacktrace.c @@ -561,7 +561,13 @@ void VG_(apply_StackTrace)( void(*action)(UInt n, Addr ip), action(i, ip); i++; - } while (i < n_ips && ips[i] != 0 && !main_done); + // re 'while' condition: stop if we hit a zero value (the traditional + // end-of-stack marker) or a ~0 value. The latter because r8818 + // (in this file) changes the meaning of entries [1] and above in a + // stack trace, by subtracting 1 from them. Hence stacks that used + // to end with a zero value now end in -1 and so we must detect + // that too. + } while (i < n_ips && ips[i] != 0 && ips[i] != ~(Addr)0 && !main_done); #undef MYBUF_LEN }