libdatadog 11.0.0.1.0 → 13.1.0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/lib/libdatadog/version.rb +1 -1
  3. data/vendor/{libdatadog-11.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-13.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/LICENSE-3rdparty.yml +4473 -593
  4. data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/bin/libdatadog-crashtracking-receiver +0 -0
  5. data/vendor/libdatadog-13.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/blazesym.h +1230 -0
  6. data/vendor/{libdatadog-11.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-13.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/common.h +531 -293
  7. data/vendor/libdatadog-13.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/crashtracker.h +436 -0
  8. data/vendor/{libdatadog-11.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-13.1.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu}/include/datadog/profiling.h +10 -275
  9. data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
  10. data/vendor/{libdatadog-11.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu → libdatadog-13.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/LICENSE-3rdparty.yml +4473 -593
  11. data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  12. data/vendor/libdatadog-13.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/blazesym.h +1230 -0
  13. data/vendor/{libdatadog-11.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-13.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/common.h +531 -293
  14. data/vendor/libdatadog-13.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/crashtracker.h +436 -0
  15. data/vendor/{libdatadog-11.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-13.1.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl}/include/datadog/profiling.h +10 -275
  16. data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
  17. data/vendor/{libdatadog-11.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl → libdatadog-13.1.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu}/LICENSE-3rdparty.yml +4473 -593
  18. data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/bin/libdatadog-crashtracking-receiver +0 -0
  19. data/vendor/libdatadog-13.1.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/blazesym.h +1230 -0
  20. data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/common.h +531 -293
  21. data/vendor/libdatadog-13.1.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/crashtracker.h +436 -0
  22. data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/profiling.h +10 -275
  23. data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so +0 -0
  24. data/vendor/{libdatadog-11.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu → libdatadog-13.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/LICENSE-3rdparty.yml +4473 -593
  25. data/vendor/libdatadog-13.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  26. data/vendor/libdatadog-13.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/blazesym.h +1230 -0
  27. data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/common.h +531 -293
  28. data/vendor/libdatadog-13.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/crashtracker.h +436 -0
  29. data/vendor/{libdatadog-11.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl → libdatadog-13.1.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl}/include/datadog/profiling.h +10 -275
  30. data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/libdatadog_profiling.so +0 -0
  31. metadata +46 -42
  32. data/vendor/libdatadog-11.0.0/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/blazesym.h +0 -1229
  33. data/vendor/libdatadog-11.0.0/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/blazesym.h +0 -1229
  34. data/vendor/libdatadog-11.0.0/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/blazesym.h +0 -1229
  35. data/vendor/libdatadog-11.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/bin/libdatadog-crashtracking-receiver +0 -0
  36. data/vendor/libdatadog-11.0.0/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/blazesym.h +0 -1229
  37. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/LICENSE +0 -0
  38. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/NOTICE +0 -0
  39. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/include/datadog/telemetry.h +0 -0
  40. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux/libdatadog-aarch64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -0
  41. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/LICENSE +0 -0
  42. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/NOTICE +0 -0
  43. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/include/datadog/telemetry.h +0 -0
  44. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/aarch64-linux-musl/libdatadog-aarch64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -0
  45. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/LICENSE +0 -0
  46. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/NOTICE +0 -0
  47. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/include/datadog/telemetry.h +0 -0
  48. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux/libdatadog-x86_64-unknown-linux-gnu/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -0
  49. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/LICENSE +0 -0
  50. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/NOTICE +0 -0
  51. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/include/datadog/telemetry.h +0 -0
  52. /data/vendor/{libdatadog-11.0.0 → libdatadog-13.1.0}/x86_64-linux-musl/libdatadog-x86_64-alpine-linux-musl/lib/pkgconfig/datadog_profiling_with_rpath.pc +0 -0
@@ -0,0 +1,436 @@
1
+ // Copyright 2021-Present Datadog, Inc. https://www.datadoghq.com/
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+
5
+ #ifndef DDOG_CRASHTRACKER_H
6
+ #define DDOG_CRASHTRACKER_H
7
+
8
+ #pragma once
9
+
10
+ #include <stdbool.h>
11
+ #include <stddef.h>
12
+ #include <stdint.h>
13
+ #include "common.h"
14
+
15
+ #ifdef __cplusplus
16
+ extern "C" {
17
+ #endif // __cplusplus
18
+
19
+ /**
20
+ * Cleans up after the crash-tracker:
21
+ * Unregister the crash handler, restore the previous handler (if any), and
22
+ * shut down the receiver. Note that the use of this function is optional:
23
+ * the receiver will automatically shutdown when the pipe is closed on program
24
+ * exit.
25
+ *
26
+ * # Preconditions
27
+ * This function assumes that the crashtracker has previously been
28
+ * initialized.
29
+ * # Safety
30
+ * Crash-tracking functions are not reentrant.
31
+ * No other crash-handler functions should be called concurrently.
32
+ * # Atomicity
33
+ * This function is not atomic. A crash during its execution may lead to
34
+ * unexpected crash-handling behaviour.
35
+ */
36
+ DDOG_CHECK_RETURN struct ddog_crasht_Result ddog_crasht_shutdown(void);
37
+
38
+ /**
39
+ * Reinitialize the crash-tracking infrastructure after a fork.
40
+ * This should be one of the first things done after a fork, to minimize the
41
+ * chance that a crash occurs between the fork, and this call.
42
+ * In particular, reset the counters that track the profiler state machine,
43
+ * and start a new receiver to collect data from this fork.
44
+ * NOTE: An alternative design would be to have a 1:many sidecar listening on a
45
+ * socket instead of 1:1 receiver listening on a pipe, but the only real
46
+ * advantage would be to have fewer processes in `ps -a`.
47
+ *
48
+ * # Preconditions
49
+ * This function assumes that the crash-tracker has previously been
50
+ * initialized.
51
+ * # Safety
52
+ * Crash-tracking functions are not reentrant.
53
+ * No other crash-handler functions should be called concurrently.
54
+ * # Atomicity
55
+ * This function is not atomic. A crash during its execution may lead to
56
+ * unexpected crash-handling behaviour.
57
+ */
58
+ DDOG_CHECK_RETURN
59
+ struct ddog_crasht_Result ddog_crasht_update_on_fork(struct ddog_crasht_Config config,
60
+ struct ddog_crasht_ReceiverConfig receiver_config,
61
+ struct ddog_crasht_Metadata metadata);
62
+
63
+ /**
64
+ * Initialize the crash-tracking infrastructure.
65
+ *
66
+ * # Preconditions
67
+ * None.
68
+ * # Safety
69
+ * Crash-tracking functions are not reentrant.
70
+ * No other crash-handler functions should be called concurrently.
71
+ * # Atomicity
72
+ * This function is not atomic. A crash during its execution may lead to
73
+ * unexpected crash-handling behaviour.
74
+ */
75
+ DDOG_CHECK_RETURN
76
+ struct ddog_crasht_Result ddog_crasht_init_with_receiver(struct ddog_crasht_Config config,
77
+ struct ddog_crasht_ReceiverConfig receiver_config,
78
+ struct ddog_crasht_Metadata metadata);
79
+
80
+ /**
81
+ * Initialize the crash-tracking infrastructure, writing to an unix socket in case of crash.
82
+ *
83
+ * # Preconditions
84
+ * None.
85
+ * # Safety
86
+ * Crash-tracking functions are not reentrant.
87
+ * No other crash-handler functions should be called concurrently.
88
+ * # Atomicity
89
+ * This function is not atomic. A crash during its execution may lead to
90
+ * unexpected crash-handling behaviour.
91
+ */
92
+ DDOG_CHECK_RETURN
93
+ struct ddog_crasht_Result ddog_crasht_init_with_unix_socket(struct ddog_crasht_Config config,
94
+ ddog_CharSlice socket_path,
95
+ struct ddog_crasht_Metadata metadata);
96
+
97
+ /**
98
+ * Resets all counters to 0.
99
+ * Expected to be used after a fork, to reset the counters on the child
100
+ * ATOMICITY:
101
+ * This is NOT ATOMIC.
102
+ * Should only be used when no conflicting updates can occur,
103
+ * e.g. after a fork but before profiling ops start on the child.
104
+ * # Safety
105
+ * No safety concerns.
106
+ */
107
+ DDOG_CHECK_RETURN struct ddog_crasht_Result ddog_crasht_reset_counters(void);
108
+
109
+ /**
110
+ * Atomically increments the count associated with `op`.
111
+ * Useful for tracking what operations were occuring when a crash occurred.
112
+ *
113
+ * # Safety
114
+ * No safety concerns.
115
+ */
116
+ DDOG_CHECK_RETURN struct ddog_crasht_Result ddog_crasht_begin_op(enum ddog_crasht_OpTypes op);
117
+
118
+ /**
119
+ * Atomically decrements the count associated with `op`.
120
+ * Useful for tracking what operations were occuring when a crash occurred.
121
+ *
122
+ * # Safety
123
+ * No safety concerns.
124
+ */
125
+ DDOG_CHECK_RETURN struct ddog_crasht_Result ddog_crasht_end_op(enum ddog_crasht_OpTypes op);
126
+
127
+ /**
128
+ * Resets all stored spans to 0.
129
+ * Expected to be used after a fork, to reset the spans on the child
130
+ * ATOMICITY:
131
+ * This is NOT ATOMIC.
132
+ * Should only be used when no conflicting updates can occur,
133
+ * e.g. after a fork but before profiling ops start on the child.
134
+ * # Safety
135
+ * No safety concerns.
136
+ */
137
+ DDOG_CHECK_RETURN struct ddog_crasht_Result ddog_crasht_clear_span_ids(void);
138
+
139
+ /**
140
+ * Resets all stored traces to 0.
141
+ * Expected to be used after a fork, to reset the traces on the child
142
+ * ATOMICITY:
143
+ * This is NOT ATOMIC.
144
+ * Should only be used when no conflicting updates can occur,
145
+ * e.g. after a fork but before profiling ops start on the child.
146
+ * # Safety
147
+ * No safety concerns.
148
+ */
149
+ DDOG_CHECK_RETURN struct ddog_crasht_Result ddog_crasht_clear_trace_ids(void);
150
+
151
+ /**
152
+ * Atomically registers an active traceId.
153
+ * Useful for tracking what operations were occurring when a crash occurred.
154
+ * 0 is reserved for "NoId"
155
+ * The set does not check for duplicates. Adding the same id twice is an error.
156
+ *
157
+ * Inputs:
158
+ * id<high/low>: the 128 bit id, broken into 2 64 bit chunks (see note)
159
+ *
160
+ * Returns:
161
+ * Ok(handle) on success. The handle is needed to later remove the id;
162
+ * Err() on failure. The most likely cause of failure is that the underlying set is full.
163
+ *
164
+ * Note: 128 bit ints in FFI were not stabilized until Rust 1.77
165
+ * https://blog.rust-lang.org/2024/03/30/i128-layout-update.html
166
+ * We're currently locked into 1.76.0, have to do an ugly workaround involving 2 64 bit ints
167
+ * until we can upgrade.
168
+ *
169
+ * # Safety
170
+ * No safety concerns.
171
+ */
172
+ DDOG_CHECK_RETURN
173
+ struct ddog_crasht_UsizeResult ddog_crasht_insert_trace_id(uint64_t id_high,
174
+ uint64_t id_low);
175
+
176
+ /**
177
+ * Atomically registers an active SpanId.
178
+ * Useful for tracking what operations were occurring when a crash occurred.
179
+ * 0 is reserved for "NoId".
180
+ * The set does not check for duplicates. Adding the same id twice is an error.
181
+ *
182
+ * Inputs:
183
+ * id<high/low>: the 128 bit id, broken into 2 64 bit chunks (see note)
184
+ *
185
+ * Returns:
186
+ * Ok(handle) on success. The handle is needed to later remove the id;
187
+ * Err() on failure. The most likely cause of failure is that the underlying set is full.
188
+ *
189
+ * Note: 128 bit ints in FFI were not stabilized until Rust 1.77
190
+ * https://blog.rust-lang.org/2024/03/30/i128-layout-update.html
191
+ * We're currently locked into 1.76.0, have to do an ugly workaround involving 2 64 bit ints
192
+ * until we can upgrade.
193
+ *
194
+ * # Safety
195
+ * No safety concerns.
196
+ */
197
+ DDOG_CHECK_RETURN
198
+ struct ddog_crasht_UsizeResult ddog_crasht_insert_span_id(uint64_t id_high,
199
+ uint64_t id_low);
200
+
201
+ /**
202
+ * Atomically removes a completed SpanId.
203
+ * Useful for tracking what operations were occurring when a crash occurred.
204
+ * 0 is reserved for "NoId"
205
+ *
206
+ * Inputs:
207
+ * id<high/low>: the 128 bit id, broken into 2 64 bit chunks (see note)
208
+ * idx: The handle for the id, from a previous successful call to `insert_span_id`.
209
+ * Attempting to remove the same element twice is an error.
210
+ * Returns:
211
+ * `Ok` on success.
212
+ * `Err` on failure. If `id` is not found at `idx`, `Err` will be returned and the set will not
213
+ * be modified.
214
+ *
215
+ * Note: 128 bit ints in FFI were not stabilized until Rust 1.77
216
+ * https://blog.rust-lang.org/2024/03/30/i128-layout-update.html
217
+ * We're currently locked into 1.76.0, have to do an ugly workaround involving 2 64 bit ints
218
+ * until we can upgrade.
219
+ *
220
+ * # Safety
221
+ * No safety concerns.
222
+ */
223
+ DDOG_CHECK_RETURN
224
+ struct ddog_crasht_Result ddog_crasht_remove_span_id(uint64_t id_high,
225
+ uint64_t id_low,
226
+ uintptr_t idx);
227
+
228
+ /**
229
+ * Atomically removes a completed TraceId.
230
+ * Useful for tracking what operations were occurring when a crash occurred.
231
+ * 0 is reserved for "NoId"
232
+ *
233
+ * Inputs:
234
+ * id<high/low>: the 128 bit id, broken into 2 64 bit chunks (see note)
235
+ * idx: The handle for the id, from a previous successful call to `insert_span_id`.
236
+ * Attempting to remove the same element twice is an error.
237
+ * Returns:
238
+ * `Ok` on success.
239
+ * `Err` on failure. If `id` is not found at `idx`, `Err` will be returned and the set will not
240
+ * be modified.
241
+ *
242
+ * Note: 128 bit ints in FFI were not stabilized until Rust 1.77
243
+ * https://blog.rust-lang.org/2024/03/30/i128-layout-update.html
244
+ * We're currently locked into 1.76.0, have to do an ugly workaround involving 2 64 bit ints
245
+ * until we can upgrade.
246
+ *
247
+ * # Safety
248
+ * No safety concerns.
249
+ */
250
+ DDOG_CHECK_RETURN
251
+ struct ddog_crasht_Result ddog_crasht_remove_trace_id(uint64_t id_high,
252
+ uint64_t id_low,
253
+ uintptr_t idx);
254
+
255
+ /**
256
+ * Create a new crashinfo, and returns an opaque reference to it.
257
+ * # Safety
258
+ * No safety issues.
259
+ */
260
+ DDOG_CHECK_RETURN struct ddog_crasht_CrashInfoNewResult ddog_crasht_CrashInfo_new(void);
261
+
262
+ /**
263
+ * # Safety
264
+ * The `crash_info` can be null, but if non-null it must point to a CrashInfo
265
+ * made by this module, which has not previously been dropped.
266
+ */
267
+ void ddog_crasht_CrashInfo_drop(struct ddog_crasht_CrashInfo *crashinfo);
268
+
269
+ /**
270
+ * Best effort attempt to normalize all `ip` on the stacktrace.
271
+ * `pid` must be the pid of the currently active process where the ips came from.
272
+ *
273
+ * # Safety
274
+ * `crashinfo` must be a valid pointer to a `CrashInfo` object.
275
+ */
276
+ DDOG_CHECK_RETURN
277
+ struct ddog_crasht_Result ddog_crasht_CrashInfo_normalize_ips(struct ddog_crasht_CrashInfo *crashinfo,
278
+ uint32_t pid);
279
+
280
+ /**
281
+ * Adds a "counter" variable, with the given value. Useful for determining if
282
+ * "interesting" operations were occurring when the crash did.
283
+ *
284
+ * # Safety
285
+ * `crashinfo` must be a valid pointer to a `CrashInfo` object.
286
+ * `name` should be a valid reference to a utf8 encoded String.
287
+ * The string is copied into the crashinfo, so it does not need to outlive this
288
+ * call.
289
+ */
290
+ DDOG_CHECK_RETURN
291
+ struct ddog_crasht_Result ddog_crasht_CrashInfo_add_counter(struct ddog_crasht_CrashInfo *crashinfo,
292
+ ddog_CharSlice name,
293
+ int64_t val);
294
+
295
+ /**
296
+ * Adds the contents of "file" to the crashinfo
297
+ *
298
+ * # Safety
299
+ * `crashinfo` must be a valid pointer to a `CrashInfo` object.
300
+ * `name` should be a valid reference to a utf8 encoded String.
301
+ * The string is copied into the crashinfo, so it does not need to outlive this
302
+ * call.
303
+ */
304
+ DDOG_CHECK_RETURN
305
+ struct ddog_crasht_Result ddog_crasht_CrashInfo_add_file(struct ddog_crasht_CrashInfo *crashinfo,
306
+ ddog_CharSlice filename);
307
+
308
+ /**
309
+ * Adds the tag with given "key" and "value" to the crashinfo
310
+ *
311
+ * # Safety
312
+ * `crashinfo` must be a valid pointer to a `CrashInfo` object.
313
+ * `key` should be a valid reference to a utf8 encoded String.
314
+ * `value` should be a valid reference to a utf8 encoded String.
315
+ * The string is copied into the crashinfo, so it does not need to outlive this
316
+ * call.
317
+ */
318
+ DDOG_CHECK_RETURN
319
+ struct ddog_crasht_Result ddog_crasht_CrashInfo_add_tag(struct ddog_crasht_CrashInfo *crashinfo,
320
+ ddog_CharSlice key,
321
+ ddog_CharSlice value);
322
+
323
+ /**
324
+ * Sets the crashinfo metadata
325
+ *
326
+ * # Safety
327
+ * `crashinfo` must be a valid pointer to a `CrashInfo` object.
328
+ * All references inside `metadata` must be valid.
329
+ * Strings are copied into the crashinfo, and do not need to outlive this call.
330
+ */
331
+ DDOG_CHECK_RETURN
332
+ struct ddog_crasht_Result ddog_crasht_CrashInfo_set_metadata(struct ddog_crasht_CrashInfo *crashinfo,
333
+ struct ddog_crasht_Metadata metadata);
334
+
335
+ /**
336
+ * Sets the crashinfo siginfo
337
+ *
338
+ * # Safety
339
+ * `crashinfo` must be a valid pointer to a `CrashInfo` object.
340
+ * All references inside `metadata` must be valid.
341
+ * Strings are copied into the crashinfo, and do not need to outlive this call.
342
+ */
343
+ DDOG_CHECK_RETURN
344
+ struct ddog_crasht_Result ddog_crasht_CrashInfo_set_siginfo(struct ddog_crasht_CrashInfo *crashinfo,
345
+ struct ddog_crasht_SigInfo siginfo);
346
+
347
+ /**
348
+ * If `thread_id` is empty, sets `stacktrace` as the default stacktrace.
349
+ * Otherwise, adds an additional stacktrace with id "thread_id".
350
+ *
351
+ * # Safety
352
+ * `crashinfo` must be a valid pointer to a `CrashInfo` object.
353
+ * All references inside `stacktraces` must be valid.
354
+ * Strings are copied into the crashinfo, and do not need to outlive this call.
355
+ */
356
+ DDOG_CHECK_RETURN
357
+ struct ddog_crasht_Result ddog_crasht_CrashInfo_set_stacktrace(struct ddog_crasht_CrashInfo *crashinfo,
358
+ ddog_CharSlice thread_id,
359
+ struct ddog_crasht_Slice_StackFrame stacktrace);
360
+
361
+ /**
362
+ * Sets the timestamp to the given unix timestamp
363
+ *
364
+ * # Safety
365
+ * `crashinfo` must be a valid pointer to a `CrashInfo` object.
366
+ */
367
+ DDOG_CHECK_RETURN
368
+ struct ddog_crasht_Result ddog_crasht_CrashInfo_set_timestamp(struct ddog_crasht_CrashInfo *crashinfo,
369
+ struct ddog_Timespec ts);
370
+
371
+ /**
372
+ * Sets the timestamp to the current time
373
+ *
374
+ * # Safety
375
+ * `crashinfo` must be a valid pointer to a `CrashInfo` object.
376
+ */
377
+ DDOG_CHECK_RETURN
378
+ struct ddog_crasht_Result ddog_crasht_CrashInfo_set_timestamp_to_now(struct ddog_crasht_CrashInfo *crashinfo);
379
+
380
+ /**
381
+ * Exports `crashinfo` to the backend at `endpoint`
382
+ * Note that we support the "file://" endpoint for local file output.
383
+ * # Safety
384
+ * `crashinfo` must be a valid pointer to a `CrashInfo` object.
385
+ */
386
+ DDOG_CHECK_RETURN
387
+ struct ddog_crasht_Result ddog_crasht_CrashInfo_upload_to_endpoint(struct ddog_crasht_CrashInfo *crashinfo,
388
+ const struct ddog_Endpoint *endpoint);
389
+
390
+ /**
391
+ * Demangles the string "name".
392
+ * If demangling fails, returns an empty string ""
393
+ *
394
+ * # Safety
395
+ * `name` should be a valid reference to a utf8 encoded String.
396
+ * The string is copied into the result, and does not need to outlive this call
397
+ */
398
+ DDOG_CHECK_RETURN
399
+ struct ddog_crasht_StringWrapperResult ddog_crasht_demangle(ddog_CharSlice name,
400
+ enum ddog_crasht_DemangleOptions options);
401
+
402
+ /**
403
+ * Receives data from a crash collector via a pipe on `stdin`, formats it into
404
+ * `CrashInfo` json, and emits it to the endpoint/file defined in `config`.
405
+ *
406
+ * At a high-level, this exists because doing anything in a
407
+ * signal handler is dangerous, so we fork a sidecar to do the stuff we aren't
408
+ * allowed to do in the handler.
409
+ *
410
+ * See comments in [crashtracker/lib.rs] for a full architecture description.
411
+ * # Safety
412
+ * No safety concerns
413
+ */
414
+ DDOG_CHECK_RETURN struct ddog_crasht_Result ddog_crasht_receiver_entry_point_stdin(void);
415
+
416
+ /**
417
+ * Receives data from a crash collector via a pipe on `stdin`, formats it into
418
+ * `CrashInfo` json, and emits it to the endpoint/file defined in `config`.
419
+ *
420
+ * At a high-level, this exists because doing anything in a
421
+ * signal handler is dangerous, so we fork a sidecar to do the stuff we aren't
422
+ * allowed to do in the handler.
423
+ *
424
+ * See comments in [profiling/crashtracker/mod.rs] for a full architecture
425
+ * description.
426
+ * # Safety
427
+ * No safety concerns
428
+ */
429
+ DDOG_CHECK_RETURN
430
+ struct ddog_crasht_Result ddog_crasht_receiver_entry_point_unix_socket(ddog_CharSlice socket_path);
431
+
432
+ #ifdef __cplusplus
433
+ } // extern "C"
434
+ #endif // __cplusplus
435
+
436
+ #endif /* DDOG_CRASHTRACKER_H */