3 * Support for cooperative creation of unmanaged state dumps
6 * Alexander Kyte (alkyte@microsoft.com)
8 * (C) 2018 Microsoft, Inc.
11 #ifndef __MONO_UTILS_NATIVE_STATE__
12 #define __MONO_UTILS_NATIVE_STATE__
14 #ifndef DISABLE_CRASH_REPORTING
16 #include <mono/utils/mono-publib.h>
17 #include <mono/utils/mono-context.h>
18 #include <mono/metadata/threads-types.h>
19 #include <mono/utils/json.h>
21 #define MONO_NATIVE_STATE_PROTOCOL_VERSION "0.0.6"
26 MonoSummarySuspendHandshake
,
27 MonoSummaryUnmanagedStacks
,
28 MonoSummaryManagedStacks
,
29 MonoSummaryStateWriter
,
30 MonoSummaryStateWriterDone
,
31 MonoSummaryMerpWriter
,
32 MonoSummaryMerpInvoke
,
36 MonoSummaryDoubleFault
57 mono_summarize_set_timeline_dir (const char *directory
);
60 mono_summarize_timeline_start (const char *dump_reason
);
63 mono_summarize_timeline_phase_log (MonoSummaryStage stage
);
66 mono_summarize_double_fault_log (void);
69 mono_summarize_timeline_read_level (const char *directory
, gboolean clear
);
71 // Enable checked-build assertions on summary workflow
72 // Turns all potential hangs into instant faults
74 mono_summarize_toggle_assertions (gboolean enable
);
79 * These use static memory, can only be called once
83 mono_summarize_native_state_begin (MonoStateWriter
*writer
, gchar
*mem
, int size
);
86 mono_summarize_native_state_end (MonoStateWriter
*writer
);
89 mono_summarize_native_state_add_thread (MonoStateWriter
*writer
, MonoThreadSummary
*thread
, MonoContext
*ctx
, gboolean crashing_thread
);
92 * These use memory from the caller
95 mono_state_writer_init (MonoStateWriter
*writer
, gchar
*output_str
, int len
);
98 mono_native_state_init (MonoStateWriter
*writer
);
101 mono_native_state_emit (MonoStateWriter
*writer
);
104 mono_native_state_free (MonoStateWriter
*writer
, gboolean free_data
);
107 mono_native_state_add_thread (MonoStateWriter
*writer
, MonoThreadSummary
*thread
, MonoContext
*ctx
, gboolean first_thread
, gboolean crashing_thread
);
110 mono_crash_dump (const char *jsonFile
, MonoStackHash
*hashes
);
112 // Signal-safe file allocators
115 mono_state_alloc_mem (MonoStateMem
*mem
, long tag
, size_t size
);
118 mono_state_free_mem (MonoStateMem
*mem
);
121 mono_crash_save_failfast_msg (char *msg
);
124 mono_crash_get_failfast_msg (void);
127 mono_create_crash_hash_breadcrumb (MonoThreadSummary
*thread
);
129 #endif // DISABLE_CRASH_REPORTING
131 // Dump context functions (enter/leave)
134 mono_dump_start (void);
136 mono_dump_complete (void);
138 #endif // MONO_UTILS_NATIVE_STATE