1// kills itself using poison 2#define _GNU_SOURCE 1 3#include <stdlib.h> 4#include <sys/mman.h> 5#include <stdio.h> 6#include <unistd.h> 7 8#define MADV_POISON 100 9 10int main(void) 11{ 12 int PS = getpagesize(); 13 char *ptr = mmap(NULL, PS, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_POPULATE, 0,0);; 14 printf("ptr = %p\n", ptr); 15 madvise(ptr, PS, MADV_POISON); 16 printf("faulting\n"); 17 *ptr = 1; 18 printf("waiting\n"); 19 sleep(100); 20 return 0; 21} 22