Guest User

Untitled

a guest
Oct 5th, 2016
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 25.73 KB | None | 0 0
  1. // autogenerated by syzkaller (http://github.com/google/syzkaller)
  2.  
  3. #ifndef __NR_mmap
  4. #define __NR_mmap 9
  5. #endif
  6. #ifndef __NR_write
  7. #define __NR_write 1
  8. #endif
  9. #ifndef __NR_syz_open_dev
  10. #define __NR_syz_open_dev 1000002
  11. #endif
  12. #ifndef __NR_syz_open_pts
  13. #define __NR_syz_open_pts 1000003
  14. #endif
  15. #ifndef __NR_open
  16. #define __NR_open 2
  17. #endif
  18. #ifndef __NR_sendfile
  19. #define __NR_sendfile 40
  20. #endif
  21. #ifndef __NR_syz_fuse_mount
  22. #define __NR_syz_fuse_mount 1000004
  23. #endif
  24. #ifndef __NR_syz_fuseblk_mount
  25. #define __NR_syz_fuseblk_mount 1000005
  26. #endif
  27. #ifndef __NR_syz_test
  28. #define __NR_syz_test 1000001
  29. #endif
  30.  
  31. #include <fcntl.h>
  32. #include <pthread.h>
  33. #include <setjmp.h>
  34. #include <signal.h>
  35. #include <stddef.h>
  36. #include <stdint.h>
  37. #include <stdio.h>
  38. #include <stdlib.h>
  39. #include <string.h>
  40. #include <sys/ioctl.h>
  41. #include <sys/stat.h>
  42. #include <sys/syscall.h>
  43. #include <sys/types.h>
  44. #include <unistd.h>
  45.  
  46. __thread int skip_segv;
  47. __thread jmp_buf segv_env;
  48.  
  49. static void segv_handler(int sig, siginfo_t* info, void* uctx)
  50. {
  51.   if (__atomic_load_n(&skip_segv, __ATOMIC_RELAXED))
  52.     _longjmp(segv_env, 1);
  53.   exit(sig);
  54. }
  55.  
  56. static void install_segv_handler()
  57. {
  58.   struct sigaction sa;
  59.   memset(&sa, 0, sizeof(sa));
  60.   sa.sa_sigaction = segv_handler;
  61.   sa.sa_flags = SA_NODEFER | SA_SIGINFO;
  62.   sigaction(SIGSEGV, &sa, NULL);
  63.   sigaction(SIGBUS, &sa, NULL);
  64. }
  65.  
  66. #define NONFAILING(...)                                                \
  67.   {                                                                    \
  68.     __atomic_fetch_add(&skip_segv, 1, __ATOMIC_SEQ_CST);               \
  69.     if (_setjmp(segv_env) == 0) {                                      \
  70.       __VA_ARGS__;                                                     \
  71.     }                                                                  \
  72.     __atomic_fetch_sub(&skip_segv, 1, __ATOMIC_SEQ_CST);               \
  73.   }
  74.  
  75. static uintptr_t syz_open_dev(uintptr_t a0, uintptr_t a1, uintptr_t a2)
  76. {
  77.   if (a0 == 0xc || a0 == 0xb) {
  78.     char buf[128];
  79.     sprintf(buf, "/dev/%s/%d:%d", a0 == 0xc ? "char" : "block",
  80.             (uint8_t)a1, (uint8_t)a2);
  81.     return open(buf, O_RDWR, 0);
  82.   } else {
  83.     char buf[1024];
  84.     char* hash;
  85.     strncpy(buf, (char*)a0, sizeof(buf));
  86.     buf[sizeof(buf) - 1] = 0;
  87.     while ((hash = strchr(buf, '#'))) {
  88.       *hash = '0' + (char)(a1 % 10);
  89.       a1 /= 10;
  90.     }
  91.     return open(buf, a2, 0);
  92.   }
  93. }
  94.  
  95. static uintptr_t syz_open_pts(uintptr_t a0, uintptr_t a1)
  96. {
  97.   int ptyno = 0;
  98.   if (ioctl(a0, TIOCGPTN, &ptyno))
  99.     return -1;
  100.   char buf[128];
  101.   sprintf(buf, "/dev/pts/%d", ptyno);
  102.   return open(buf, a1, 0);
  103. }
  104.  
  105. static uintptr_t syz_fuse_mount(uintptr_t a0, uintptr_t a1,
  106.                                 uintptr_t a2, uintptr_t a3,
  107.                                 uintptr_t a4, uintptr_t a5)
  108. {
  109.   uint64_t target = a0;
  110.   uint64_t mode = a1;
  111.   uint64_t uid = a2;
  112.   uint64_t gid = a3;
  113.   uint64_t maxread = a4;
  114.   uint64_t flags = a5;
  115.  
  116.   int fd = open("/dev/fuse", O_RDWR);
  117.   if (fd == -1)
  118.     return fd;
  119.   char buf[1024];
  120.   sprintf(buf, "fd=%d,user_id=%ld,group_id=%ld,rootmode=0%o", fd,
  121.           (long)uid, (long)gid, (unsigned)mode & ~3u);
  122.   if (maxread != 0)
  123.     sprintf(buf + strlen(buf), ",max_read=%ld", (long)maxread);
  124.   if (mode & 1)
  125.     strcat(buf, ",default_permissions");
  126.   if (mode & 2)
  127.     strcat(buf, ",allow_other");
  128.   syscall(SYS_mount, "", target, "fuse", flags, buf);
  129.   return fd;
  130. }
  131.  
  132. static uintptr_t syz_fuseblk_mount(uintptr_t a0, uintptr_t a1,
  133.                                    uintptr_t a2, uintptr_t a3,
  134.                                    uintptr_t a4, uintptr_t a5,
  135.                                    uintptr_t a6, uintptr_t a7)
  136. {
  137.   uint64_t target = a0;
  138.   uint64_t blkdev = a1;
  139.   uint64_t mode = a2;
  140.   uint64_t uid = a3;
  141.   uint64_t gid = a4;
  142.   uint64_t maxread = a5;
  143.   uint64_t blksize = a6;
  144.   uint64_t flags = a7;
  145.  
  146.   int fd = open("/dev/fuse", O_RDWR);
  147.   if (fd == -1)
  148.     return fd;
  149.   if (syscall(SYS_mknodat, AT_FDCWD, blkdev, S_IFBLK, makedev(7, 199)))
  150.     return fd;
  151.   char buf[256];
  152.   sprintf(buf, "fd=%d,user_id=%ld,group_id=%ld,rootmode=0%o", fd,
  153.           (long)uid, (long)gid, (unsigned)mode & ~3u);
  154.   if (maxread != 0)
  155.     sprintf(buf + strlen(buf), ",max_read=%ld", (long)maxread);
  156.   if (blksize != 0)
  157.     sprintf(buf + strlen(buf), ",blksize=%ld", (long)blksize);
  158.   if (mode & 1)
  159.     strcat(buf, ",default_permissions");
  160.   if (mode & 2)
  161.     strcat(buf, ",allow_other");
  162.   syscall(SYS_mount, blkdev, target, "fuseblk", flags, buf);
  163.   return fd;
  164. }
  165.  
  166. static uintptr_t execute_syscall(int nr, uintptr_t a0, uintptr_t a1,
  167.                                  uintptr_t a2, uintptr_t a3,
  168.                                  uintptr_t a4, uintptr_t a5,
  169.                                  uintptr_t a6, uintptr_t a7,
  170.                                  uintptr_t a8)
  171. {
  172.   switch (nr) {
  173.   default:
  174.     return syscall(nr, a0, a1, a2, a3, a4, a5);
  175.   case __NR_syz_test:
  176.     return 0;
  177.   case __NR_syz_open_dev:
  178.     return syz_open_dev(a0, a1, a2);
  179.   case __NR_syz_open_pts:
  180.     return syz_open_pts(a0, a1);
  181.   case __NR_syz_fuse_mount:
  182.     return syz_fuse_mount(a0, a1, a2, a3, a4, a5);
  183.   case __NR_syz_fuseblk_mount:
  184.     return syz_fuseblk_mount(a0, a1, a2, a3, a4, a5, a6, a7);
  185.   }
  186. }
  187.  
  188. long r[7];
  189. void* thr(void* arg)
  190. {
  191.   switch ((long)arg) {
  192.   case 0:
  193.     r[0] =
  194.         execute_syscall(__NR_mmap, 0x20000000ul, 0x10000ul, 0x3ul,
  195.                         0x32ul, 0xfffffffffffffffful, 0x0ul, 0, 0, 0);
  196.     break;
  197.   case 1:
  198.     NONFAILING(memcpy((void*)0x20002000,
  199.                       "\x2e\x2f\x66\x69\x6c\x65\x30\x00", 8));
  200.     r[2] = execute_syscall(__NR_open, 0x20002000ul, 0x4042ul, 0x145ul,
  201.                            0, 0, 0, 0, 0, 0);
  202.     break;
  203.   case 2:
  204.     NONFAILING(memcpy(
  205.         (void*)0x2000b000,
  206.         "\xad\x11\x6c\x49\x1b\xe1\x62\x6d\x80\xf6\x07\x91\xb1\x20\x68"
  207.         "\x8c\xed\x68\xe7\xa7\x27\x70\xe1\xb5\x86\xe3\x0a\x92\x33\x27"
  208.         "\x26\x1f\xa5\x03\x2e\xdc\x7d\x20\xee\xbb\x4f\xc0\xf8\x80\x9f"
  209.         "\xba\x01\x25\x35\xf9\x23\x18\x2c\xc0\x3c\x31\x7f\x92\x58\x35"
  210.         "\xef\xd2\x80\x20\x49\x61\xf7\x67\x8b\x03\x41\x94\x46\xff\xef"
  211.         "\x31\xa3\x3d\x80\x80\xea\xf7\x09\xd2\xd1\x58\xa4\x11\x3e\x92"
  212.         "\xeb\x4c\x2c\xeb\xf5\xf9\x36\xef\x9a\x66\xf1\xd8\xa5\x90\x27"
  213.         "\xde\xe6\x56\xb9\x58\x20\xdd\x6c\x68\x5a\x12\x9c\xfa\x8e\xaa"
  214.         "\x67\x2c\xd6\x71\x2c\xa1\x9c\xcd\xfe\x2a\xa0\x11\x87\x7a\x4b"
  215.         "\x72\xa2\xb4\xeb\x06\x8d\x41\x2d\xea\x34\x32\xc5\xe7\x17\xec"
  216.         "\x5d\xcd\xfe\xba\xbe\x81\x7f\x1f\xb8\x59\x43\xdc\xa4\xe6\x67"
  217.         "\x15\xf2\xd3\x6a\xd1\xba\x86\xba\xa9\x11\xd9\xba\x5b\xe8\x12"
  218.         "\xf4\x83\x0d\x7d\x0b\x2e\x0d\x42\x7b\x5b\x5d\xe2\x85\x96\xd7"
  219.         "\x60\x27\x0f\xe0\x44\xf4\xf3\x7a\x39\x5b\x7b\xc8\x0d\x44\x4e"
  220.         "\x18\x8f\x0e\x75\x6b\xd9\x6e\x64\x5f\xf2\xc6\x21\xbe\x20\x5d"
  221.         "\x38\x90\x29\xa6\x25\xb2\xc5\xe7\x00\x86\x52\xda\xdf\x36\xce"
  222.         "\x9f\x1c\x71\x63\xb9\x67\x16\xd1\xd9\x8e\xb1\x4d\xe8\xf9\x5b"
  223.         "\xb1\xc5\xcc\x08\x0b\xca\x0e\xab\x92\xd1\x77\x45\xed\x38\x46"
  224.         "\xd7\x6c\x4d\xb8\x95\xcf\x85\x2f\xb5\x37\x7f\xa5\x70\x31\xf1"
  225.         "\x9c\x0a\x07\xca\x80\x68\x2e\x9b\x65\x36\x8a\x35\x19\x28\x62"
  226.         "\x18\x67\x62\xdb\x58\x28\x42\xaa\x29\x45\xdc\xcd\x17\x22\x68"
  227.         "\xfa\xaf\x65\x4a\xf0\x7b\x21\x52\xa9\xe6\xfa\xcc\xaa\x5d\x7f"
  228.         "\x83\x16\xc4\x33\x4c\x30\x13\xfa\x70\x9c\xb1\x21\x3d\xa1\x00"
  229.         "\x8e\x88\x30\x72\x32\xbd\x4c\xbc\x7c\x8a\x1d\xb9\xde\x33\x44"
  230.         "\xf5\xa5\xe0\x87\xb9\x18\x4f\x9a\x1d\x2b\xe2\xf0\xcb\x91\xc5"
  231.         "\x63\xc3\x55\x41\xba\xae\x8c\x14\xe8\x19\x1a\xc2\x1d\x96\x86"
  232.         "\xdf\x5b\x65\xf7\xc8\x7d\x1c\x80\x83\x39\xf5\x4a\xe4\xdf\xd2"
  233.         "\x0d\x8d\x3c\x99\xc1\xc2\xc7\xe2\xca\xfe\xf3\xd6\x9d\x16\xbc"
  234.         "\xa3\xec\xce\x6c\xbf\x1e\xc3\x2b\x05\x4d\x2e\x62\xeb\x47\x88"
  235.         "\xb5\xc7\x8b\x39\x2f\x47\x58\xe8\xa9\x5f\xba\xda\x9d\xa7\x64"
  236.         "\xe4\x96\x98\x2c\x91\x5f\xee\xf9\x76\xda\x6d\x74\xf8\x3e\x9d"
  237.         "\x88\x2c\x50\x36\xcf\x81\xbc\x5b\xd6\x83\x72\x34\xdf\xab\x53"
  238.         "\xd5\x49\x32\xcc\x0c\xff\x42\xaf\x61\xe2\x89\x50\x1b\x6b\xec"
  239.         "\x3c\xb5\x3f\xb1\xca\xe3\x39\x71\xa0\x0b\xea\xc8\x9d\xac\xc3"
  240.         "\xfa\x29\x82\xb4\x23\x2a\x72\x08\x83\xc3\x96\x6e\x6f\xa5\x27"
  241.         "\x86\x10\xbf\xb3\x2d\x63\xcc\xae\xe1\xee\x62\xbe\xfa\x0c\xd8"
  242.         "\x8b\xcf\x7a\x50\x26\xd1\xa9\x50\xb9\xd0\x96\x64\x7d\xa3\x54"
  243.         "\xb1\x3d\xd4\xc1\x16\x94\x60\x84\x0f\x96\x8f\x7c\xe0\x92\xf7"
  244.         "\xd6\xfe\x6f\x0a\xff\xff\xfa\x7e\xbc\xf9\x3a\xe0\xbf\x8f\xe4"
  245.         "\x55\x20\xe5\x4c\xec\x7d\x1e\xab\x89\x30\x34\x1b\xac\x32\x8e"
  246.         "\xb3\xaa\x18\xde\x25\x6a\xa9\xfa\x41\x80\x43\x8c\x7e\x13\x8f"
  247.         "\xbe\x98\x08\x1f\x39\x51\xda\xbe\xaa\xb4\xa4\x23\xb2\x8d\x9a"
  248.         "\x93\xba\x27\xff\x38\x13\xae\xdf\x38\xf5\x9d\x4c\x08\x60\x10"
  249.         "\xb9\x4c\x14\x24\xbb\xd6\xe1\x74\xb0\xb2\x49\xe1\x3c\x33\xee"
  250.         "\xde\xd2\xb7\x5f\xed\xbd\x2d\xb8\x50\x9c\xa0\xcd\x9a\xec\xb2"
  251.         "\x6f\xe2\x13\xa1\xd3\x3c\x88\xf3\x66\x05\x63\x4b\xe8\xea\xdf"
  252.         "\x70\xe8\x15\x48\xfe\x0c\xfe\xab\x6a\xef\x16\xfb\x47\x65\x52"
  253.         "\x85\xad\x79\x8e\x6d\x1b\x60\x0d\x2e\xae\xa2\x02\x80\x97\x46"
  254.         "\x06\x02\x77\x81\x91\x26\xd6\xf8\x8c\xc5\x6a\xa3\x7b\x0a\x42"
  255.         "\xf6\x68\x3e\x9a\xb4\xca\x82\x41\x24\x71\x46\xdd\x10\xb3\x62"
  256.         "\xca\xdf\x86\x9a\x31\x49\xb8\x6a\xcc\x40\x6a\x1f\x64\x09\x70"
  257.         "\xd4\xc4\x30\x19\x5a\x26\x18\xe0\xd6\x0d\xdc\x72\xc5\x71\x83"
  258.         "\x46\xbd\x9d\xb5\x84\x6b\xc6\x18\xad\x7f\x86\x8e\xf1\xa4\xb0"
  259.         "\xeb\x01\x84\x69\x95\x55\x8a\x8d\x8a\xdb\x8e\x25\xe2\x56\x39"
  260.         "\x33\x68\x54\x53\xdc\xbe\x9e\x3e\x60\xb8\xc6\x24\xaa\x04\xc9"
  261.         "\xdd\x95\x1a\xd3\xfc\xf4\x1e\x4f\x25\x8a\x2b\x35\x48\x55\x63"
  262.         "\xe0\x19\x4a\xb0\xde\xa6\xd9\x9e\x1b\x6c\xe1\x76\x61\x50\xb2"
  263.         "\x98\x1d\x96\xa2\x09\xdf\xa7\x9d\x43\xeb\xb4\x94\xfa\x42\xc7"
  264.         "\x3e\x03\x05\xf9\x98\x51\x25\xfd\xd6\xf6\xb2\xd6\x4f\xc8\xbb"
  265.         "\x33\x4b\x0e\x63\x08\x39\x10\xd5\x5b\xe1\x89\x2a\x1c\xd3\xbf"
  266.         "\x17\xc4\x25\xc8\xd3\x4f\x61\x50\x7a\x10\xba\x90\x1d\xdf\xf6"
  267.         "\x31\xa5\xec\x87\x64\x36\x8c\xb6\x86\x47\xbf\xa1\x2d\x6b\x33"
  268.         "\xe6\x19\xe8\xaa\x7d\x14\xde\x71\xd4\xf1\xec\x9c\xcc\xb4\xc7"
  269.         "\x0b\x89\x63\x91\x1f\xb5\xa2\x61\xc5\xb9\x66\x99\xc3\xaf\x08"
  270.         "\x65\x75\xfd\x2a\xc7\x48\x8c\xf3\xb2\xde\x33\x23\x08\x65\x95"
  271.         "\x64\x91\x35\x76\x79\x0a\x53\xd0\xde\xb6\x4f\xe8\x5d\x2e\x16"
  272.         "\x68\xb1\x60\xc8\x1f\x0d\x07\x70\x82\x3c\xef\x55\x42\x87\x24"
  273.         "\xff\x43\x37\x41\x4d\x1d\x6c\xc1\x57\xbf\xda\xe5\x33\x0e\xbf"
  274.         "\xdb\xb2\x55\xa0\x7d\x9d\x57\xd5\x36\x86\xd6\x8c\x5f\x2d\x4a"
  275.         "\x69\x57\x9e\x37\xb0\x77\xa1\x10\xed\xa4\x19\x05\x55\x35\x5a"
  276.         "\x6f\xd0\x3e\x21\x5b\x45\x19\x68\x01\x5f\x45\x3e\xdf\x74\x88"
  277.         "\x68\x7e\x1d\x5f\xf9\xc3\x06\x1e\x82\xdb\xc3\x5a\x5d\x4b\x81"
  278.         "\xb8\xd9\xac\x68\x47\xff\xa7\xb2\x08\xd1\x0a\x6d\xb8\x08\xd4"
  279.         "\x0b\xe6\x53\x2d\xb0\x86\xc0\x39\xaa\x5e\x00\xef\x6d\x65\xa6"
  280.         "\xe9\x60\x4e\xa9\xb6\xf6\x74\xd9\xcf\x5b\x53\x3f\x97\x54\x7e"
  281.         "\xe4\x14\x49\x06\x8d\x3c\xca\x90\xef\x66\x50\x71\x4e\x80\x42"
  282.         "\xdc\x30\x29\xfd\xfd\x12\xd1\x23\x20\x9f\x4d\xfc\xc8\x5c\x27"
  283.         "\x08\x99\x51\x98\xc9\xb1\xb7\xba\x77\xe4\x96\x72\x76\xe9\xaf"
  284.         "\x2c\x6a\x4f\x94\xa4\xb7\xc0\xaa\x4e\xd1\x5b\x7a\x0f\xb5\x0f"
  285.         "\xda\xd9\x30\x12\x65\x7b\x6c\xb9\x57\x72\x02\x72\xc5\xde\x4c"
  286.         "\xb6\x9b\x68\x02\xc5\x1b\x38\x30\xbf\xf7\x50\xfa\x5b\x95\x96"
  287.         "\x0e\x34\x0a\x97\x07\x77\x20\xde\x4d\xaa\x80\xff\x0a\x40\x58"
  288.         "\x6d\x63\xac\x89\x27\x8b\xc5\x5a\x03\xb4\xf3\xea\xf1\xe1\x03"
  289.         "\x40\x5a\x33\xb1\x99\x95\x86\x33\x57\x67\xf5\x9a\x8c\x31\x5d"
  290.         "\x0e\xe0\x5f\x49\xee\x93\xb6\xfd\xdf\xbf\xd0\x70\xfa\x1c\x0d"
  291.         "\x92\x23\xc4\xcc\xde\x24\xf3\xbd\xff\x80\x63\x2b\xfc\x63\xd9"
  292.         "\x9a\x14\x22\x26\x9b\x40\x80\xee\x86\x6d\x1d\x34\x93\xd5\x38"
  293.         "\xca\x1d\x60\x64\x9e\x04\x8a\x36\x25\x1b\x9e\x5a\xbf\x7a\x13"
  294.         "\x83\xe3\xfc\x71\x51\xd5\x67\x62\x47\x90\xea\x92\x86\x1c\x36"
  295.         "\x6c\x39\xf2\x0b\xf9\x28\xa1\xef\x2c\x45\xb8\x36\xa5\x46\x9c"
  296.         "\x81\xbd\xc8\x95\xe9\x5f\xca\x11\xdf\x2d\x4d\x3a\x1a\xc2\xd7"
  297.         "\x85\x49\x3e\x2b\x4a\x5c\x9d\x85\x4a\xf0\x52\x04\x84\x19\xcf"
  298.         "\x43\x72\x83\x5c\x26\xbf\x2d\xfd\xb4\x12\x8e\x54\xc7\x19\x58"
  299.         "\x44\xd4\x04\x73\x05\xed\xb7\x78\x3d\x4e\xf9\x84\xbc\xdb\xfe"
  300.         "\xd9\x5b\xd1\x01\x12\x80\x37\x31\x7a\x26\x76\xfd\x5e\xeb\x3a"
  301.         "\x28\x15\xed\x2d\x43\x55\x61\xa6\x47\xd1\x8d\x73\xd8\xb5\xc1"
  302.         "\x9b\x74\xda\x61\xb2\xa5\xf8\x85\xd0\x0a\x5b\x2c\x77\x35\x19"
  303.         "\x2b\x22\xf0\x50\x3a\x81\xc5\xfe\x99\x02\x5c\x60\x51\xaa\x10"
  304.         "\x08\xc9\x01\x4b\x96\xaa\xc9\x04\x1e\x3e\x2a\x57\x49\x75\xf7"
  305.         "\x31\x8c\x49\xe4\x84\xd3\x53\x3b\xc2\x2f\x41\x56\xe4\x91\xd5"
  306.         "\x65\x22\xe1\x98\x80\x80\x49\x3f\x4f\xeb\x23\xd7\x03\x54\x3b"
  307.         "\x6c\xf2\xbe\xd1\x78\x13\xa8\xcb\x3a\x73\xbb\xbc\x9e\x81\x50"
  308.         "\x12\x78\x1c\xaf\x0d\xca\x7d\xd5\xac\x9f\xa8\x5c\xd4\xaf\xe2"
  309.         "\xce\x0e\xf9\x2f\xf0\x79\x94\xe9\xad\x57\x4e\x1f\x35\x06\x8c"
  310.         "\xc1\x1c\x3f\x33\xd7\xd2\x2f\x00\xb5\x7d\x18\x4d\xb6\xaa\x28"
  311.         "\x45\xb3\x6b\xee\x26\xc6\xfa\x03\x95\xbf\xac\x9f\x25\xf2\x2b"
  312.         "\x9e\x30\x62\x6c\x41\x2b\x87\xb9\x87\xc7\x2a\x67\x9d\xf1\x03"
  313.         "\x09\x58\x26\xc1\x7c\x7a\x2f\xf9\x6b\xd9\x31\x79\x62\x25\xf7"
  314.         "\xfd\x05\x76\x67\xf1\xd6\x55\xc5\x12\x20\xb1\x5c\xcb\xa5\x0f"
  315.         "\x51\x49\xad\x11\xa9\x6c\x75\xb4\xb4\x3c\xbc\xfb\x68\xf3\x14"
  316.         "\x72\xbd\xe9\x49\xc7\xb8\xb6\x96\x90\x6b\x1e\x10\x57\xa8\xbd"
  317.         "\xc8\x79\x9d\x82\xb4\x79\xfb\x6d\x6c\xd5\xd7\x36\x12\x00\xa3"
  318.         "\x3e\xb6\xc2\x33\xb9\x1d\x83\xcb\x59\xe3\x99\xc2\x26\x1e\xb0"
  319.         "\x67\xbc\x45\x95\xcd\xf6\x01\x4f\x3c\xb4\xd3\xf8\x57\x4d\xac"
  320.         "\x82\x14\xc2\x8a\xe2\x40\x08\x9c\x05\x46\x2e\x87\x01\xcf\x05"
  321.         "\x47\x91\x6c\x6b\xb9\x45\xcf\x1f\x96\x0e\x04\x26\x3e\x26\xf1"
  322.         "\x40\x10\x61\x79\x17\x81\x8e\x72\xda\xf3\x01\x1c\x50\xfc\x7a"
  323.         "\x6a\x15\x44\x2d\x54\xa6\x0b\x8d\x6c\xa4\xd3\x8b\xe1\xf8\x10"
  324.         "\x5c\x75\x6c\xd7\x98\xcb\x47\xad\xea\x99\xd3\xf4\xa2\xe4\x81"
  325.         "\x52\x26\x97\xe7\x02\x74\xe0\x53\xec\xd9\xdd\xa0\xee\x27\x76"
  326.         "\xf5\xf3\x53\x85\x3d\xfa\xfc\xc4\x65\xe6\xd8\x72\xba\xe1\x8d"
  327.         "\x93\xa6\x32\xc8\x69\x8f\xc6\xff\xad\x9f\x81\xb4\xce\x6f\xfd"
  328.         "\x83\xb0\x0c\xc0\x27\x80\x8b\x44\x36\xdb\x8a\xdd\x09\xde\xa8"
  329.         "\xb9\x5e\x1b\x30\xa5\x4d\xf1\x67\x21\x2d\xb4\x2e\x54\x33\xd2"
  330.         "\x7d\x5a\x20\x39\xbc\x94\xc9\x4f\x0c\xe7\x03\x76\x5b\xe1\x65"
  331.         "\x7d\xb0\xd3\x79\x52\x43\xce\x0f\x9d\xf4\xc6\x49\xfd\x24\x37"
  332.         "\x62\xa5\x5b\x28\x01\xda\x40\x8b\xeb\x78\xeb\xad\x60\x31\x4b"
  333.         "\x51\x12\x2d\x86\xdc\x82\x4a\x73\x89\xd6\x19\x52\x40\x46\x32"
  334.         "\x8e\x0e\xb3\xcc\x7d\x63\x5c\x4b\x9c\xb3\x07\xe1\x41\x86\x72"
  335.         "\x9f\x38\xa7\x5b\xff\xba\xb9\x20\xb3\xee\x79\x65\xfd\x79\x26"
  336.         "\x3e\x45\x5b\x74\x5c\x08\xcf\x3a\xda\x4b\x61\x43\x42\x64\xd3"
  337.         "\x05\x4c\xfd\xa1\xd7\x08\x6d\x52\x40\x40\x7a\x87\x11\x71\x7d"
  338.         "\xa2\x3e\xfe\x87\x99\xdb\x5a\x26\xb2\x8b\xf8\x2c\x06\x5b\x85"
  339.         "\xb5\xe2\x94\x9b\x58\x86\xc3\xfe\x19\xd4\x92\x9b\xfc\xbc\x9f"
  340.         "\x7c\x75\xea\xc5\xcc\x3d\x78\xf1\xdd\x60\x74\xed\x73\x38\x4d"
  341.         "\xcb\x22\xf1\x67\x73\x30\x68\x7d\xbb\xf9\xba\xaf\xfa\x34\x32"
  342.         "\x28\xca\x9d\xcf\x4e\x21\x99\x33\x3f\x22\x0f\x9c\x3e\xcb\x79"
  343.         "\x73\xee\xdc\x7e\x9e\xcc\x00\x2d\x97\xd1\xa3\x27\x5a\xa2\x9e"
  344.         "\x88\x2a\xd2\x56\x45\xfd\x96\x46\xc3\xfd\x10\xfb\x90\xa1\x76"
  345.         "\xd8\x1f\xb8\xeb\xf0\xa8\xc0\x9b\x1c\x10\xe3\x31\x72\xd4\xef"
  346.         "\x91\x9f\x3f\xd9\x95\x9e\x95\x8c\xa2\x6c\xdc\xb6\x5c\xd3\x1c"
  347.         "\x59\xc9\xcb\x90\x62\x70\x6c\x12\x3f\xb0\x38\x9a\x40\x5d\xfa"
  348.         "\x8f\xa6\x8e\x39\xf8\xa1\x8a\xcf\x0d\xe6\xfe\x1a\xb1\x81\x4b"
  349.         "\x08\x80\x0d\xda\x85\x82\x5c\x20\x51\xc8\x3e\x8e\x6d\x5a\x32"
  350.         "\xab\x7c\x86\x82\xdb\x61\xb5\xc2\xf7\x80\xbe\xc2\x4a\x1b\xad"
  351.         "\x16\xaf\x64\x9e\xc8\xd7\xaf\x22\x36\xb6\x61\xb0\x9c\x13\x56"
  352.         "\xd5\x05\xde\x2d\x34\xa6\xf8\x1b\x93\xbf\xb7\xdd\xdf\x8f\x9a"
  353.         "\xc8\x4e\x9d\x07\xd6\x99\x5e\x09\x12\xdf\xe1\x2f\x68\xa9\x5f"
  354.         "\x68\x53\x57\xb8\xa7\x80\x6c\x5a\x0e\x46\xa1\xcb\x22\xb6\x08"
  355.         "\x55\x84\x85\x62\x17\xa2\xb0\x29\x51\x1a\x64\xe9\xac\xef\x3c"
  356.         "\xc5\xad\x3a\x9e\xa7\xf2\x9c\x0b\x99\x44\x6f\x7a\x44\xaf\xc2"
  357.         "\x96\xc6\xa4\xc6\x39\x3c\x59\x21\x00\x61\x80\xce\x4d\x8d\x09"
  358.         "\x68\x91\x77\xb3\x87\xea\x68\x0b\xf3\x3a\x24\x97\x7d\xf7\xb8"
  359.         "\xcd\x1b\xe7\x8d\x48\x10\x17\xda\xed\xad\x12\x89\xf0\xbc\xff"
  360.         "\x37\xe9\x06\x21\x22\xeb\x7c\xd1\x35\x5b\xbe\x22\x62\x18\x39"
  361.         "\x44\x12\xa8\xfb\xf0\xac\x84\xe5\x5d\x6d\x98\x51\x16\x72\x46"
  362.         "\xf0\xb1\xa3\xae\x69\xf9\x47\x86\x0e\xf8\xc0\xdb\x7f\x9e\x6d"
  363.         "\x6b\x95\x78\xf5\x70\xb4\x65\x5a\xbd\x04\xc8\x70\xb7\xef\xbf"
  364.         "\xde\x79\xc2\x1d\x80\x37\xe9\xf1\x13\x01\x64\x3a\x38\x24\x64"
  365.         "\x46\x6d\xf0\x4d\x6c\xaf\x11\xb4\x97\x03\xfa\x41\x24\x19\xed"
  366.         "\x2d\x36\xd7\x2f\x95\xb5\xb0\xee\x95\xdd\x55\x4a\xe0\xfb\xde"
  367.         "\x17\x67\x23\x7a\x3b\xef\x68\x18\x29\x8f\xe9\xba\x58\x05\x8d"
  368.         "\x1b\xfa\xb4\x5f\x4b\xf5\x7f\x5e\x12\xc2\x83\x1e\x00\x49\x07"
  369.         "\x80\xf7\x38\xf3\xb8\x42\x46\x81\x35\xca\x53\xdc\x03\x52\x17"
  370.         "\xbe\x40\x0b\x04\x59\x12\x00\xb2\x00\x18\x55\x50\x53\x81\x2d"
  371.         "\xeb\x76\x9e\x3e\xa9\x7f\x6c\x54\x4a\x32\x82\x64\x22\xb0\x3e"
  372.         "\x06\x9e\x25\xb2\x51\x7c\xef\x09\x26\xc7\x83\x0f\x21\xe2\x56"
  373.         "\x0d\x2e\xf4\x02\xe4\xb7\xad\x69\xb4\xdd\xb0\x2e\x9d\xaf\x5d"
  374.         "\x36\xc5\x55\x18\xee\x80\xd0\x35\x01\x50\xd8\x16\xa7\xcb\xc5"
  375.         "\xe0\x63\xca\x77\x07\x2a\x38\xd9\x75\x00\x7c\x00\x1b\x39\xee"
  376.         "\x00\x7b\x82\xce\x8e\xf0\xd9\xc6\x2f\xc4\x7f\x50\x43\xf4\xd1"
  377.         "\x58\x43\x19\x11\x5e\x4b\x60\x4e\x5c\x15\x7b\xc5\xb5\x7f\xdc"
  378.         "\x31\xfd\x79\xbe\xfa\x77\x9f\xc5\x2a\x7b\x59\xce\x37\x18\x48"
  379.         "\x15\xa4\x32\x71\x18\x04\x81\xa6\x8e\x18\x81\xb6\xf4\x5c\x4f"
  380.         "\x30\x46\xd8\x8c\xae\x5f\x4d\xe5\x6f\x32\x4b\xdb\x35\x38\xcc"
  381.         "\x5d\xff\xe2\x58\x09\xb0\x42\x3b\xd7\x57\xc2\x30\x35\x31\xed"
  382.         "\x72\xe9\x79\x8e\x73\xf7\x4f\xa9\x02\x87\xc1\x62\x23\xfd\x6d"
  383.         "\x77\x46\x74\xe3\xab\xbb\xc6\xe0\x9e\xee\x33\x35\xd0\xfb\x6f"
  384.         "\xbb\xea\x90\x54\x91\x7a\xcd\x1d\xdf\x82\x44\xdb\xda\xec\x91"
  385.         "\xa4\xf8\xef\x13\xf7\xc5\xf1\x14\x0f\x20\x03\x19\x37\xa9\x56"
  386.         "\x74\x15\x71\x4d\x6c\x88\x4f\xdc\x94\xbf\x38\xa7\x60\x19\xab"
  387.         "\xa2\xb6\xe3\x37\x53\x0b\x0f\x11\x0b\x12\x11\x98\x3b\xbf\xef"
  388.         "\x43\x03\x50\x58\x81\x68\xfe\xe8\xb9\x8e\xec\xf9\xba\xdf\x1f"
  389.         "\x60\x67\x2b\x05\x28\x1f\x8a\xb2\x00\x7a\x2e\xcf\xb4\xdf\x85"
  390.         "\x73\x78\x7d\x94\x0b\x80\xe4\xfc\xf9\x75\x8c\x01\x28\x38\xd2"
  391.         "\x19\x62\x15\xd0\x78\x0f\xb0\xfb\x67\x11\x07\x7c\xb5\x5f\x51"
  392.         "\xd4\x65\xbe\xe6\x62\x68\x6e\xc4\x86\xaf\x62\x35\xf6\xd0\x32"
  393.         "\x3b\x8a\x7d\xbe\x42\x5a\x12\xd0\x79\xd6\xe0\x4c\x99\xda\x09"
  394.         "\x2d\x18\xcf\x2f\xe3\x2c\x2d\xf7\x44\x31\x7e\xd7\x45\xec\xaa"
  395.         "\x52\x3b\x72\x24\x65\xd0\x19\xb3\xd0\xe6\xb1\x73\xb7\x2c\xee"
  396.         "\x07\x9a\x40\x1b\xa9\x69\xfa\xc0\x25\xd9\x63\xd1\x6d\xf5\xda"
  397.         "\xd0\x5d\xb7\x8f\xe8\xe1\x33\xae\xcb\x26\x6c\xc8\x55\xda\xd7"
  398.         "\xf4\xbd\xcf\xfe\x94\x66\x96\x16\xf0\xc4\x98\xf7\x1d\xb4\xe6"
  399.         "\x29\x73\xf1\xf4\x7d\xd9\x11\xd7\xcc\x2a\xc8\x1f\x67\xd9\x0b"
  400.         "\x22\xdf\x00\xfc\xd9\x36\x8d\xaa\xe0\x55\xcb\x25\x73\x3e\x33"
  401.         "\x59\x59\x2b\x9a\xa9\x8c\x1c\xef\xcd\x6e\xdc\x8e\x9a\xb8\x1b"
  402.         "\x2e\x68\x08\x0c\x01\x03\x9b\x82\x2c\x70\xcc\x49\x7c\x8c\x61"
  403.         "\xe9\xe4\x51\x80\x78\x8e\x81\x63\x5a\x69\x09\x7f\xd5\x69\x74"
  404.         "\xf4\xae\x1f\xe4\xcc\x61\x0c\x4b\x02\x12\xf9\x15\xf7\x22\x99"
  405.         "\x74\x1b\x10\xdc\xee\x08\x9c\x99\x78\xff\x5f\x77\xc1\x23\x4d"
  406.         "\xd3\xc3\xe9\x84\x27\x69\x45\xaf\x9e\xd6\x18\x4e\x43\x9c\xe7"
  407.         "\x4f\xbd\x75\xab\x48\x26\xe4\x3f\x87\xae\x2d\x3b\x69\x97\xe7"
  408.         "\xde\x6e\x6f\x2e\xd0\x82\x22\x27\x7a\x99\x5c\x44\x6b\x0b\x60"
  409.         "\x3b\xfb\x56\x38\x62\x5f\xd7\xf9\x06\xe8\xee\x20\x54\x4e\xfe"
  410.         "\xeb\x2a\xa4\xb1\x68\x11\xfe\x20\xa9\x7a\xc9\xdf\xc1\x63\xe7"
  411.         "\xf7\xe8\x87\x8b\xde\xfe\xeb\x2e\xd1\xb1\x0f\x22\x55\x4c\xa0"
  412.         "\xe3\x0c\x8c\x92\x3b\x7f\x6e\xea\xca\x52\xa9\x95\xae\x6d\xe1"
  413.         "\x6b\xb3\x2e\x61\x5d\x54\x7b\x73\xfe\x0e\xb5\xb5\x9e\x5e\xdd"
  414.         "\x6c\x0a\x9e\x35\x38\xef\x78\xe0\x2f\x4f\xd9\x13\x5a\x34\x06"
  415.         "\x6e\x45\xb2\xe6\x04\x83\x55\xc8\x44\xfe\x26\xd3\x51\xa5\xa1"
  416.         "\xca\xdb\x53\xf4\xd8\x09\xec\x94\xe2\x18\xe5\x7f\xb5\x72\xbd"
  417.         "\x4c\x79\x65\x79\xb7\xe6\xc5\xd5\x1c\x2b\xe8\x2a\x75\x29\x6e"
  418.         "\xc4\xee\x87\xe8\x95\x80\xd8\x0b\x33\x07\x69\xdb\xcd\x6a\xea"
  419.         "\x9e\xb9\x8c\x28\x90\x44\xe2\xbe\x30\x4e\x60\xe6\x72\x5d\x34"
  420.         "\x28\xd0\x9c\xe4\x5d\x64\x5c\x31\x4a\x74\x0f\xda\xd0\x19\x2e"
  421.         "\xeb\xbe\xac\xc4\x19\x89\x4d\xd5\x8d\x63\xbb\x64\x1a\x4c\xbb"
  422.         "\xac\xc1\x36\x25\xe4\x50\xd2\x3f\x4a\x86\xda\x75\x0a\x49\xbf"
  423.         "\xf9\xaa\x5b\xd6\x3f\x0d\x4a\x66\x4f\x10\x7c\x24\xbb\x25\x57"
  424.         "\x60\x12\x80\x08\x93\xe4\xf4\xe3\x53\xd6\x04\x30\x51\xe5\x6c"
  425.         "\x23\x1e\x2c\x2a\x98\x61\x3c\xed\x1f\xd4\x52\x7f\x73\x1e\x4f"
  426.         "\x78\xb8\xeb\xf8\xa5\x19\x84\x44\x97\x94\x75\xe7\x21\xac\x21"
  427.         "\x00\xca\x98\xe3\x5b\x6f\xe4\x04\x15\xbb\x30\x59\xf4\xfe\x32"
  428.         "\x5f\x61\x10\x83\x65\x64\xa0\xab\x14\x4f\x79\x2b\xe2\xc8\xc8"
  429.         "\x7a\xf1\xd4\xf0\xa2\x67\xab\x3f\x66\x17\x34\xf9\xd0\x9a\xd5"
  430.         "\x56\xc7\xcf\xb2\xc1\x6b\x18\xaf\xf8\xeb\x7f\xd6\xd2\x8e\x92"
  431.         "\xa7\xe3\x6d\x6d\xdc\x67\x34\x76\xb7\x90\x43\x77\x1d\x66\xb0"
  432.         "\x05\x70\xe4\xe8\xbf\xfd\x86\x0d\x54\x37\xc7\x91\xb8\x48\xd8"
  433.         "\xe0\xe3\x69\xa4\x3b\x82\x19\x3f\x0e\xd2\x86\x87\x59\x39\xa3"
  434.         "\xca\x7b\x82\x16\x74\x2e\xfd\x06\x22\xbc\xc4\xc6\x45\x12\x76"
  435.         "\xfa\xa3\x3c\x24\xbe\x51\x24\x09\x22\x38\xf9\x82\xfb\x01\xde"
  436.         "\x45\x10\x1f\x38\xa6\xb3\xd7\x9c\x1b\x19\x27\xdd\x70\x64\x9c"
  437.         "\xf2\x43\x4e\x6f\x27\x82\x02\x60\xa1\x9a\x4e\x18\x30\x94\x95"
  438.         "\x3d\x83\xa0\xf0\x25\x76\xbb\x51\x22\x2b\x30\xde\xda\xa5\xf1"
  439.         "\xc1\xde\xc7\xe2\xdb\x61\xaa\x42\xfd\x3f\xca\x0a\x3c\xcd\x3b"
  440.         "\xe6\x76\x84\xcc\x29\x10\x31\x07\x2f\xd3\x3b\x24\xbc\x68\x20"
  441.         "\xea\x9f\x8a\x1f\x1d\x99\x0a\x98\x67\x75\x00\xf8\x9c\x98\x14"
  442.         "\x89\x94\x34\xef\xac\x38\x23\xc1\x4d\xfc\xf0\x54\xd9\x9f\xb2"
  443.         "\x7e\x56\x38\x6d\x9b\xb9\x8b\x81\x45\x8d\x6d\x98\x62\xd3\xe2"
  444.         "\xce\x88\x58\xf8\x8d\x55\x6c\x9a\xc8\xa3\x29\x64\xf5\x81\x33"
  445.         "\x23\xbe\x1a\x15\xc1\xbb\x7c\xcf\x8b\xf4\xe1\x04\xc3\xcd\xf2"
  446.         "\x6d\xfd\x91\xd7\x23\x34\xd0\x38\x27\x89\x30\x3c\xb8\xbe\xda"
  447.         "\x81\x9e\xe0\xc9\x35\x70\xd8\xf2\x24\x20\xeb\xaf\x3d\x19\x39"
  448.         "\x57\x48\x02\x91\x30\x66\x9a\x9f\xd9\x88\xdd\xc9\x6d\xa1\xfd"
  449.         "\x4d\x27\xef\xec\x4e\x79\xce\x17\x62\x8a\xae\x19\xef\x1a\x70"
  450.         "\x24\x4e\x9e\x25\xc4\x33\xe7\xaa\x27\x2b\xbe\xbd\x48\xc5\xb2"
  451.         "\x61\xc2\xa1\xc0\xa5\xcc\x8c\x32\x6b\xa1\xcb\xec\xd1\x72\xb6"
  452.         "\x2a\xea\xb3\xed\xd1\xcf\xb6\x58\x3a\x89\x99\x5d\x3c\x32\xb0"
  453.         "\x0f\x65\x20\x8f\x52\xa9\x05\x2a\x05\x52\x6a\x7f\x8d\x74\xf5"
  454.         "\xf9\x0f\x94\xfb\xae\x7e\x15\x12\xbd\x75\xd2\x53\x09\x9f\xbd"
  455.         "\x9f\xb4\x75\x06\x9e\x83\x76\x96\xc7\xb5\x47\xa6\x1d\xa3\xe1"
  456.         "\x75\x93\xbc\x10\xd4\x46\x92\xf0\x51\x0f\x46\xfb\x34\x1d\x73"
  457.         "\xbd\xbe\xd6\x40\x94\x39\xa0\x28\xda\x0f\xbb\xb4\x25\x90\xe0"
  458.         "\x58\xf8\x23\x11\xec\xae\x3a\xed\xff\xb8\xef\xc4\x54\x14\x2f"
  459.         "\xf0\x6f\x8a\xc6\x6c\xf4\x0a\xbb\x53\x97\xc1\xf7\xba\xe3\xb6"
  460.         "\xcc\xe7\x75\x6f\x07\x91\x23\xd5\x09\xbf\xa6\xaa\x61\x4c\x86"
  461.         "\x23\x14\xc1\x58\x26\x52\x9b\x86\x77\x38\x45\x5e\x17\xbb\x6e"
  462.         "\xf0\x36\x9e\x33\xa2\xa5\xb4\x39\x17\xa3\xc0\xac\xf4\xfc\xa3"
  463.         "\x3f\x08\x0e\x99\xc8\x64\xd4\xbb\x65\xd8\xa6\xca\x02\x2b\x6a"
  464.         "\x12\xdd\x6f\x91\xb9\xb6\x2f\x83\x46\x51\x41\xbb\x6e\x25\x1f"
  465.         "\x0c\x94\xde\xb2\xf0\xc6\x35\x59\x8f\x05\x1d\xbc\x82\x27\x9c"
  466.         "\x5d\xed\x8c\xd6\xbc\x20\xe1\xa9\x1e\x86\x98\x7e\xa1\x62\x0e"
  467.         "\x05\x36\x72\x34\x49\x9b\x0d\x4e\x44\x67\xfa\xbe\xfa\x92\x1e"
  468.         "\x05\xd5\xa1\x7e\x42\x9c\x57\x24\x94\xf7\x2d\x8d\x8f\x5e\x68"
  469.         "\x5c\x15\x2b\x8d\xa4\x69\x89\x20\xbe\x60\x23\x0d\x08\x76\x2c"
  470.         "\x37\x89\xeb\x24\xbb\x4d\xc2\x27\x96\x85\x0b\xfb\xf5\xb1\x0c"
  471.         "\x35\x1e\x2f\xe5\x38\xae\x22\xfa\x8c\x73\x97\xe2\xba\x9f\xf5"
  472.         "\x45\x05\x38\x71\x2d\xfa\xab\xb3\xee\xfa\xfb\x7c\x73\x59\x60"
  473.         "\x5e\xd6\x84\x31\x6c\xbd\xde\x7e\x67\xe0\x3b\x03\x38\x61\xe5"
  474.         "\x2b\x75\x68\xfc\xed\xf5\xb4\x9f\xc1\x15\x07\xc6\x3d\x44\x01"
  475.         "\x57\xd9\x37\x83\x03\xe9\xb7\x8e\xdd\xdc\x4d\x98\x61\xe0\xbd"
  476.         "\x48\xc9\xd9\xdb\xf4\x25\xf0\x32\xbe\x59\x25\xa5\x6b\xc6\x61"
  477.         "\x6f\x2d\x56\xcd\xe0\xee\x62\x5f\x38\x58\x2b\x7b\x19\xc4\x58"
  478.         "\x5b\x7d\x05\xe5\x17\x09\x05\x45\x15\xc4\xc6\x2f\x36\x61\xfc"
  479.         "\x83",
  480.         4096));
  481.     r[4] = execute_syscall(__NR_write, r[2], 0x2000b000ul, 0x1000ul, 0,
  482.                            0, 0, 0, 0, 0);
  483.     break;
  484.   case 3:
  485.     NONFAILING(*(uint64_t*)0x2000cff8 = (uint64_t)0x0);
  486.     r[6] = execute_syscall(__NR_sendfile, r[2], r[2], 0x2000cff8ul,
  487.                            0xfffffffful, 0, 0, 0, 0, 0);
  488.     break;
  489.   }
  490.   return 0;
  491. }
  492.  
  493. int main()
  494. {
  495.   long i;
  496.   pthread_t th[8];
  497.  
  498.   install_segv_handler();
  499.   memset(r, -1, sizeof(r));
  500.   srand(getpid());
  501.   for (i = 0; i < 4; i++) {
  502.     pthread_create(&th[i], 0, thr, (void*)i);
  503.     usleep(10000);
  504.   }
  505.   for (i = 0; i < 4; i++) {
  506.     pthread_create(&th[4 + i], 0, thr, (void*)i);
  507.     if (rand() % 2)
  508.       usleep(rand() % 10000);
  509.   }
  510.   usleep(100000);
  511.   return 0;
  512. }
Advertisement
Add Comment
Please, Sign In to add comment