zfs/lib
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
..
libavl cppcheck: explicitly exclude kernel code from userspace checks 2022-05-10 10:20:55 -07:00
libefi Fix multiplication converted to larger type 2022-10-28 09:30:37 -07:00
libicp Add generic implementation handling and SHA2 impl 2023-03-02 13:52:21 -08:00
libnvpair libnvpair.c: replace strstr() with strchr() for a single character 2024-01-29 09:46:13 -08:00
libshare libzfs: use zfs_strerror() in place of strerror() 2024-01-29 09:54:57 -08:00
libspl libspl/assert: add lock around assertion output 2024-05-01 10:51:54 -07:00
libtpool Add <limits.h> header 2022-11-28 13:24:17 -08:00
libunicode cppcheck: explicitly exclude kernel code from userspace checks 2022-05-10 10:20:55 -07:00
libuutil GCC: Fixes for gcc 14 on Fedora 40 2024-04-29 11:31:50 -07:00
libzdb Provide macros for setting and getting blkptr birth times 2024-03-25 15:01:54 -07:00
libzfs Overflowing refreservation is bad 2024-04-29 11:32:49 -07:00
libzfs_core RAID-Z expansion feature 2023-11-08 10:19:41 -08:00
libzfsbootenv nvpair: Constify string functions 2023-03-14 15:25:50 -07:00
libzpool libzpool: set thread names 2024-05-01 10:51:44 -07:00
libzstd cppcheck: explicitly exclude kernel code from userspace checks 2022-05-10 10:20:55 -07:00
libzutil libzfs: use zfs_strerror() in place of strerror() 2024-01-29 09:54:57 -08:00
Makefile.am libzdb: Initial breakout of libzdb 2024-02-05 10:00:41 -08:00