mirror_zfs/lib/libspl
Rob Norris dec697ad68 libspl/assert: add lock around assertion output
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
2024-05-01 10:51:54 -07:00
..
include Add custom debug printing for your asserts 2024-04-10 13:30:25 -07:00
os libzfs: use zfs_strerror() in place of strerror() 2024-01-29 09:54:57 -08:00
assert.c libspl/assert: add lock around assertion output 2024-05-01 10:51:54 -07:00
atomic.c Add membar_sync 2022-09-20 15:32:44 -07:00
getexecname.c Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
libspl_impl.h Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
list.c Remove list_size struct member from list implementation 2024-01-26 14:46:42 -08:00
Makefile.am autoconf: use include directives instead of recursing down lib 2022-05-10 10:18:11 -07:00
mkdirp.c Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
page.c Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
strlcat.c Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
strlcpy.c Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00
timestamp.c Replace dead opensolaris.org license link 2022-07-11 14:16:13 -07:00