mirror of
https://git.proxmox.com/git/mirror_zfs
synced 2025-11-01 03:52:07 +00:00
If multiple threads trip an assertion at the same moment (quite common), they can be printing at the same time, and their output gets messy. This adds a simple lock around the whole thing, to prevent a second task printing assert output before the first has finished. Additionally, if libspl_assert_ok is not set, abort() is called without dropping the lock, so that any other asserting tasks will be killed before starting any output, rather than only getting part-way through. This is a tradeoff; it's assumed that multiple threads asserting at the same moment are likely the same fault in different instances of a thread, and so there won't be any more useful information from the other tasks anyway. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Rob Norris <robn@despairlabs.com> Sponsored-by: https://despairlabs.com/sponsor/ Closes #16140 |
||
|---|---|---|
| .. | ||
| include | ||
| os | ||
| assert.c | ||
| atomic.c | ||
| getexecname.c | ||
| libspl_impl.h | ||
| list.c | ||
| Makefile.am | ||
| mkdirp.c | ||
| page.c | ||
| strlcat.c | ||
| strlcpy.c | ||
| timestamp.c | ||