Skip to content
Snippets Groups Projects
Unverified Commit 84871888 authored by monojenkins's avatar monojenkins Committed by GitHub
Browse files

[2019-12] [merp] Add breadcrumb for StackHash (#19243)

* [merp] Add breadcrumb for StackHash

Contributes to https://github.com/mono/mono/issues/18715



Co-authored-by: default avatarAlexis Christoforides <alexis@thenull.net>
parent f2379f2d
No related branches found
Tags mono-6.10.0.96
No related merge requests found
......@@ -6513,6 +6513,9 @@ summarizer_state_term (SummarizerGlobalState *state, gchar **out, gchar *mem, si
mono_get_eh_callbacks ()->mono_summarize_managed_stack (threads [i]);
}
/* The value of the breadcrumb should match the "StackHash" value written by `mono_merp_write_fingerprint_payload` */
mono_create_crash_hash_breadcrumb (controlling);
MonoStateWriter writer;
memset (&writer, 0, sizeof (writer));
......
......@@ -156,6 +156,12 @@ file_for_dump_reason_breadcrumb (const char *directory, const char *dump_reason,
g_snprintf (buff, sizeof_buff, "%s%scrash_reason_%s", directory, G_DIR_SEPARATOR_S, dump_reason);
}
static void
file_for_hash_breadcrumb (const char *directory, MonoStackHash hashes, gchar *buff, size_t sizeof_buff)
{
g_snprintf (buff, sizeof_buff, "%s%scrash_hash_0x%" PRIx64 "", directory, G_DIR_SEPARATOR_S, (uint64_t)hashes.offset_rich_hash);
}
static void create_breadcrumb (const char *path)
{
int handle = g_open (path, O_WRONLY | O_CREAT, S_IWUSR | S_IRUSR | S_IRGRP | S_IROTH);
......@@ -184,6 +190,14 @@ create_dump_reason_breadcrumb (const char *dump_reason)
create_breadcrumb (out_file);
}
void
mono_create_crash_hash_breadcrumb (MonoThreadSummary *thread)
{
char out_file [200];
file_for_hash_breadcrumb (log.directory, thread->hashes, out_file, sizeof(out_file));
create_breadcrumb (out_file);
}
gboolean
mono_summarize_set_timeline_dir (const char *directory)
{
......
......@@ -123,6 +123,9 @@ mono_crash_save_failfast_msg (char *msg);
const char*
mono_crash_get_failfast_msg (void);
void
mono_create_crash_hash_breadcrumb (MonoThreadSummary *thread);
#endif // DISABLE_CRASH_REPORTING
// Dump context functions (enter/leave)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment