--- qemu-2.10.0-rc3-clean/linux-user/syscall.c 2017-08-15 11:39:41.000000000 -0700 +++ qemu-2.10.0-rc3/linux-user/syscall.c 2017-08-22 14:34:03.193088186 -0700 @@ -116,6 +116,8 @@ #include "qemu.h" +extern unsigned int afl_forksrv_pid; + #ifndef CLONE_IO #define CLONE_IO 0x80000000 /* Clone io context */ #endif @@ -11688,8 +11690,21 @@ break; case TARGET_NR_tgkill: - ret = get_errno(safe_tgkill((int)arg1, (int)arg2, - target_to_host_signal(arg3))); + + { + int pid = (int)arg1, + tgid = (int)arg2, + sig = (int)arg3; + + /* Not entirely sure if the below is correct for all architectures. */ + + if(afl_forksrv_pid && afl_forksrv_pid == pid && sig == SIGABRT) + pid = tgid = getpid(); + + ret = get_errno(safe_tgkill(pid, tgid, target_to_host_signal(sig))); + + } + break; #ifdef TARGET_NR_set_robust_list