diff --git a/src/syscall/futex.rs b/src/syscall/futex.rs index 847cd141a6..dac6273c94 100644 --- a/src/syscall/futex.rs +++ b/src/syscall/futex.rs @@ -209,7 +209,11 @@ pub fn futex( if futex.target_virtaddr != target_virtaddr || !current_addrsp_weak.ptr_eq(&futex.addr_space) { - i += 1; + if futex.addr_space.strong_count() == 0 { + futexes.swap_remove(i); + } else { + i += 1; + } continue; } futex.context_lock.write(token.token()).unblock();