173dc36ea7dd04a2ea52ffae91670913731de209aKostya Serebryany// Check that UAR mode can handle very deep recusrion. 2cf2cabb752ffeff152ed471fa407a415c404d6e4Kostya Serebryany// export ASAN_OPTIONS=detect_stack_use_after_return=1 3cf2cabb752ffeff152ed471fa407a415c404d6e4Kostya Serebryany// RUN: %clangxx_asan -O2 %s -o %t && \ 42d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// RUN: %run %t 2>&1 | FileCheck %s 513521a267f509a06e92baa154947b9d2cde0eed8Kostya Serebryany// Also check that use_sigaltstack+verbosity doesn't crash. 62d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// RUN: env ASAN_OPTIONS=verbosity=1:use_sigaltstack=1 %run %t | FileCheck %s 773dc36ea7dd04a2ea52ffae91670913731de209aKostya Serebryany#include <stdio.h> 873dc36ea7dd04a2ea52ffae91670913731de209aKostya Serebryany 973dc36ea7dd04a2ea52ffae91670913731de209aKostya Serebryany__attribute__((noinline)) 1073dc36ea7dd04a2ea52ffae91670913731de209aKostya Serebryanyvoid RecursiveFunc(int depth, int *ptr) { 1173dc36ea7dd04a2ea52ffae91670913731de209aKostya Serebryany if ((depth % 1000) == 0) 1273dc36ea7dd04a2ea52ffae91670913731de209aKostya Serebryany printf("[%05d] ptr: %p\n", depth, ptr); 1373dc36ea7dd04a2ea52ffae91670913731de209aKostya Serebryany if (depth == 0) 1473dc36ea7dd04a2ea52ffae91670913731de209aKostya Serebryany return; 1573dc36ea7dd04a2ea52ffae91670913731de209aKostya Serebryany int local; 1673dc36ea7dd04a2ea52ffae91670913731de209aKostya Serebryany RecursiveFunc(depth - 1, &local); 1773dc36ea7dd04a2ea52ffae91670913731de209aKostya Serebryany} 1873dc36ea7dd04a2ea52ffae91670913731de209aKostya Serebryany 1973dc36ea7dd04a2ea52ffae91670913731de209aKostya Serebryanyint main(int argc, char **argv) { 2073dc36ea7dd04a2ea52ffae91670913731de209aKostya Serebryany RecursiveFunc(40000, 0); 2173dc36ea7dd04a2ea52ffae91670913731de209aKostya Serebryany return 0; 2273dc36ea7dd04a2ea52ffae91670913731de209aKostya Serebryany} 2373dc36ea7dd04a2ea52ffae91670913731de209aKostya Serebryany// CHECK: [40000] ptr: 2473dc36ea7dd04a2ea52ffae91670913731de209aKostya Serebryany// CHECK: [20000] ptr: 2573dc36ea7dd04a2ea52ffae91670913731de209aKostya Serebryany// CHECK: [00000] ptr 26