Remove debug_shared

The last remnant of the old debug system, this was only used in
show_stackframe.

Because that's only ever called with an "E" level currently I've
removed the level argument entirely. If it's needed we'd have to pass
a flog category here.
This commit is contained in:
Fabian Boehm 2022-06-16 10:26:43 +02:00
parent 98bf01568d
commit 89996c0c8a
2 changed files with 7 additions and 20 deletions

View file

@ -95,8 +95,6 @@ const wchar_t *program_name;
/// This is set during startup and not modified after. /// This is set during startup and not modified after.
static relaxed_atomic_t<pid_t> initial_fg_process_group{-1}; static relaxed_atomic_t<pid_t> initial_fg_process_group{-1};
static void debug_shared(wchar_t msg_level, const wcstring &msg);
#if defined(OS_IS_CYGWIN) || defined(WSL) #if defined(OS_IS_CYGWIN) || defined(WSL)
// MS Windows tty devices do not currently have either a read or write timestamp. Those // MS Windows tty devices do not currently have either a read or write timestamp. Those
// respective fields of `struct stat` are always the current time. Which means we can't // respective fields of `struct stat` are always the current time. Which means we can't
@ -224,17 +222,17 @@ bool is_windows_subsystem_for_linux() {
return backtrace_text; return backtrace_text;
} }
[[gnu::noinline]] void show_stackframe(const wchar_t msg_level, int frame_count, int skip_levels) { [[gnu::noinline]] void show_stackframe(int frame_count, int skip_levels) {
if (frame_count < 1) return; if (frame_count < 1) return;
wcstring_list_t bt = demangled_backtrace(frame_count, skip_levels + 2); wcstring_list_t bt = demangled_backtrace(frame_count, skip_levels + 2);
debug_shared(msg_level, L"Backtrace:\n" + join_strings(bt, L'\n') + L'\n'); FLOG(error, L"Backtrace:\n" + join_strings(bt, L'\n') + L'\n');
} }
#else // HAVE_BACKTRACE_SYMBOLS #else // HAVE_BACKTRACE_SYMBOLS
[[gnu::noinline]] void show_stackframe(const wchar_t msg_level, int, int) { [[gnu::noinline]] void show_stackframe(int, int) {
debug_shared(msg_level, L"Sorry, but your system does not support backtraces"); FLOGF(error, L"Sorry, but your system does not support backtraces");
} }
#endif // HAVE_BACKTRACE_SYMBOLS #endif // HAVE_BACKTRACE_SYMBOLS
@ -606,17 +604,6 @@ bool should_suppress_stderr_for_tests() {
return program_name && !std::wcscmp(program_name, TESTS_PROGRAM_NAME); return program_name && !std::wcscmp(program_name, TESTS_PROGRAM_NAME);
} }
static void debug_shared(const wchar_t level, const wcstring &msg) {
pid_t current_pid;
if (!is_forked_child()) {
std::fwprintf(stderr, L"<%lc> %ls: %ls\n", level, program_name, msg.c_str());
} else {
current_pid = getpid();
std::fwprintf(stderr, L"<%lc> %ls: %d: %ls\n", level, program_name, current_pid,
msg.c_str());
}
}
// Careful to not negate LLONG_MIN. // Careful to not negate LLONG_MIN.
static unsigned long long absolute_value(long long x) { static unsigned long long absolute_value(long long x) {
if (x >= 0) return static_cast<unsigned long long>(x); if (x >= 0) return static_cast<unsigned long long>(x);
@ -1833,7 +1820,7 @@ void redirect_tty_output() {
} else { } else {
FLOGF(error, L"%s:%zu: failed assertion: %s", file, line, msg); FLOGF(error, L"%s:%zu: failed assertion: %s", file, line, msg);
} }
show_stackframe(L'E', 99, 1); show_stackframe(99, 1);
abort(); abort();
} }

View file

@ -196,7 +196,7 @@ extern const wcstring g_empty_string;
#define FATAL_EXIT() \ #define FATAL_EXIT() \
do { \ do { \
char exit_read_buff; \ char exit_read_buff; \
show_stackframe(L'E'); \ show_stackframe(); \
ignore_result(read(0, &exit_read_buff, 1)); \ ignore_result(read(0, &exit_read_buff, 1)); \
exit_without_destructors(1); \ exit_without_destructors(1); \
} while (0) } while (0)
@ -276,7 +276,7 @@ std::shared_ptr<T> move_to_sharedptr(T &&v) {
using cancel_checker_t = std::function<bool()>; using cancel_checker_t = std::function<bool()>;
/// Print a stack trace to stderr. /// Print a stack trace to stderr.
void show_stackframe(const wchar_t msg_level, int frame_count = 100, int skip_levels = 0); void show_stackframe(int frame_count = 100, int skip_levels = 0);
/// Returns a wide character string equivalent of the specified multibyte character string. /// Returns a wide character string equivalent of the specified multibyte character string.
/// ///