vm: fatal_error if VM-less thread gets a signal

db4
Joe Groff 2011-10-19 22:47:14 -07:00
parent 41c36752fc
commit 3726f61c70
3 changed files with 11 additions and 7 deletions

View File

@ -142,9 +142,7 @@ void factor_vm::synchronous_signal_handler_impl()
void synchronous_signal_handler_impl()
{
factor_vm *vm = current_vm_p();
if (vm)
vm->synchronous_signal_handler_impl();
current_vm()->synchronous_signal_handler_impl();
}
void factor_vm::fp_signal_handler_impl()

View File

@ -153,9 +153,13 @@ void memory_signal_handler(int signal, siginfo_t *siginfo, void *uap)
void synchronous_signal_handler(int signal, siginfo_t *siginfo, void *uap)
{
factor_vm *vm = current_vm();
factor_vm *vm = current_vm_p();
if (vm)
{
vm->signal_number = signal;
vm->dispatch_signal(uap,factor::synchronous_signal_handler_impl);
} else
fatal_error("Foreign thread received signal ", signal);
}
void next_safepoint_signal_handler(int signal, siginfo_t *siginfo, void *uap)
@ -163,6 +167,8 @@ void next_safepoint_signal_handler(int signal, siginfo_t *siginfo, void *uap)
factor_vm *vm = current_vm_p();
if (vm)
vm->enqueue_safepoint_signal(signal);
else
fatal_error("Foreign thread received signal ", signal);
}
void ignore_signal_handler(int signal, siginfo_t *siginfo, void *uap)