1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <time.h>
4 #include <string.h>
5 #include <unistd.h>
6 
7 #define EXPORT   __attribute__((visibility("default")))
8 #define NOINLINE __attribute__ ((noinline))
9 
crash()10 EXPORT NOINLINE void crash()
11 {
12   char src[128];
13   char dst[2];
14   memcpy(src, dst, 8192);
15 }
16 
func1()17 EXPORT NOINLINE void func1()
18 {
19   printf("func1\n");
20   crash();
21 }
22 
func2()23 EXPORT NOINLINE void func2()
24 {
25   printf("func2\n");
26   crash();
27 }
28 
driver()29 EXPORT NOINLINE void driver()
30 {
31   srand(time(0));
32   sleep(1);
33   if (rand() % 2 == 1) func1();
34   else func2();
35 }
36 
main(int argc,char ** argv)37 int main(int argc, char ** argv)
38 {
39   driver();
40   return 0;
41 }
42 
43