better control on raise(SIGSEGV)