diff options
author | Daan Leijen <daan@microsoft.com> | 2022-04-02 09:29:09 -0700 |
---|---|---|
committer | Daan Leijen <daan@microsoft.com> | 2022-04-02 09:29:09 -0700 |
commit | 73012bf654cfa23be6ef3c00648e203480b065ab (patch) | |
tree | 50aa30a5addf19d6d5114bf2b7219af36b7fb633 | |
parent | ccf117c43d11bce115c9672d50c370c7d35739a7 (diff) |
add thread id to trace, warning, and error messages
-rw-r--r-- | src/options.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/options.c b/src/options.c index c4ed91c..4a43335 100644 --- a/src/options.c +++ b/src/options.c @@ -322,11 +322,22 @@ void _mi_fprintf( mi_output_fun* out, void* arg, const char* fmt, ... ) { va_end(args); } +static void mi_vfprintf_thread(mi_output_fun* out, void* arg, const char* prefix, const char* fmt, va_list args) { + if (prefix != NULL && strlen(prefix) <= 32 && !_mi_is_main_thread()) { + char tprefix[64]; + snprintf(tprefix, sizeof(tprefix), "%sthread 0x%zx: ", prefix, _mi_thread_id()); + mi_vfprintf(out, arg, tprefix, fmt, args); + } + else { + mi_vfprintf(out, arg, prefix, fmt, args); + } +} + void _mi_trace_message(const char* fmt, ...) { if (mi_option_get(mi_option_verbose) <= 1) return; // only with verbose level 2 or higher va_list args; va_start(args, fmt); - mi_vfprintf(NULL, NULL, "mimalloc: ", fmt, args); + mi_vfprintf_thread(NULL, NULL, "mimalloc: ", fmt, args); va_end(args); } @@ -341,7 +352,7 @@ void _mi_verbose_message(const char* fmt, ...) { static void mi_show_error_message(const char* fmt, va_list args) { if (!mi_option_is_enabled(mi_option_show_errors) && !mi_option_is_enabled(mi_option_verbose)) return; if (mi_atomic_increment_acq_rel(&error_count) > mi_max_error_count) return; - mi_vfprintf(NULL, NULL, "mimalloc: error: ", fmt, args); + mi_vfprintf_thread(NULL, NULL, "mimalloc: error: ", fmt, args); } void _mi_warning_message(const char* fmt, ...) { @@ -349,7 +360,7 @@ void _mi_warning_message(const char* fmt, ...) { if (mi_atomic_increment_acq_rel(&warning_count) > mi_max_warning_count) return; va_list args; va_start(args,fmt); - mi_vfprintf(NULL, NULL, "mimalloc: warning: ", fmt, args); + mi_vfprintf_thread(NULL, NULL, "mimalloc: warning: ", fmt, args); va_end(args); } |