On Android signal handlers are setup by the linker (through debuggerd_client): https://github.com/android/platform_system_core/blob/6fff551728f75e35b69bd59f2bc722a72d5c6d61/debuggerd/client/debuggerd_client.cpp#L290 diff -u -r ../gdb-7.12/gdb/common/signals-state-save-restore.c ./gdb/common/signals-state-save-restore.c --- ../gdb-7.12/gdb/common/signals-state-save-restore.c 2016-10-07 13:04:17.000000000 -0400 +++ ./gdb/common/signals-state-save-restore.c 2016-10-09 18:39:27.866619885 -0400 @@ -58,10 +58,12 @@ else if (res == -1) perror_with_name (("sigaction")); +#ifndef __ANDROID__ /* If we find a custom signal handler already installed, then this function was called too late. */ if (oldact->sa_handler != SIG_DFL && oldact->sa_handler != SIG_IGN) internal_error (__FILE__, __LINE__, _("unexpected signal handler")); +#endif } #endif }