Skip to content

Commit

Permalink
Try un-flaking unix socket proxy tests
Browse files Browse the repository at this point in the history
Signed-off-by: Bob Weinand <bob.weinand@datadoghq.com>
  • Loading branch information
bwoebi committed Feb 7, 2025
1 parent 8154bb8 commit ce361a9
Show file tree
Hide file tree
Showing 11 changed files with 150 additions and 118 deletions.
4 changes: 4 additions & 0 deletions .circleci/continue_config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5319,6 +5319,10 @@ workflows:
- test_c_disabled
- test_internal_api_randomized
- test_opcache
exclude:
# apparently for no discernible reason, on PHP 8.1 valgrind thinks some extensions are loaded, but they aren't. We anyway test sasn, so good enough, I guess.
- php_major_minor: '8.1'
make_target: test_c2php

- test:
requires: [ 'Prepare Code' ]
Expand Down
3 changes: 3 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ install_appsec:
install_all: install install_ini

run_tests: $(TEST_FILES) $(TEST_STUB_FILES) $(BUILD_DIR)/run-tests.php
$(ALL_TEST_ENV_OVERRIDE) $(TESTS)
$(ALL_TEST_ENV_OVERRIDE) $(RUN_TESTS_CMD) $(TESTS)

test_c: $(SO_FILE) $(TEST_FILES) $(TEST_STUB_FILES) $(BUILD_DIR)/run-tests.php
$(if $(ASAN), USE_ZEND_ALLOC=0 USE_TRACKED_ALLOC=1 LSAN_OPTIONS=fast_unwind_on_malloc=0$${LSAN_OPTIONS:+$(,)$${LSAN_OPTIONS}}) $(ALL_TEST_ENV_OVERRIDE) $(RUN_TESTS_CMD) -d extension=$(SO_FILE) $(BUILD_DIR)/$(subst $(BUILD_DIR_NAME)/,,$(TESTS))
Expand Down
111 changes: 23 additions & 88 deletions components-rs/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -870,7 +870,6 @@ typedef enum ddog_crasht_BuildIdType {
DDOG_CRASHT_BUILD_ID_TYPE_GNU,
DDOG_CRASHT_BUILD_ID_TYPE_GO,
DDOG_CRASHT_BUILD_ID_TYPE_PDB,
DDOG_CRASHT_BUILD_ID_TYPE_PE,
DDOG_CRASHT_BUILD_ID_TYPE_SHA1,
} ddog_crasht_BuildIdType;

Expand All @@ -888,7 +887,7 @@ typedef enum ddog_crasht_ErrorKind {
typedef enum ddog_crasht_FileType {
DDOG_CRASHT_FILE_TYPE_APK,
DDOG_CRASHT_FILE_TYPE_ELF,
DDOG_CRASHT_FILE_TYPE_PDB,
DDOG_CRASHT_FILE_TYPE_PE,
} ddog_crasht_FileType;

/**
Expand Down Expand Up @@ -1116,38 +1115,13 @@ typedef struct ddog_crasht_Handle_CrashInfoBuilder {
struct ddog_crasht_CrashInfoBuilder *inner;
} ddog_crasht_Handle_CrashInfoBuilder;

/**
* A generic result type for when an operation may fail,
* or may return <T> in case of success.
*/
typedef enum ddog_crasht_Result_HandleCrashInfoBuilder_Tag {
DDOG_CRASHT_RESULT_HANDLE_CRASH_INFO_BUILDER_OK_HANDLE_CRASH_INFO_BUILDER,
DDOG_CRASHT_RESULT_HANDLE_CRASH_INFO_BUILDER_ERR_HANDLE_CRASH_INFO_BUILDER,
} ddog_crasht_Result_HandleCrashInfoBuilder_Tag;
typedef enum ddog_crasht_CrashInfo_NewResult_Tag {
DDOG_CRASHT_CRASH_INFO_NEW_RESULT_OK,
DDOG_CRASHT_CRASH_INFO_NEW_RESULT_ERR,
} ddog_crasht_CrashInfo_NewResult_Tag;

typedef struct ddog_crasht_Result_HandleCrashInfoBuilder {
ddog_crasht_Result_HandleCrashInfoBuilder_Tag tag;
union {
struct {
struct ddog_crasht_Handle_CrashInfoBuilder ok;
};
struct {
struct ddog_Error err;
};
};
} ddog_crasht_Result_HandleCrashInfoBuilder;

/**
* A generic result type for when an operation may fail,
* or may return <T> in case of success.
*/
typedef enum ddog_crasht_Result_HandleCrashInfo_Tag {
DDOG_CRASHT_RESULT_HANDLE_CRASH_INFO_OK_HANDLE_CRASH_INFO,
DDOG_CRASHT_RESULT_HANDLE_CRASH_INFO_ERR_HANDLE_CRASH_INFO,
} ddog_crasht_Result_HandleCrashInfo_Tag;

typedef struct ddog_crasht_Result_HandleCrashInfo {
ddog_crasht_Result_HandleCrashInfo_Tag tag;
typedef struct ddog_crasht_CrashInfo_NewResult {
ddog_crasht_CrashInfo_NewResult_Tag tag;
union {
struct {
struct ddog_crasht_Handle_CrashInfo ok;
Expand All @@ -1156,7 +1130,7 @@ typedef struct ddog_crasht_Result_HandleCrashInfo {
struct ddog_Error err;
};
};
} ddog_crasht_Result_HandleCrashInfo;
} ddog_crasht_CrashInfo_NewResult;

typedef struct ddog_crasht_OsInfo {
ddog_CharSlice architecture;
Expand Down Expand Up @@ -1213,17 +1187,13 @@ typedef struct ddog_crasht_Handle_StackFrame {
struct ddog_crasht_StackFrame *inner;
} ddog_crasht_Handle_StackFrame;

/**
* A generic result type for when an operation may fail,
* or may return <T> in case of success.
*/
typedef enum ddog_crasht_Result_HandleStackFrame_Tag {
DDOG_CRASHT_RESULT_HANDLE_STACK_FRAME_OK_HANDLE_STACK_FRAME,
DDOG_CRASHT_RESULT_HANDLE_STACK_FRAME_ERR_HANDLE_STACK_FRAME,
} ddog_crasht_Result_HandleStackFrame_Tag;
typedef enum ddog_crasht_StackFrame_NewResult_Tag {
DDOG_CRASHT_STACK_FRAME_NEW_RESULT_OK,
DDOG_CRASHT_STACK_FRAME_NEW_RESULT_ERR,
} ddog_crasht_StackFrame_NewResult_Tag;

typedef struct ddog_crasht_Result_HandleStackFrame {
ddog_crasht_Result_HandleStackFrame_Tag tag;
typedef struct ddog_crasht_StackFrame_NewResult {
ddog_crasht_StackFrame_NewResult_Tag tag;
union {
struct {
struct ddog_crasht_Handle_StackFrame ok;
Expand All @@ -1232,59 +1202,24 @@ typedef struct ddog_crasht_Result_HandleStackFrame {
struct ddog_Error err;
};
};
} ddog_crasht_Result_HandleStackFrame;

/**
* A generic result type for when an operation may fail,
* or may return <T> in case of success.
*/
typedef enum ddog_crasht_Result_HandleStackTrace_Tag {
DDOG_CRASHT_RESULT_HANDLE_STACK_TRACE_OK_HANDLE_STACK_TRACE,
DDOG_CRASHT_RESULT_HANDLE_STACK_TRACE_ERR_HANDLE_STACK_TRACE,
} ddog_crasht_Result_HandleStackTrace_Tag;

typedef struct ddog_crasht_Result_HandleStackTrace {
ddog_crasht_Result_HandleStackTrace_Tag tag;
union {
struct {
struct ddog_crasht_Handle_StackTrace ok;
};
struct {
struct ddog_Error err;
};
};
} ddog_crasht_Result_HandleStackTrace;
} ddog_crasht_StackFrame_NewResult;

/**
* A wrapper for returning owned strings from FFI
*/
typedef struct ddog_crasht_StringWrapper {
/**
* This is a String stuffed into the vec.
*/
struct ddog_Vec_U8 message;
} ddog_crasht_StringWrapper;

/**
* A generic result type for when an operation may fail,
* or may return <T> in case of success.
*/
typedef enum ddog_crasht_Result_StringWrapper_Tag {
DDOG_CRASHT_RESULT_STRING_WRAPPER_OK_STRING_WRAPPER,
DDOG_CRASHT_RESULT_STRING_WRAPPER_ERR_STRING_WRAPPER,
} ddog_crasht_Result_StringWrapper_Tag;
typedef enum ddog_StringWrapperResult_Tag {
DDOG_STRING_WRAPPER_RESULT_OK,
DDOG_STRING_WRAPPER_RESULT_ERR,
} ddog_StringWrapperResult_Tag;

typedef struct ddog_crasht_Result_StringWrapper {
ddog_crasht_Result_StringWrapper_Tag tag;
typedef struct ddog_StringWrapperResult {
ddog_StringWrapperResult_Tag tag;
union {
struct {
struct ddog_crasht_StringWrapper ok;
struct ddog_StringWrapper ok;
};
struct {
struct ddog_Error err;
};
};
} ddog_crasht_Result_StringWrapper;
} ddog_StringWrapperResult;

#ifdef __cplusplus
extern "C" {
Expand Down
97 changes: 86 additions & 11 deletions components-rs/crashtracker.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,40 @@
#include <stdint.h>
#include "common.h"

typedef enum ddog_crasht_CrashInfoBuilder_NewResult_Tag {
DDOG_CRASHT_CRASH_INFO_BUILDER_NEW_RESULT_OK,
DDOG_CRASHT_CRASH_INFO_BUILDER_NEW_RESULT_ERR,
} ddog_crasht_CrashInfoBuilder_NewResult_Tag;

typedef struct ddog_crasht_CrashInfoBuilder_NewResult {
ddog_crasht_CrashInfoBuilder_NewResult_Tag tag;
union {
struct {
struct ddog_crasht_Handle_CrashInfoBuilder ok;
};
struct {
struct ddog_Error err;
};
};
} ddog_crasht_CrashInfoBuilder_NewResult;

typedef enum ddog_crasht_StackTrace_NewResult_Tag {
DDOG_CRASHT_STACK_TRACE_NEW_RESULT_OK,
DDOG_CRASHT_STACK_TRACE_NEW_RESULT_ERR,
} ddog_crasht_StackTrace_NewResult_Tag;

typedef struct ddog_crasht_StackTrace_NewResult {
ddog_crasht_StackTrace_NewResult_Tag tag;
union {
struct {
struct ddog_crasht_Handle_StackTrace ok;
};
struct {
struct ddog_Error err;
};
};
} ddog_crasht_StackTrace_NewResult;

#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
Expand Down Expand Up @@ -92,6 +126,47 @@ DDOG_CHECK_RETURN
struct ddog_VoidResult ddog_crasht_init_without_receiver(struct ddog_crasht_Config config,
struct ddog_crasht_Metadata metadata);

/**
* Removes all existing additional tags
* Expected to be used after a fork, to reset the additional tags on the child
* ATOMICITY:
* This is NOT ATOMIC.
* Should only be used when no conflicting updates can occur,
* e.g. after a fork but before profiling ops start on the child.
* # Safety
* No safety concerns.
*/
DDOG_CHECK_RETURN struct ddog_VoidResult ddog_crasht_clear_additional_tags(void);

/**
* Atomically registers a string as an additional tag.
* Useful for tracking what operations were occurring when a crash occurred.
* The set does not check for duplicates.
*
* Returns:
* Ok(handle) on success. The handle is needed to later remove the id;
* Err() on failure. The most likely cause of failure is that the underlying set is full.
*
* # Safety
* The string argument must be valid.
*/
DDOG_CHECK_RETURN
struct ddog_crasht_Result_Usize ddog_crasht_insert_additional_tag(ddog_CharSlice s);

/**
* Atomically removes a completed SpanId.
* Useful for tracking what operations were occurring when a crash occurred.
* 0 is reserved for "NoId"
*
* Returns:
* `Ok` on success.
* `Err` on failure.
*
* # Safety
* No safety concerns.
*/
DDOG_CHECK_RETURN struct ddog_VoidResult ddog_crasht_remove_additional_tag(uintptr_t idx);

/**
* Resets all counters to 0.
* Expected to be used after a fork, to reset the counters on the child
Expand Down Expand Up @@ -291,7 +366,7 @@ struct ddog_VoidResult ddog_crasht_CrashInfo_upload_to_endpoint(struct ddog_cras
* No safety issues.
*/
DDOG_CHECK_RETURN
struct ddog_crasht_Result_HandleCrashInfoBuilder ddog_crasht_CrashInfoBuilder_new(void);
struct ddog_crasht_CrashInfoBuilder_NewResult ddog_crasht_CrashInfoBuilder_new(void);

/**
* # Safety
Expand All @@ -306,7 +381,7 @@ void ddog_crasht_CrashInfoBuilder_drop(struct ddog_crasht_Handle_CrashInfoBuilde
* which has not previously been dropped.
*/
DDOG_CHECK_RETURN
struct ddog_crasht_Result_HandleCrashInfo ddog_crasht_CrashInfoBuilder_build(struct ddog_crasht_Handle_CrashInfoBuilder *builder);
struct ddog_crasht_CrashInfo_NewResult ddog_crasht_CrashInfoBuilder_build(struct ddog_crasht_Handle_CrashInfoBuilder *builder);

/**
* # Safety
Expand Down Expand Up @@ -515,7 +590,7 @@ struct ddog_VoidResult ddog_crasht_CrashInfoBuilder_with_uuid_random(struct ddog
* # Safety
* No safety issues.
*/
DDOG_CHECK_RETURN struct ddog_crasht_Result_HandleStackFrame ddog_crasht_StackFrame_new(void);
DDOG_CHECK_RETURN struct ddog_crasht_StackFrame_NewResult ddog_crasht_StackFrame_new(void);

/**
* # Safety
Expand All @@ -532,7 +607,7 @@ void ddog_crasht_StackFrame_drop(struct ddog_crasht_Handle_StackFrame *frame);
*/
DDOG_CHECK_RETURN
struct ddog_VoidResult ddog_crasht_StackFrame_with_ip(struct ddog_crasht_Handle_StackFrame *frame,
ddog_CharSlice ip);
uintptr_t ip);

/**
* # Safety
Expand All @@ -542,7 +617,7 @@ struct ddog_VoidResult ddog_crasht_StackFrame_with_ip(struct ddog_crasht_Handle_
*/
DDOG_CHECK_RETURN
struct ddog_VoidResult ddog_crasht_StackFrame_with_module_base_address(struct ddog_crasht_Handle_StackFrame *frame,
ddog_CharSlice module_base_address);
uintptr_t module_base_address);

/**
* # Safety
Expand All @@ -552,7 +627,7 @@ struct ddog_VoidResult ddog_crasht_StackFrame_with_module_base_address(struct dd
*/
DDOG_CHECK_RETURN
struct ddog_VoidResult ddog_crasht_StackFrame_with_sp(struct ddog_crasht_Handle_StackFrame *frame,
ddog_CharSlice sp);
uintptr_t sp);

/**
* # Safety
Expand All @@ -562,7 +637,7 @@ struct ddog_VoidResult ddog_crasht_StackFrame_with_sp(struct ddog_crasht_Handle_
*/
DDOG_CHECK_RETURN
struct ddog_VoidResult ddog_crasht_StackFrame_with_symbol_address(struct ddog_crasht_Handle_StackFrame *frame,
ddog_CharSlice symbol_address);
uintptr_t symbol_address);

/**
* # Safety
Expand Down Expand Up @@ -612,7 +687,7 @@ struct ddog_VoidResult ddog_crasht_StackFrame_with_path(struct ddog_crasht_Handl
*/
DDOG_CHECK_RETURN
struct ddog_VoidResult ddog_crasht_StackFrame_with_relative_address(struct ddog_crasht_Handle_StackFrame *frame,
ddog_CharSlice relative_address);
uintptr_t relative_address);

/**
* # Safety
Expand Down Expand Up @@ -657,7 +732,7 @@ struct ddog_VoidResult ddog_crasht_StackFrame_with_line(struct ddog_crasht_Handl
* # Safety
* No safety issues.
*/
DDOG_CHECK_RETURN struct ddog_crasht_Result_HandleStackTrace ddog_crasht_StackTrace_new(void);
DDOG_CHECK_RETURN struct ddog_crasht_StackTrace_NewResult ddog_crasht_StackTrace_new(void);

/**
* # Safety
Expand Down Expand Up @@ -696,8 +771,8 @@ struct ddog_VoidResult ddog_crasht_StackTrace_set_complete(struct ddog_crasht_Ha
* The string is copied into the result, and does not need to outlive this call
*/
DDOG_CHECK_RETURN
struct ddog_crasht_Result_StringWrapper ddog_crasht_demangle(ddog_CharSlice name,
enum ddog_crasht_DemangleOptions options);
struct ddog_StringWrapperResult ddog_crasht_demangle(ddog_CharSlice name,
enum ddog_crasht_DemangleOptions options);

/**
* Receives data from a crash collector via a pipe on `stdin`, formats it into
Expand Down
1 change: 1 addition & 0 deletions dockerfiles/ci/xfail_tests/8.1.list
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ ext/json/tests/json_encode_exceptions.phpt
ext/mbstring/tests/zend_multibyte-01.phpt
ext/mbstring/tests/zend_multibyte-02.phpt
ext/mbstring/tests/zend_multibyte-06.phpt
ext/mysqli/tests/ghsa-h35g-vwh6-m678-stmt-row-double.phpt
ext/openssl/tests/bug46127.phpt
ext/openssl/tests/bug48182.phpt
ext/openssl/tests/bug54992.phpt
Expand Down
Loading

0 comments on commit ce361a9

Please sign in to comment.