/************************************************************************* * Copyright (c) 2022 Advanced Micro Devices, Inc. All rights reserved. * * See LICENSE.txt for license information ************************************************************************/ #ifdef HAVE_BFD #include "BfdBacktrace.hpp" #endif #include #include #include #include #include "param.h" #include "debug.h" #include void sig_handler(int signum) { printf("\n[Process: %d] Inside handler function signal: %s (%d)\n", getpid(), strsignal(signum), signum); #ifdef HAVE_BFD void *addresses[BACKTRACE_MAX]; int num_addresses = backtrace(addresses, BACKTRACE_MAX); struct backtrace_file file; backtrace_line line; backtrace_h bckt; bckt.size = 0; for (int i = 0; i < num_addresses; ++i) { file.dl.address = (unsigned long)addresses[i]; if (dl_lookup_address(&file.dl) && load_file(&file)) { bckt.size += get_line_info(&file, 1, bckt.lines + bckt.size, BACKTRACE_MAX - bckt.size); unload_file(&file); } } for (int i=0; i signalsToCatch = {SIGILL, SIGBUS, SIGFPE, SIGSEGV, SIGUSR2}; for (auto signum : signalsToCatch) { if (signal(signum, sig_handler) == SIG_ERR) { INFO(NCCL_INIT, "Unable to register signal handler for %s\n", strsignal(signum)); } } } }