1d21b3d34SFangrui Song // RUN: %clangxx_msan -O0 -g %s -o %t && not %run %t 2>&1 | FileCheck %s
2d21b3d34SFangrui Song 
3d21b3d34SFangrui Song // Verify that CHECK handler prints a stack on CHECK fail.
4d21b3d34SFangrui Song 
5d21b3d34SFangrui Song #include <stdlib.h>
6d21b3d34SFangrui Song 
main(void)7d21b3d34SFangrui Song int main(void) {
8d21b3d34SFangrui Song   // Allocate chunk from the secondary allocator to trigger CHECK(IsALigned())
9d21b3d34SFangrui Song   // in its free() path.
10d21b3d34SFangrui Song   void *p = malloc(8 << 20);
11d21b3d34SFangrui Song   free(reinterpret_cast<char*>(p) + 1);
12d21b3d34SFangrui Song   // CHECK: MemorySanitizer: bad pointer
13*2721e27cSDmitry Vyukov   // CHECK: MemorySanitizer: CHECK failed
14d21b3d34SFangrui Song   // CHECK: #0
15d21b3d34SFangrui Song   return 0;
16d21b3d34SFangrui Song }
17