We can show much nicer backtraces these days, lets use them.
Sponsored-by: Klara, Inc.
Sponsored-by: Wasabi Technology, Inc.
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <rob.norris@klarasystems.com>
Closes #16181
#include <sys/brt_impl.h>
#include <zfs_comutil.h>
#include <sys/zstd/zstd.h>
-#if (__GLIBC__ && !__UCLIBC__)
-#include <execinfo.h> /* for backtrace() */
-#endif
#include <libnvpair.h>
#include <libzutil.h>
zfs_dbgmsg_print("zdb");
}
-#define BACKTRACE_SZ 100
-
static void sig_handler(int signo)
{
struct sigaction action;
-#if (__GLIBC__ && !__UCLIBC__) /* backtrace() is a GNU extension */
- int nptrs;
- void *buffer[BACKTRACE_SZ];
- nptrs = backtrace(buffer, BACKTRACE_SZ);
- backtrace_symbols_fd(buffer, nptrs, STDERR_FILENO);
-#endif
+ libspl_dump_backtrace();
dump_debug_buffer();
/*
#include <libzutil.h>
#include <sys/crypto/icp.h>
#include <sys/zfs_impl.h>
-#if (__GLIBC__ && !__UCLIBC__)
-#include <execinfo.h> /* for backtrace() */
-#endif
static int ztest_fd_data = -1;
static int ztest_fd_rand = -1;
zfs_dbgmsg_print("ztest");
}
-#define BACKTRACE_SZ 100
-
static void sig_handler(int signo)
{
struct sigaction action;
-#if (__GLIBC__ && !__UCLIBC__) /* backtrace() is a GNU extension */
- int nptrs;
- void *buffer[BACKTRACE_SZ];
- nptrs = backtrace(buffer, BACKTRACE_SZ);
- backtrace_symbols_fd(buffer, nptrs, STDERR_FILENO);
-#endif
+ libspl_dump_backtrace();
dump_debug_buffer();
/*
#define UNW_LOCAL_ONLY
#include <libunwind.h>
-static inline void
+void
libspl_dump_backtrace(void)
{
unw_context_t uc;
#elif defined(HAVE_BACKTRACE)
#include <execinfo.h>
-static inline void
+void
libspl_dump_backtrace(void)
{
void *btptrs[100];
free(bt);
}
#else
-#define libspl_dump_backtrace()
+void
+libspl_dump_backtrace(void)
+{
+}
#endif
#if defined(__APPLE__)
return (0);
}
+extern void libspl_dump_backtrace(void);
+
#ifdef verify
#undef verify
#endif