Add support for a custom, per-instance signal handler (#620)

* Per Instance signal handler

* add custom signal handler test

* add instance signal handling to callable.rs

* extend signal handler test to test callable.rs

* test multiple instances, multiple signal handlers

* support more than one current instance

import_calling_export.rs is a good example of why this is needed:
execution switches from one instance to another before the first one has
finished running

* add another custom signal handler test case

* move and update custom signal handler tests

* fmt

* fix libc version to 0.2

* call the correct instance signal handler

We keep a stack of instances so should call last() not first().

* move custom signal handler test to top level dir

* windows/mac signal handling wip

* os-specific signal handling wip

* disable custom signal handler test on windows

* fmt

* unify signal handling on mac and linux
This commit is contained in:
Maciej Woś
2020-01-08 17:09:12 -08:00
committed by Dan Gohman
parent 1fe76ef9e3
commit 61f9b8ade8
13 changed files with 510 additions and 13 deletions

View File

@@ -192,11 +192,13 @@ pub fn invoke(
// Call the trampoline.
if let Err(message) = unsafe {
wasmtime_call_trampoline(
callee_vmctx,
exec_code_buf,
values_vec.as_mut_ptr() as *mut u8,
)
instance.with_signals_on(|| {
wasmtime_call_trampoline(
callee_vmctx,
exec_code_buf,
values_vec.as_mut_ptr() as *mut u8,
)
})
} {
return Ok(ActionOutcome::Trapped { message });
}