Skip to content

Commit e98154e

Browse files
realFlowControlLeiyks
authored andcommitted
reset interrupt count when removing interrupt (#3455)
1 parent 3456dec commit e98154e

File tree

14 files changed

+566
-191
lines changed

14 files changed

+566
-191
lines changed

Cargo.lock

Lines changed: 121 additions & 72 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components-rs/common.h

Lines changed: 111 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -261,27 +261,6 @@ typedef struct ddog_Vec_Tag_ParseResult {
261261

262262
#define ddog_MultiTargetFetcher_DEFAULT_CLIENTS_LIMIT 100
263263

264-
typedef enum ddog_ConfigurationOrigin {
265-
DDOG_CONFIGURATION_ORIGIN_ENV_VAR,
266-
DDOG_CONFIGURATION_ORIGIN_CODE,
267-
DDOG_CONFIGURATION_ORIGIN_DD_CONFIG,
268-
DDOG_CONFIGURATION_ORIGIN_REMOTE_CONFIG,
269-
DDOG_CONFIGURATION_ORIGIN_DEFAULT,
270-
DDOG_CONFIGURATION_ORIGIN_LOCAL_STABLE_CONFIG,
271-
DDOG_CONFIGURATION_ORIGIN_FLEET_STABLE_CONFIG,
272-
} ddog_ConfigurationOrigin;
273-
274-
typedef enum ddog_EvaluateAt {
275-
DDOG_EVALUATE_AT_ENTRY,
276-
DDOG_EVALUATE_AT_EXIT,
277-
} ddog_EvaluateAt;
278-
279-
typedef enum ddog_InBodyLocation {
280-
DDOG_IN_BODY_LOCATION_NONE,
281-
DDOG_IN_BODY_LOCATION_START,
282-
DDOG_IN_BODY_LOCATION_END,
283-
} ddog_InBodyLocation;
284-
285264
typedef enum ddog_Log {
286265
DDOG_LOG_ERROR = 1,
287266
DDOG_LOG_WARN = 2,
@@ -296,13 +275,54 @@ typedef enum ddog_Log {
296275
DDOG_LOG_HOOK_TRACE = (5 | (4 << 4)),
297276
} ddog_Log;
298277

278+
typedef enum ddog_InBodyLocation {
279+
DDOG_IN_BODY_LOCATION_NONE,
280+
DDOG_IN_BODY_LOCATION_START,
281+
DDOG_IN_BODY_LOCATION_END,
282+
} ddog_InBodyLocation;
283+
284+
typedef enum ddog_EvaluateAt {
285+
DDOG_EVALUATE_AT_ENTRY,
286+
DDOG_EVALUATE_AT_EXIT,
287+
} ddog_EvaluateAt;
288+
299289
typedef enum ddog_MetricKind {
300290
DDOG_METRIC_KIND_COUNT,
301291
DDOG_METRIC_KIND_GAUGE,
302292
DDOG_METRIC_KIND_HISTOGRAM,
303293
DDOG_METRIC_KIND_DISTRIBUTION,
304294
} ddog_MetricKind;
305295

296+
typedef enum ddog_SpanProbeTarget {
297+
DDOG_SPAN_PROBE_TARGET_ACTIVE,
298+
DDOG_SPAN_PROBE_TARGET_ROOT,
299+
} ddog_SpanProbeTarget;
300+
301+
typedef enum ddog_ProbeStatus {
302+
DDOG_PROBE_STATUS_RECEIVED,
303+
DDOG_PROBE_STATUS_INSTALLED,
304+
DDOG_PROBE_STATUS_EMITTING,
305+
DDOG_PROBE_STATUS_ERROR,
306+
DDOG_PROBE_STATUS_BLOCKED,
307+
DDOG_PROBE_STATUS_WARNING,
308+
} ddog_ProbeStatus;
309+
310+
typedef enum ddog_ConfigurationOrigin {
311+
DDOG_CONFIGURATION_ORIGIN_ENV_VAR,
312+
DDOG_CONFIGURATION_ORIGIN_CODE,
313+
DDOG_CONFIGURATION_ORIGIN_DD_CONFIG,
314+
DDOG_CONFIGURATION_ORIGIN_REMOTE_CONFIG,
315+
DDOG_CONFIGURATION_ORIGIN_DEFAULT,
316+
DDOG_CONFIGURATION_ORIGIN_LOCAL_STABLE_CONFIG,
317+
DDOG_CONFIGURATION_ORIGIN_FLEET_STABLE_CONFIG,
318+
} ddog_ConfigurationOrigin;
319+
320+
typedef enum ddog_MetricType {
321+
DDOG_METRIC_TYPE_GAUGE,
322+
DDOG_METRIC_TYPE_COUNT,
323+
DDOG_METRIC_TYPE_DISTRIBUTION,
324+
} ddog_MetricType;
325+
306326
typedef enum ddog_MetricNamespace {
307327
DDOG_METRIC_NAMESPACE_TRACERS,
308328
DDOG_METRIC_NAMESPACE_PROFILERS,
@@ -317,20 +337,16 @@ typedef enum ddog_MetricNamespace {
317337
DDOG_METRIC_NAMESPACE_SIDECAR,
318338
} ddog_MetricNamespace;
319339

320-
typedef enum ddog_MetricType {
321-
DDOG_METRIC_TYPE_GAUGE,
322-
DDOG_METRIC_TYPE_COUNT,
323-
DDOG_METRIC_TYPE_DISTRIBUTION,
324-
} ddog_MetricType;
325-
326-
typedef enum ddog_ProbeStatus {
327-
DDOG_PROBE_STATUS_RECEIVED,
328-
DDOG_PROBE_STATUS_INSTALLED,
329-
DDOG_PROBE_STATUS_EMITTING,
330-
DDOG_PROBE_STATUS_ERROR,
331-
DDOG_PROBE_STATUS_BLOCKED,
332-
DDOG_PROBE_STATUS_WARNING,
333-
} ddog_ProbeStatus;
340+
typedef enum ddog_RemoteConfigProduct {
341+
DDOG_REMOTE_CONFIG_PRODUCT_AGENT_CONFIG,
342+
DDOG_REMOTE_CONFIG_PRODUCT_AGENT_TASK,
343+
DDOG_REMOTE_CONFIG_PRODUCT_APM_TRACING,
344+
DDOG_REMOTE_CONFIG_PRODUCT_ASM,
345+
DDOG_REMOTE_CONFIG_PRODUCT_ASM_DATA,
346+
DDOG_REMOTE_CONFIG_PRODUCT_ASM_DD,
347+
DDOG_REMOTE_CONFIG_PRODUCT_ASM_FEATURES,
348+
DDOG_REMOTE_CONFIG_PRODUCT_LIVE_DEBUGGER,
349+
} ddog_RemoteConfigProduct;
334350

335351
typedef enum ddog_RemoteConfigCapabilities {
336352
DDOG_REMOTE_CONFIG_CAPABILITIES_ASM_ACTIVATION = 1,
@@ -378,22 +394,6 @@ typedef enum ddog_RemoteConfigCapabilities {
378394
DDOG_REMOTE_CONFIG_CAPABILITIES_ASM_TRACE_TAGGING_RULES = 43,
379395
} ddog_RemoteConfigCapabilities;
380396

381-
typedef enum ddog_RemoteConfigProduct {
382-
DDOG_REMOTE_CONFIG_PRODUCT_AGENT_CONFIG,
383-
DDOG_REMOTE_CONFIG_PRODUCT_AGENT_TASK,
384-
DDOG_REMOTE_CONFIG_PRODUCT_APM_TRACING,
385-
DDOG_REMOTE_CONFIG_PRODUCT_ASM,
386-
DDOG_REMOTE_CONFIG_PRODUCT_ASM_DATA,
387-
DDOG_REMOTE_CONFIG_PRODUCT_ASM_DD,
388-
DDOG_REMOTE_CONFIG_PRODUCT_ASM_FEATURES,
389-
DDOG_REMOTE_CONFIG_PRODUCT_LIVE_DEBUGGER,
390-
} ddog_RemoteConfigProduct;
391-
392-
typedef enum ddog_SpanProbeTarget {
393-
DDOG_SPAN_PROBE_TARGET_ACTIVE,
394-
DDOG_SPAN_PROBE_TARGET_ROOT,
395-
} ddog_SpanProbeTarget;
396-
397397
typedef struct ddog_DebuggerPayload ddog_DebuggerPayload;
398398

399399
typedef struct ddog_DslString ddog_DslString;
@@ -760,17 +760,17 @@ typedef struct ddog_DebuggerValue ddog_DebuggerValue;
760760

761761
#define ddog_EVALUATOR_RESULT_REDACTED (const void*)-2
762762

763-
typedef enum ddog_DebuggerType {
764-
DDOG_DEBUGGER_TYPE_DIAGNOSTICS,
765-
DDOG_DEBUGGER_TYPE_LOGS,
766-
} ddog_DebuggerType;
767-
768763
typedef enum ddog_FieldType {
769764
DDOG_FIELD_TYPE_STATIC,
770765
DDOG_FIELD_TYPE_ARG,
771766
DDOG_FIELD_TYPE_LOCAL,
772767
} ddog_FieldType;
773768

769+
typedef enum ddog_DebuggerType {
770+
DDOG_DEBUGGER_TYPE_DIAGNOSTICS,
771+
DDOG_DEBUGGER_TYPE_LOGS,
772+
} ddog_DebuggerType;
773+
774774
typedef struct ddog_Entry ddog_Entry;
775775

776776
typedef struct ddog_HashMap_CowStr__Value ddog_HashMap_CowStr__Value;
@@ -899,16 +899,6 @@ typedef struct ddog_OwnedCharSlice {
899899
void (*free)(ddog_CharSlice);
900900
} ddog_OwnedCharSlice;
901901

902-
typedef enum ddog_LogLevel {
903-
DDOG_LOG_LEVEL_ERROR,
904-
DDOG_LOG_LEVEL_WARN,
905-
DDOG_LOG_LEVEL_DEBUG,
906-
} ddog_LogLevel;
907-
908-
typedef enum ddog_TelemetryWorkerBuilderBoolProperty {
909-
DDOG_TELEMETRY_WORKER_BUILDER_BOOL_PROPERTY_CONFIG_TELEMETRY_DEBUG_LOGGING_ENABLED,
910-
} ddog_TelemetryWorkerBuilderBoolProperty;
911-
912902
typedef enum ddog_TelemetryWorkerBuilderEndpointProperty {
913903
DDOG_TELEMETRY_WORKER_BUILDER_ENDPOINT_PROPERTY_CONFIG_ENDPOINT,
914904
} ddog_TelemetryWorkerBuilderEndpointProperty;
@@ -927,6 +917,16 @@ typedef enum ddog_TelemetryWorkerBuilderStrProperty {
927917
DDOG_TELEMETRY_WORKER_BUILDER_STR_PROPERTY_RUNTIME_ID,
928918
} ddog_TelemetryWorkerBuilderStrProperty;
929919

920+
typedef enum ddog_TelemetryWorkerBuilderBoolProperty {
921+
DDOG_TELEMETRY_WORKER_BUILDER_BOOL_PROPERTY_CONFIG_TELEMETRY_DEBUG_LOGGING_ENABLED,
922+
} ddog_TelemetryWorkerBuilderBoolProperty;
923+
924+
typedef enum ddog_LogLevel {
925+
DDOG_LOG_LEVEL_ERROR,
926+
DDOG_LOG_LEVEL_WARN,
927+
DDOG_LOG_LEVEL_DEBUG,
928+
} ddog_LogLevel;
929+
930930
typedef struct ddog_TelemetryWorkerBuilder ddog_TelemetryWorkerBuilder;
931931

932932
/**
@@ -1045,29 +1045,28 @@ typedef struct ddog_SenderParameters {
10451045
ddog_CharSlice url;
10461046
} ddog_SenderParameters;
10471047

1048-
typedef enum ddog_crasht_BuildIdType {
1049-
DDOG_CRASHT_BUILD_ID_TYPE_GNU,
1050-
DDOG_CRASHT_BUILD_ID_TYPE_GO,
1051-
DDOG_CRASHT_BUILD_ID_TYPE_PDB,
1052-
DDOG_CRASHT_BUILD_ID_TYPE_SHA1,
1053-
} ddog_crasht_BuildIdType;
1054-
1055-
typedef enum ddog_crasht_DemangleOptions {
1056-
DDOG_CRASHT_DEMANGLE_OPTIONS_COMPLETE,
1057-
DDOG_CRASHT_DEMANGLE_OPTIONS_NAME_ONLY,
1058-
} ddog_crasht_DemangleOptions;
1059-
1060-
typedef enum ddog_crasht_ErrorKind {
1061-
DDOG_CRASHT_ERROR_KIND_PANIC,
1062-
DDOG_CRASHT_ERROR_KIND_UNHANDLED_EXCEPTION,
1063-
DDOG_CRASHT_ERROR_KIND_UNIX_SIGNAL,
1064-
} ddog_crasht_ErrorKind;
1065-
1066-
typedef enum ddog_crasht_FileType {
1067-
DDOG_CRASHT_FILE_TYPE_APK,
1068-
DDOG_CRASHT_FILE_TYPE_ELF,
1069-
DDOG_CRASHT_FILE_TYPE_PE,
1070-
} ddog_crasht_FileType;
1048+
/**
1049+
* Stacktrace collection occurs in the context of a crashing process.
1050+
* If the stack is sufficiently corruputed, it is possible (but unlikely),
1051+
* for stack trace collection itself to crash.
1052+
* We recommend fully enabling stacktrace collection, but having an environment
1053+
* variable to allow downgrading the collector.
1054+
*/
1055+
typedef enum ddog_crasht_StacktraceCollection {
1056+
/**
1057+
* Stacktrace collection occurs in the
1058+
*/
1059+
DDOG_CRASHT_STACKTRACE_COLLECTION_DISABLED,
1060+
DDOG_CRASHT_STACKTRACE_COLLECTION_WITHOUT_SYMBOLS,
1061+
/**
1062+
* This option uses `backtrace::resolve_frame_unsynchronized()` to gather symbol information
1063+
* and also unwind inlined functions. Enabling this feature will not only provide symbolic
1064+
* details, but may also yield additional or less stack frames compared to other
1065+
* configurations.
1066+
*/
1067+
DDOG_CRASHT_STACKTRACE_COLLECTION_ENABLED_WITH_INPROCESS_SYMBOLS,
1068+
DDOG_CRASHT_STACKTRACE_COLLECTION_ENABLED_WITH_SYMBOLS_IN_RECEIVER,
1069+
} ddog_crasht_StacktraceCollection;
10711070

10721071
/**
10731072
* This enum represents operations a the tracked library might be engaged in.
@@ -1092,6 +1091,12 @@ typedef enum ddog_crasht_OpTypes {
10921091
DDOG_CRASHT_OP_TYPES_SIZE,
10931092
} ddog_crasht_OpTypes;
10941093

1094+
typedef enum ddog_crasht_ErrorKind {
1095+
DDOG_CRASHT_ERROR_KIND_PANIC,
1096+
DDOG_CRASHT_ERROR_KIND_UNHANDLED_EXCEPTION,
1097+
DDOG_CRASHT_ERROR_KIND_UNIX_SIGNAL,
1098+
} ddog_crasht_ErrorKind;
1099+
10951100
/**
10961101
* See https://man7.org/linux/man-pages/man2/sigaction.2.html
10971102
* MUST REMAIN IN SYNC WITH THE ENUM IN emit_sigcodes.c
@@ -1164,28 +1169,23 @@ typedef enum ddog_crasht_SignalNames {
11641169
DDOG_CRASHT_SIGNAL_NAMES_UNKNOWN,
11651170
} ddog_crasht_SignalNames;
11661171

1167-
/**
1168-
* Stacktrace collection occurs in the context of a crashing process.
1169-
* If the stack is sufficiently corruputed, it is possible (but unlikely),
1170-
* for stack trace collection itself to crash.
1171-
* We recommend fully enabling stacktrace collection, but having an environment
1172-
* variable to allow downgrading the collector.
1173-
*/
1174-
typedef enum ddog_crasht_StacktraceCollection {
1175-
/**
1176-
* Stacktrace collection occurs in the
1177-
*/
1178-
DDOG_CRASHT_STACKTRACE_COLLECTION_DISABLED,
1179-
DDOG_CRASHT_STACKTRACE_COLLECTION_WITHOUT_SYMBOLS,
1180-
/**
1181-
* This option uses `backtrace::resolve_frame_unsynchronized()` to gather symbol information
1182-
* and also unwind inlined functions. Enabling this feature will not only provide symbolic
1183-
* details, but may also yield additional or less stack frames compared to other
1184-
* configurations.
1185-
*/
1186-
DDOG_CRASHT_STACKTRACE_COLLECTION_ENABLED_WITH_INPROCESS_SYMBOLS,
1187-
DDOG_CRASHT_STACKTRACE_COLLECTION_ENABLED_WITH_SYMBOLS_IN_RECEIVER,
1188-
} ddog_crasht_StacktraceCollection;
1172+
typedef enum ddog_crasht_BuildIdType {
1173+
DDOG_CRASHT_BUILD_ID_TYPE_GNU,
1174+
DDOG_CRASHT_BUILD_ID_TYPE_GO,
1175+
DDOG_CRASHT_BUILD_ID_TYPE_PDB,
1176+
DDOG_CRASHT_BUILD_ID_TYPE_SHA1,
1177+
} ddog_crasht_BuildIdType;
1178+
1179+
typedef enum ddog_crasht_FileType {
1180+
DDOG_CRASHT_FILE_TYPE_APK,
1181+
DDOG_CRASHT_FILE_TYPE_ELF,
1182+
DDOG_CRASHT_FILE_TYPE_PE,
1183+
} ddog_crasht_FileType;
1184+
1185+
typedef enum ddog_crasht_DemangleOptions {
1186+
DDOG_CRASHT_DEMANGLE_OPTIONS_COMPLETE,
1187+
DDOG_CRASHT_DEMANGLE_OPTIONS_NAME_ONLY,
1188+
} ddog_crasht_DemangleOptions;
11891189

11901190
typedef struct ddog_crasht_CrashInfo ddog_crasht_CrashInfo;
11911191

components-rs/crashtracker.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,16 @@ DDOG_CHECK_RETURN
410410
struct ddog_VoidResult ddog_crasht_CrashInfo_resolve_names(struct ddog_crasht_Handle_CrashInfo *crash_info,
411411
uint32_t pid);
412412

413+
/**
414+
* # Safety
415+
* The `crash_info` can be null, but if non-null it must point to a Builder made by this module,
416+
* which has not previously been dropped.
417+
* This function will:
418+
*/
419+
DDOG_CHECK_RETURN
420+
struct ddog_VoidResult ddog_crasht_CrashInfo_enrich_callstacks(struct ddog_crasht_Handle_CrashInfo *crash_info,
421+
uint32_t pid);
422+
413423
/**
414424
* # Safety
415425
* The `crash_info` can be null, but if non-null it must point to a Builder made by this module,

components-rs/sidecar.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,12 +90,13 @@ void ddog_remote_config_reader_drop(struct ddog_RemoteConfigReader*);
9090

9191
void ddog_sidecar_transport_drop(struct ddog_SidecarTransport*);
9292

93-
/**
94-
* # Safety
95-
* Caller must ensure the process is safe to fork, at the time when this method is called
96-
*/
9793
ddog_MaybeError ddog_sidecar_connect(struct ddog_SidecarTransport **connection);
9894

95+
ddog_MaybeError ddog_sidecar_connect_master(int32_t master_pid);
96+
97+
ddog_MaybeError ddog_sidecar_connect_worker(int32_t master_pid,
98+
struct ddog_SidecarTransport **connection);
99+
99100
ddog_MaybeError ddog_sidecar_ping(struct ddog_SidecarTransport **transport);
100101

101102
ddog_MaybeError ddog_sidecar_flush_traces(struct ddog_SidecarTransport **transport);

config.m4

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ if test "$PHP_DDTRACE" != "no"; then
207207
ext/remote_config.c \
208208
ext/serializer.c \
209209
ext/sidecar.c \
210+
ext/sidecar_shm.c \
210211
ext/signals.c \
211212
ext/span.c \
212213
ext/startup_logging.c \

config.w32

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ if (PHP_DDTRACE != 'no') {
5454
DDTRACE_EXT_SOURCES += " remote_config.c";
5555
DDTRACE_EXT_SOURCES += " serializer.c";
5656
DDTRACE_EXT_SOURCES += " sidecar.c";
57+
DDTRACE_EXT_SOURCES += " sidecar_shm.c";
5758
DDTRACE_EXT_SOURCES += " span.c";
5859
DDTRACE_EXT_SOURCES += " startup_logging.c";
5960
DDTRACE_EXT_SOURCES += " telemetry.c";

0 commit comments

Comments
 (0)