diff --git a/.gitlab/collect_artifacts.sh b/.gitlab/collect_artifacts.sh index cfc02c5434..fd1a9c7109 100755 --- a/.gitlab/collect_artifacts.sh +++ b/.gitlab/collect_artifacts.sh @@ -5,6 +5,6 @@ set -eo pipefail mkdir -p "${CI_PROJECT_DIR}/artifacts/core_dumps" find . -type f -name "core*" -exec head -c 4 "{}" \; -exec echo " {}" \; | grep -a ^.ELF | cut -d' ' -f2 | xargs -I % -n 1 cp % "${CI_PROJECT_DIR}/artifacts/core_dumps" || true mkdir -p "${CI_PROJECT_DIR}/artifacts/diffs" -find . -type f -name '*.diff' -not -path "*/vendor/*" -exec cp --parents '{}' "${CI_PROJECT_DIR}/artifacts/diffs" \; || true +find . -type f \( -name '*.diff' -o -name "*.mem" \) -not -path "*/vendor/*" -exec cp --parents '{}' "${CI_PROJECT_DIR}/artifacts/diffs" \; || true mkdir -p "${CI_PROJECT_DIR}/artifacts/tests" find . -type f -name '*.xml' -path "*/artifacts/tests/*" -exec cp '{}' "${CI_PROJECT_DIR}/artifacts/tests/" \; || true diff --git a/Cargo.lock b/Cargo.lock index 912cec23bd..ba2f26ff50 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2709,6 +2709,26 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "libdd-capabilities" +version = "0.1.0" +dependencies = [ + "anyhow", + "bytes", + "http", + "thiserror 1.0.69", +] + +[[package]] +name = "libdd-capabilities-impl" +version = "0.1.0" +dependencies = [ + "bytes", + "http", + "libdd-capabilities", + "libdd-common", +] + [[package]] name = "libdd-common" version = "3.0.2" @@ -2730,6 +2750,7 @@ dependencies = [ "hyper-util", "indexmap 2.12.1", "libc 0.2.177", + "libdd-capabilities", "maplit", "mime", "multer", @@ -2740,7 +2761,6 @@ dependencies = [ "reqwest", "rustls", "rustls-native-certs", - "rusty-fork", "serde", "static_assertions", "tempfile", @@ -2833,9 +2853,12 @@ dependencies = [ "clap", "criterion", "either", + "getrandom 0.2.15", "http", "http-body-util", "httpmock", + "libdd-capabilities", + "libdd-capabilities-impl", "libdd-common", "libdd-ddsketch", "libdd-dogstatsd-client", @@ -2941,6 +2964,7 @@ dependencies = [ "bolero", "byteorder", "bytes", + "cc", "chrono", "criterion", "crossbeam-channel", @@ -2992,6 +3016,7 @@ version = "4.0.0" dependencies = [ "anyhow", "base64 0.22.1", + "bytes", "futures", "hashbrown 0.15.2", "http", @@ -3089,12 +3114,15 @@ dependencies = [ "criterion", "flate2", "futures", + "getrandom 0.2.15", "http", "http-body", "http-body-util", "httpmock", "hyper", "indexmap 2.12.1", + "libdd-capabilities", + "libdd-capabilities-impl", "libdd-common", "libdd-tinybytes", "libdd-trace-normalization", @@ -6017,6 +6045,7 @@ checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b" dependencies = [ "getrandom 0.2.15", "serde", + "wasm-bindgen", ] [[package]] diff --git a/Makefile b/Makefile index deb5e20c4e..abaacda2d0 100644 --- a/Makefile +++ b/Makefile @@ -48,7 +48,7 @@ RUN_TESTS_CMD := DD_SERVICE= DD_ENV= REPORT_EXIT_STATUS=1 TEST_PHP_SRCDIR=$(PROJ C_FILES = $(shell find components components-rs ext src/dogstatsd zend_abstract_interface -name '*.c' -o -name '*.h' | awk '{ printf "$(BUILD_DIR)/%s\n", $$1 }' ) TEST_FILES = $(shell find tests/ext -name '*.php*' -o -name '*.inc' -o -name '*.json' -o -name '*.yaml' -o -name 'CONFLICTS' | awk '{ printf "$(BUILD_DIR)/%s\n", $$1 }' ) -RUST_FILES = $(BUILD_DIR)/Cargo.toml $(BUILD_DIR)/Cargo.lock $(shell find components-rs -name '*.c' -o -name '*.rs' -o -name 'Cargo.toml' | awk '{ printf "$(BUILD_DIR)/%s\n", $$1 }' ) $(shell find libdatadog/{build-common,datadog-ffe,datadog-ipc,datadog-ipc-macros,datadog-live-debugger,datadog-live-debugger-ffi,datadog-remote-config,datadog-sidecar,datadog-sidecar-ffi,datadog-sidecar-macros,libdd-alloc,libdd-common,libdd-common-ffi,libdd-crashtracker,libdd-crashtracker-ffi,libdd-data-pipeline,libdd-ddsketch,libdd-dogstatsd-client,libdd-library-config,libdd-library-config-ffi,libdd-log,libdd-libunwind-sys,libdd-telemetry,libdd-telemetry-ffi,libdd-tinybytes,libdd-trace-*,spawn_worker,tools/{cc_utils,sidecar_mockgen},libdd-trace-*,Cargo.toml} \( -type l -o -type f \) \( -path "*/src*" -o -path "*/examples*" -o -path "*/libunwind*" -o -path "*Cargo.toml" -o -path "*/build.rs" -o -path "*/tests/dataservice.rs" -o -path "*/tests/service_functional.rs" \) -not -path "*/datadog-ipc/build.rs" -not -path "*/datadog-sidecar-ffi/build.rs") +RUST_FILES = $(BUILD_DIR)/Cargo.toml $(BUILD_DIR)/Cargo.lock $(shell find components-rs -name '*.c' -o -name '*.rs' -o -name 'Cargo.toml' | awk '{ printf "$(BUILD_DIR)/%s\n", $$1 }' ) $(shell find libdatadog/{build-common,datadog-ffe,datadog-ipc,datadog-ipc-macros,datadog-live-debugger,datadog-live-debugger-ffi,datadog-remote-config,datadog-sidecar,datadog-sidecar-ffi,datadog-sidecar-macros,libdd-alloc,libdd-capabilities,libdd-capabilities-impl,libdd-common,libdd-common-ffi,libdd-crashtracker,libdd-crashtracker-ffi,libdd-data-pipeline,libdd-ddsketch,libdd-dogstatsd-client,libdd-library-config,libdd-library-config-ffi,libdd-log,libdd-libunwind-sys,libdd-telemetry,libdd-telemetry-ffi,libdd-tinybytes,libdd-trace-*,spawn_worker,tools/{cc_utils,sidecar_mockgen},libdd-trace-*,Cargo.toml} \( -type l -o -type f \) \( -path "*/src*" -o -path "*/examples*" -o -path "*/libunwind*" -o -path "*Cargo.toml" -o -path "*/build.rs" -o -path "*/tests/dataservice.rs" -o -path "*/tests/service_functional.rs" \) -not -path "*/datadog-ipc/build.rs" -not -path "*/datadog-sidecar-ffi/build.rs") ALL_OBJECT_FILES = $(C_FILES) $(RUST_FILES) $(BUILD_DIR)/Makefile TEST_OPCACHE_FILES = $(shell find tests/opcache -name '*.php*' -o -name '.gitkeep' | awk '{ printf "$(BUILD_DIR)/%s\n", $$1 }' ) TEST_STUB_FILES = $(shell find tests/ext -type d -name 'stubs' -exec find '{}' -type f \; | awk '{ printf "$(BUILD_DIR)/%s\n", $$1 }' ) @@ -211,7 +211,7 @@ test_extension_ci: $(SO_FILE) $(TEST_FILES) $(TEST_STUB_FILES) $(BUILD_DIR)/run- \ export TEST_PHP_JUNIT=$(JUNIT_RESULTS_DIR)/valgrind-extension-test.xml; \ export TEST_PHP_OUTPUT=$(JUNIT_RESULTS_DIR)/valgrind-run-tests.out; \ - $(ALL_TEST_ENV_OVERRIDE) $(RUN_TESTS_CMD) -d extension=$(SO_FILE) -m -s $$TEST_PHP_OUTPUT $(BUILD_DIR)/$(TESTS) && ! grep -e '^LEAKED TEST SUMMARY' $$TEST_PHP_OUTPUT; \ + DD_SPAWN_WORKER_STABLE_TRAMPOLINE=1 $(ALL_TEST_ENV_OVERRIDE) $(RUN_TESTS_CMD) -d extension=$(SO_FILE) -m -s $$TEST_PHP_OUTPUT $(BUILD_DIR)/$(TESTS) && ! grep -e '^LEAKED TEST SUMMARY' $$TEST_PHP_OUTPUT; \ ) build_tea: TEA_BUILD_TESTS=ON diff --git a/dockerfiles/ci/xfail_tests/7.0.list b/dockerfiles/ci/xfail_tests/7.0.list index 4097ddf7bc..9c2e8ca9c6 100644 --- a/dockerfiles/ci/xfail_tests/7.0.list +++ b/dockerfiles/ci/xfail_tests/7.0.list @@ -181,6 +181,9 @@ ext/openssl/tests/streams_crypto_method.phpt ext/openssl/tests/tlsv1.0_wrapper.phpt ext/openssl/tests/tlsv1.1_wrapper.phpt ext/openssl/tests/tlsv1.2_wrapper.phpt +ext/openssl/tests/sni_server.phpt +ext/openssl/tests/sni_server_key_cert.phpt +ext/openssl/tests/bug74796.phpt ext/pdo/tests/pdo_023.phpt ext/pdo/tests/pdo_030.phpt ext/pdo_sqlite/tests/bug43831.phpt diff --git a/dockerfiles/ci/xfail_tests/7.2.list b/dockerfiles/ci/xfail_tests/7.2.list index ddd0300894..ac70ed82b0 100644 --- a/dockerfiles/ci/xfail_tests/7.2.list +++ b/dockerfiles/ci/xfail_tests/7.2.list @@ -186,6 +186,9 @@ ext/openssl/tests/tls_wrapper.phpt ext/openssl/tests/tlsv1.0_wrapper.phpt ext/openssl/tests/tlsv1.1_wrapper.phpt ext/openssl/tests/tlsv1.2_wrapper.phpt +ext/openssl/tests/sni_server.phpt +ext/openssl/tests/sni_server_key_cert.phpt +ext/openssl/tests/bug74796.phpt ext/pdo/tests/pdo_023.phpt ext/pdo/tests/pdo_030.phpt ext/pdo_sqlite/tests/bug43831.phpt diff --git a/dockerfiles/ci/xfail_tests/7.3.list b/dockerfiles/ci/xfail_tests/7.3.list index eda53cf52d..001f8055ac 100644 --- a/dockerfiles/ci/xfail_tests/7.3.list +++ b/dockerfiles/ci/xfail_tests/7.3.list @@ -422,3 +422,6 @@ ext/standard/tests/http/ghsa-hgf5-96fm-v528-002.phpt ext/standard/tests/http/ghsa-hgf5-96fm-v528-001.phpt ext/standard/tests/http/ignore_errors.phpt ext/openssl/tests/bug79145.phpt +ext/openssl/tests/sni_server.phpt +ext/openssl/tests/sni_server_key_cert.phpt +ext/openssl/tests/bug74796.phpt diff --git a/dockerfiles/ci/xfail_tests/7.4.list b/dockerfiles/ci/xfail_tests/7.4.list index f4ebecf431..37dc77d1a3 100644 --- a/dockerfiles/ci/xfail_tests/7.4.list +++ b/dockerfiles/ci/xfail_tests/7.4.list @@ -242,6 +242,9 @@ ext/openssl/tests/tlsv1.0_wrapper.phpt ext/openssl/tests/tlsv1.1_wrapper.phpt ext/openssl/tests/tlsv1.2_wrapper.phpt ext/openssl/tests/tlsv1.3_wrapper.phpt +ext/openssl/tests/sni_server.phpt +ext/openssl/tests/sni_server_key_cert.phpt +ext/openssl/tests/bug74796.phpt ext/pcntl/tests/pcntl_unshare_01.phpt ext/pcntl/tests/pcntl_unshare_03.phpt ext/pdo/tests/pdo_023.phpt diff --git a/dockerfiles/ci/xfail_tests/8.0.list b/dockerfiles/ci/xfail_tests/8.0.list index af6d07e3e4..d69fc4f3f1 100644 --- a/dockerfiles/ci/xfail_tests/8.0.list +++ b/dockerfiles/ci/xfail_tests/8.0.list @@ -566,3 +566,6 @@ ext/standard/tests/http/ghsa-hgf5-96fm-v528-001.phpt ext/standard/tests/http/ignore_errors.phpt ext/standard/tests/general_functions/proc_open02.phpt ext/openssl/tests/bug79145.phpt +ext/openssl/tests/sni_server.phpt +ext/openssl/tests/sni_server_key_cert.phpt +ext/openssl/tests/bug74796.phpt diff --git a/dockerfiles/ci/xfail_tests/8.1.list b/dockerfiles/ci/xfail_tests/8.1.list index 35b7dc63ac..31d8c98ed4 100644 --- a/dockerfiles/ci/xfail_tests/8.1.list +++ b/dockerfiles/ci/xfail_tests/8.1.list @@ -106,6 +106,9 @@ ext/openssl/tests/tlsv1.0_wrapper.phpt ext/openssl/tests/tlsv1.1_wrapper.phpt ext/openssl/tests/tlsv1.2_wrapper.phpt ext/openssl/tests/tlsv1.3_wrapper.phpt +ext/openssl/tests/sni_server.phpt +ext/openssl/tests/sni_server_key_cert.phpt +ext/openssl/tests/bug74796.phpt ext/pcntl/tests/pcntl_unshare_01.phpt ext/pcntl/tests/pcntl_unshare_02.phpt ext/pcntl/tests/pcntl_unshare_03.phpt diff --git a/dockerfiles/ci/xfail_tests/8.2.list b/dockerfiles/ci/xfail_tests/8.2.list index f8c3862efd..aa81e5f9ff 100644 --- a/dockerfiles/ci/xfail_tests/8.2.list +++ b/dockerfiles/ci/xfail_tests/8.2.list @@ -96,6 +96,9 @@ ext/openssl/tests/tlsv1.0_wrapper.phpt ext/openssl/tests/tlsv1.1_wrapper.phpt ext/openssl/tests/tlsv1.2_wrapper.phpt ext/openssl/tests/tlsv1.3_wrapper.phpt +ext/openssl/tests/sni_server.phpt +ext/openssl/tests/sni_server_key_cert.phpt +ext/openssl/tests/bug74796.phpt ext/pcntl/tests/pcntl_unshare_01.phpt ext/pcntl/tests/pcntl_unshare_02.phpt ext/pcntl/tests/pcntl_unshare_03.phpt diff --git a/dockerfiles/ci/xfail_tests/8.3.list b/dockerfiles/ci/xfail_tests/8.3.list index 2cf3c41106..a94260c4be 100644 --- a/dockerfiles/ci/xfail_tests/8.3.list +++ b/dockerfiles/ci/xfail_tests/8.3.list @@ -94,6 +94,9 @@ ext/openssl/tests/tlsv1.0_wrapper.phpt ext/openssl/tests/tlsv1.1_wrapper.phpt ext/openssl/tests/tlsv1.2_wrapper.phpt ext/openssl/tests/tlsv1.3_wrapper.phpt +ext/openssl/tests/sni_server.phpt +ext/openssl/tests/sni_server_key_cert.phpt +ext/openssl/tests/bug74796.phpt ext/pcntl/tests/pcntl_unshare_01.phpt ext/pcntl/tests/pcntl_unshare_02.phpt ext/pcntl/tests/pcntl_unshare_03.phpt diff --git a/dockerfiles/ci/xfail_tests/8.4.list b/dockerfiles/ci/xfail_tests/8.4.list index 466800981e..bbfb5b71df 100644 --- a/dockerfiles/ci/xfail_tests/8.4.list +++ b/dockerfiles/ci/xfail_tests/8.4.list @@ -97,6 +97,9 @@ ext/openssl/tests/tlsv1.0_wrapper.phpt ext/openssl/tests/tlsv1.1_wrapper.phpt ext/openssl/tests/tlsv1.2_wrapper.phpt ext/openssl/tests/tlsv1.3_wrapper.phpt +ext/openssl/tests/sni_server.phpt +ext/openssl/tests/sni_server_key_cert.phpt +ext/openssl/tests/bug74796.phpt ext/pcntl/tests/pcntl_unshare_01.phpt ext/pcntl/tests/pcntl_unshare_02.phpt ext/pcntl/tests/pcntl_unshare_03.phpt diff --git a/dockerfiles/ci/xfail_tests/8.5.list b/dockerfiles/ci/xfail_tests/8.5.list index d44340f818..4a528ade8c 100644 --- a/dockerfiles/ci/xfail_tests/8.5.list +++ b/dockerfiles/ci/xfail_tests/8.5.list @@ -98,6 +98,9 @@ ext/openssl/tests/tlsv1.0_wrapper.phpt ext/openssl/tests/tlsv1.1_wrapper.phpt ext/openssl/tests/tlsv1.2_wrapper.phpt ext/openssl/tests/tlsv1.3_wrapper.phpt +ext/openssl/tests/sni_server.phpt +ext/openssl/tests/sni_server_key_cert.phpt +ext/openssl/tests/bug74796.phpt ext/pcntl/tests/pcntl_unshare_01.phpt ext/pcntl/tests/pcntl_unshare_02.phpt ext/pcntl/tests/pcntl_unshare_03.phpt diff --git a/dockerfiles/ci/xfail_tests/README.md b/dockerfiles/ci/xfail_tests/README.md index c4b8cbfc1e..76d926d780 100644 --- a/dockerfiles/ci/xfail_tests/README.md +++ b/dockerfiles/ci/xfail_tests/README.md @@ -242,3 +242,9 @@ Disabled on versions: `8.1+`. This test checks PHP's handling of excessively large QName prefix in SoapVar (a stress test for edge cases). With ddtrace loaded, the additional memory overhead causes the test to be killed before it can complete, due to hitting memory limits during the stress test. +## `ext/openssl/tests/sni_server.phpt`, `ext/openssl/tests/sni_server_key_cert.phpt`, `ext/openssl/tests/bug74796.phpt` + +Disabled on all versions. + +These are loopback TLS tests that do not check `SKIP_ONLINE_TESTS` and fail due to CI pod networking producing flakiness. The failures are unrelated to the tracer. + diff --git a/libdatadog b/libdatadog index bfdbeae3e3..249be46399 160000 --- a/libdatadog +++ b/libdatadog @@ -1 +1 @@ -Subproject commit bfdbeae3e32dabf8949a945c421e47c81b098040 +Subproject commit 249be463995da75026d8bc65b6790c2656952b0b diff --git a/tests/ext/crashtracker_segfault.phpt b/tests/ext/crashtracker_segfault.phpt index 3388f138fc..2d9f08442a 100644 --- a/tests/ext/crashtracker_segfault.phpt +++ b/tests/ext/crashtracker_segfault.phpt @@ -70,6 +70,22 @@ $rr->waitForRequest(function ($request) { %A{ "message": { %A + "data_schema_version": "1.6", + "error": { + "is_crash": true, + "kind": "UnixSignal", + "message": "Process terminated with SI_USER (SIGSEGV)", + "thread_name": "%s", + "source_type": "Crashtracking", + "stack": { + "format": "Datadog Crashtracker 1.0", + "frames": [ +%A + ], + "incomplete": false + } + }, + "experimental": { "runtime_stack": { "format": "Datadog Runtime Callback 1.0", "frames": [ @@ -94,7 +110,7 @@ $rr->waitForRequest(function ($request) { } ] } -%A + }, "files": { %A },