forked from OSchip/llvm-project
[msan] Fix truncated stack trace in chained origin reports.
This is a leftover from the times when the next (chained) origin id was stored as the last frame of a stack trace. llvm-svn: 211878
This commit is contained in:
parent
673b3afacd
commit
7d3c68a9cf
|
@ -90,7 +90,7 @@ static void DescribeOrigin(u32 id) {
|
|||
// FIXME: copied? modified? passed through? observed?
|
||||
Printf(" %sUninitialized value was stored to memory at%s\n", d.Origin(),
|
||||
d.End());
|
||||
StackTrace::PrintStack(trace, size - 1);
|
||||
StackTrace::PrintStack(trace, size);
|
||||
id = prev_id;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
// RUN: %clangxx_msan -fsanitize-memory-track-origins=2 -m64 -O3 %s -o %t && \
|
||||
// RUN: MSAN_OPTIONS=malloc_context_size=1 not %run %t 2>&1 | FileCheck %s
|
||||
|
||||
// Test that stack trace for the intermediate store is not empty.
|
||||
|
||||
// CHECK: MemorySanitizer: use-of-uninitialized-value
|
||||
// CHECK: #0 {{.*}} in main
|
||||
|
||||
// CHECK: Uninitialized value was stored to memory at
|
||||
// CHECK: #0 {{.*}} in fn_g
|
||||
|
||||
// CHECK: Uninitialized value was created by an allocation of 'z' in the stack frame of function 'main'
|
||||
// CHECK: #0 {{.*}} in main
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
volatile int x;
|
||||
|
||||
__attribute__((noinline))
|
||||
void fn_g(int a) {
|
||||
x = a;
|
||||
}
|
||||
|
||||
__attribute__((noinline))
|
||||
void fn_f(int a) {
|
||||
fn_g(a);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
int volatile z;
|
||||
fn_f(z);
|
||||
return x;
|
||||
}
|
Loading…
Reference in New Issue