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));
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);
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)
{
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)