Index: sys/kern/kern_umtx.c =================================================================== --- sys/kern/kern_umtx.c +++ sys/kern/kern_umtx.c @@ -2262,6 +2262,21 @@ break; } + /* + * Nobody owns it, but the acquire failed. On architectures + * that implement casueword32 using Load Linked/Store + * Conditional operations it may have failed due to another + * thread acquiring the mutex or because of to a store to a + * different address. Check for pending signals and + * retry the operation. + */ + if (owner == UMUTEX_UNOWNED) { + error = thread_check_susp(td, true); + if (error != 0) + break; + continue; + } + /* * Avoid overwriting a possible error from sleep due * to the pending signal with suspension check result.