From b4799fdc28e50dbb1e7adffd120d80398953b862 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Mon, 25 Mar 2024 11:25:37 +0100 Subject: [PATCH 1/2] Don't map thread stacks as MAP_SHARED, lol. MAP_SHARED means it will continue to be shared after forks, which obviously isn't the correct behavior. `acid thread` doesn't segfault infinitely, anymore. --- src/pthread/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pthread/mod.rs b/src/pthread/mod.rs index c8ce0036c4..355390cc89 100644 --- a/src/pthread/mod.rs +++ b/src/pthread/mod.rs @@ -127,7 +127,7 @@ pub(crate) unsafe fn create( core::ptr::null_mut(), stack_size, sys_mman::PROT_READ | sys_mman::PROT_WRITE, - sys_mman::MAP_SHARED | sys_mman::MAP_ANONYMOUS, + sys_mman::MAP_PRIVATE | sys_mman::MAP_ANONYMOUS, -1, 0, ); From 6e1a0668aada358175dd3317e5146917b20a08ec Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Mon, 25 Mar 2024 11:26:59 +0100 Subject: [PATCH 2/2] Fix i686 signal trampoline asm. --- src/platform/redox/signal.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/platform/redox/signal.rs b/src/platform/redox/signal.rs index 86612fc1dd..25254ff262 100644 --- a/src/platform/redox/signal.rs +++ b/src/platform/redox/signal.rs @@ -291,8 +291,10 @@ asmfunction!(__relibc_internal_sigentry: [" call {inner} add esp, 512 + fxrstor [esp] + mov eax, {SYS_SIGRETURN} - syscall + int 0x80 "] <= [inner = sym inner_fastcall, SYS_SIGRETURN = const SYS_SIGRETURN]); #[cfg(target_arch = "aarch64")]