Module Name: src Committed By: thorpej Date: Thu Aug 5 23:23:50 UTC 2021
Modified Files: src/sys/kern [thorpej-futex2]: sys_futex.c Log Message: At the end of futex_wait(), when sleepq_block() returns 0, we would like to assert that l->l_futex == NULL, because all of the code paths that awaken a blocked thread in sys_futex.c itself clear l->l_futex. Unfortunately, there are certain received-a-signal situations (e.g. SIGKILL) where sleepq_block() will not return an error after being awakened by the signal, rendering this assertion too strong. So, rather than going down the rabbit hole of reasoning out and altering long-standing behavior of the signals code, just don't assert there and treat a zero-return from sleepq_block() as an aborted futex wait if l->l_futex != NULL. (Thanks chs@ for helping chase this one down.) To generate a diff of this commit: cvs rdiff -u -r1.12.4.1 -r1.12.4.2 src/sys/kern/sys_futex.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.