|
From: <sv...@va...> - 2009-01-24 00:07:59
|
Author: sewardj
Date: 2009-01-24 00:07:53 +0000 (Sat, 24 Jan 2009)
New Revision: 9051
Log:
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.
Modified:
trunk/coregrind/m_stacktrace.c
Modified: trunk/coregrind/m_stacktrace.c
===================================================================
--- trunk/coregrind/m_stacktrace.c 2009-01-24 00:06:13 UTC (rev 9050)
+++ trunk/coregrind/m_stacktrace.c 2009-01-24 00:07:53 UTC (rev 9051)
@@ -561,7 +561,13 @@
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
}
|