Skip to content

Adds process_tags to live debugger payloads#3580

Merged
dubloom merged 22 commits intomasterfrom
dubloom/process-tags-di
Feb 11, 2026
Merged

Adds process_tags to live debugger payloads#3580
dubloom merged 22 commits intomasterfrom
dubloom/process-tags-di

Conversation

@dubloom
Copy link
Contributor

@dubloom dubloom commented Jan 16, 2026

This PR implements this RFC for dynamic instrumentation.

Add process_tags to dynamic instrumentation payload.

This PR comes with this libdatadog PR: DataDog/libdatadog#1452 which justifies the temporary bump of libdatadog (to show that it works)

@datadog-official
Copy link

datadog-official bot commented Jan 16, 2026

⚠️ Tests

Fix all issues with Cursor

⚠️ Warnings

🧪 1027 Tests failed

    ❄️ Known flaky: telemetry data is received() from com.datadog.appsec.php.integration.TelemetryTests (Fix with Cursor)

testSearchPhpBinaries from integration.DDTrace\Tests\Integration\PHPInstallerTest (Datadog) (Fix with Cursor)
DDTrace\Tests\Integration\PHPInstallerTest::testSearchPhpBinaries
Test code or tested code printed unexpected output: Searching for available php binaries, this operation might take a while.
testSimplePushAndProcess from laravel-58-test.DDTrace\Tests\Integrations\Laravel\V5_8\QueueTest (Datadog) (Fix with Cursor)
DDTrace\Tests\Integrations\Laravel\V5_8\QueueTest::testSimplePushAndProcess
Test code or tested code printed unexpected output: spanLinksTraceId: 698c9412000000007de220c3526b6134
tid: 698c941200000000
hexProcessTraceId: 7de220c3526b6134
hexProcessSpanId: 16d3e034dc1106ed
processTraceId: 9070848622751080756
processSpanId: 1644904806555387629

phpvfscomposer://tests/vendor/phpunit/phpunit/phpunit:106
View all

ℹ️ Info

❄️ No new flaky tests detected

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 1c8c591 | Docs | Datadog PR Page | Was this helpful? Give us feedback!

@pr-commenter
Copy link

pr-commenter bot commented Jan 16, 2026

Benchmarks [ tracer ]

Benchmark execution time: 2026-02-11 14:26:20

Comparing candidate commit 1c8c591 in PR branch dubloom/process-tags-di with baseline commit c14dafe in branch master.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 188 metrics, 6 unstable metrics.

@codecov-commenter
Copy link

codecov-commenter commented Jan 19, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 62.10%. Comparing base (c14dafe) to head (1c8c591).

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #3580      +/-   ##
==========================================
- Coverage   62.12%   62.10%   -0.03%     
==========================================
  Files         141      141              
  Lines       13387    13387              
  Branches     1753     1753              
==========================================
- Hits         8317     8314       -3     
- Misses       4270     4274       +4     
+ Partials      800      799       -1     

see 1 file with indirect coverage changes


Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update c14dafe...1c8c591. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Base automatically changed from dubloom/process-tags to master January 19, 2026 12:07
@dubloom dubloom marked this pull request as ready for review January 19, 2026 12:07
@dubloom dubloom requested review from a team as code owners January 19, 2026 12:07
@dubloom dubloom force-pushed the dubloom/process-tags-di branch 2 times, most recently from 923101a to 3ce0af9 Compare January 20, 2026 09:27
Copy link
Contributor

@Leiyks Leiyks left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me 👌

Copy link
Collaborator

@bwoebi bwoebi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, don't forget to update libdatadog to main before merging.

@dubloom dubloom requested a review from a team as a code owner February 6, 2026 16:14
@dubloom dubloom force-pushed the dubloom/process-tags-di branch from 174f2f4 to 2df3813 Compare February 6, 2026 16:20
@dubloom dubloom requested a review from a team as a code owner February 10, 2026 16:00
Copy link
Collaborator

@bwoebi bwoebi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's ship it.

@dubloom
Copy link
Contributor Author

dubloom commented Feb 11, 2026

/merge

@gh-worker-devflow-routing-ef8351
Copy link

gh-worker-devflow-routing-ef8351 bot commented Feb 11, 2026

View all feedbacks in Devflow UI.

2026-02-11 16:32:12 UTC ℹ️ Start processing command /merge


2026-02-11 16:33:06 UTC ℹ️ MergeQueue: waiting for PR to be ready

This pull request is not mergeable according to GitHub. Common reasons include pending required checks, missing approvals, or merge conflicts — but it could also be blocked by other repository rules or settings.
It will be added to the queue as soon as checks pass and/or get approvals. View in MergeQueue UI.
Note: if you pushed new commits since the last approval, you may need additional approval.
You can remove it from the waiting list with /remove command.


2026-02-11 16:33:56 UTC ℹ️ MergeQueue: This merge request was already merged

This pull request was merged directly.

@dubloom dubloom merged commit b9986f9 into master Feb 11, 2026
1913 of 1921 checks passed
@dubloom dubloom deleted the dubloom/process-tags-di branch February 11, 2026 16:33
@github-actions github-actions bot added this to the 1.17.0 milestone Feb 11, 2026
dubloom added a commit that referenced this pull request Feb 12, 2026
* init process tags for APM

Co-Authored-By: PROFeNoM <alexandre.choura@datadoghq.com>

* feat(process_tags): add process_tags to tracing payloads

* small auto review and fix test

* bwoebi review

* fix test

* Adds process_tags to live debugger payloads

* temporary libdatadog bump

* auto review

* bump libdatadog

* fix build

* update makefile && make cbindgen

* fixing test

* fixing test

* fix appsec tests

---------

Co-authored-by: PROFeNoM <alexandre.choura@datadoghq.com>
dubloom added a commit that referenced this pull request Feb 12, 2026
* Adds process tags to profiler uploader

* remove useless utils function

* remove empty lines and fix spelling

* add function to ddtrace.sym

* feat(CI: installer tests): fix installer tests by changing enabling check on appsec extension (#3604)

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

* refactor(profiling): use module globals for ZMM state (#3608)

* refactor(profiling): use module globals for ZMM state

* style: fix clippy warnings

* Apply suggestions from code review

Co-authored-by: Florian Engelhardt <florian.engelhardt@datadoghq.com>

* docs: note ZTS vs NTS differences

---------

Co-authored-by: Florian Engelhardt <florian.engelhardt@datadoghq.com>

* refactor(profiling): extract Backtrace type (#3612)

* refactor(profiling): extract Backtrace type

In a future change, this may hold a refcount for another object, so
we need to encapsulate it.

* fix `test_collect_stack_sample` not running

---------

Co-authored-by: Florian Engelhardt <florian.engelhardt@datadoghq.com>

* Propagate RELIABILITY_ENV_BRANCH to downstream pipeline (#3605)

* Add simple_onboarding_appsec to SSI system tests (#3617)

* Stores remote config requests in request-replayer (#3585)

* feat(profiling): internal metrics for overhead (#3616)

* feat(profiling): internal metrics for overhead

* feat(profiling): move CPU time capture to include serialization for `ddprof_upload` for current profile exported

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(profiling): add CPU time tracking for `ddprof_time` thread

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(profiling): separate CPU time tracking per background thread

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Florian Engelhardt <florian.engelhardt@datadoghq.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* fix(tracing): hook is_internal was backwards (#3625)

* Fix phpt asm standalone tests (#3628)

* fix readme file links (#3610)

* test(language-tests): properly skip online tests and disabled soap_qname_crash.phpt on all version (#3632)

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

* Collect framework endpoints (#3548)

* Only run publishing jobs when all dependent pipelines succeed (#3635)

Signed-off-by: Bob Weinand <bob.weinand@datadoghq.com>

* chore(profiling): update libdatadog to 26 (#3633)

* test(CI): manually handle git operation for windows jobs (#3634)

* test(CI): add aggressive git cleanup on windows runner

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

* test(CI): add manual cleanup in before_script step

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

---------

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

* feat(CI): add healthcheck to SQLSRV server setup (#3619)

* feat(CI): add healthcheck to SQLSRV server setup

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

* chore: add troubleshooting script for SQLSRV

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

* feat: add explicit memory limit and paths

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

* chore: replace sqlsrv docker image

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

---------

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

* fix(CI: test_metrics): add explicit flush in logging (#3637)

* fix(logging): fsync crash logs before _Exit() to prevent data loss

When a SIGSEGV occurs, the signal handler logs "Segmentation fault encountered"
and then calls _Exit() which terminates the process immediately. Without fsync(),
kernel write buffers may not be flushed to disk before termination, causing
a race condition where the error log file is sometimes not created.

This fix adds fsync() on Unix/Linux and _commit() on Windows after write() in
ddtrace_log_with_time() to ensure crash logs persist to disk before process
termination.

The issue affects production (rare but possible during power loss, kernel panic,
or I/O errors) and causes consistent test failures where tests check for log
files immediately after crashes (before kernel writeback completes).

Fixes flaky test_metrics SigSegVTest::testGet failures on Kubernetes where
dd_php_error.log was not being created consistently.

* fix(signals): move flush in sigsegv handler

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

---------

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

* Adds process_tags to live debugger payloads (#3580)

* init process tags for APM

Co-Authored-By: PROFeNoM <alexandre.choura@datadoghq.com>

* feat(process_tags): add process_tags to tracing payloads

* small auto review and fix test

* bwoebi review

* fix test

* Adds process_tags to live debugger payloads

* temporary libdatadog bump

* auto review

* bump libdatadog

* fix build

* update makefile && make cbindgen

* fixing test

* fixing test

* fix appsec tests

---------

Co-authored-by: PROFeNoM <alexandre.choura@datadoghq.com>

* chore(profiling): update libdatadog 26 to 27 (#3640)

* chore(profiling): update libdatadog 26 to 27

* process tags were removed while rebasing to sign commit

---------

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>
Signed-off-by: Bob Weinand <bob.weinand@datadoghq.com>
Co-authored-by: Florian Engelhardt <florian.engelhardt@datadoghq.com>
Co-authored-by: Alexandre Rulleau <55387832+Leiyks@users.noreply.github.com>
Co-authored-by: Levi Morrison <levi.morrison@datadoghq.com>
Co-authored-by: Laplie Anderson <randomanderson@users.noreply.github.com>
Co-authored-by: Alejandro Estringana Ruiz <alejandro.estringanaruiz@datadoghq.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Bob Weinand <bob.weinand@datadoghq.com>
Co-authored-by: PROFeNoM <alexandre.choura@datadoghq.com>
BridgeAR pushed a commit that referenced this pull request Feb 19, 2026
* init process tags for APM

Co-Authored-By: PROFeNoM <alexandre.choura@datadoghq.com>

* feat(process_tags): add process_tags to tracing payloads

* small auto review and fix test

* bwoebi review

* fix test

* Adds process_tags to live debugger payloads

* temporary libdatadog bump

* auto review

* bump libdatadog

* fix build

* update makefile && make cbindgen

* fixing test

* fixing test

* fix appsec tests

---------

Co-authored-by: PROFeNoM <alexandre.choura@datadoghq.com>
BridgeAR pushed a commit that referenced this pull request Feb 19, 2026
* Adds process tags to profiler uploader

* remove useless utils function

* remove empty lines and fix spelling

* add function to ddtrace.sym

* feat(CI: installer tests): fix installer tests by changing enabling check on appsec extension (#3604)

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

* refactor(profiling): use module globals for ZMM state (#3608)

* refactor(profiling): use module globals for ZMM state

* style: fix clippy warnings

* Apply suggestions from code review

Co-authored-by: Florian Engelhardt <florian.engelhardt@datadoghq.com>

* docs: note ZTS vs NTS differences

---------

Co-authored-by: Florian Engelhardt <florian.engelhardt@datadoghq.com>

* refactor(profiling): extract Backtrace type (#3612)

* refactor(profiling): extract Backtrace type

In a future change, this may hold a refcount for another object, so
we need to encapsulate it.

* fix `test_collect_stack_sample` not running

---------

Co-authored-by: Florian Engelhardt <florian.engelhardt@datadoghq.com>

* Propagate RELIABILITY_ENV_BRANCH to downstream pipeline (#3605)

* Add simple_onboarding_appsec to SSI system tests (#3617)

* Stores remote config requests in request-replayer (#3585)

* feat(profiling): internal metrics for overhead (#3616)

* feat(profiling): internal metrics for overhead

* feat(profiling): move CPU time capture to include serialization for `ddprof_upload` for current profile exported

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(profiling): add CPU time tracking for `ddprof_time` thread

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(profiling): separate CPU time tracking per background thread

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Florian Engelhardt <florian.engelhardt@datadoghq.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

* fix(tracing): hook is_internal was backwards (#3625)

* Fix phpt asm standalone tests (#3628)

* fix readme file links (#3610)

* test(language-tests): properly skip online tests and disabled soap_qname_crash.phpt on all version (#3632)

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

* Collect framework endpoints (#3548)

* Only run publishing jobs when all dependent pipelines succeed (#3635)

Signed-off-by: Bob Weinand <bob.weinand@datadoghq.com>

* chore(profiling): update libdatadog to 26 (#3633)

* test(CI): manually handle git operation for windows jobs (#3634)

* test(CI): add aggressive git cleanup on windows runner

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

* test(CI): add manual cleanup in before_script step

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

---------

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

* feat(CI): add healthcheck to SQLSRV server setup (#3619)

* feat(CI): add healthcheck to SQLSRV server setup

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

* chore: add troubleshooting script for SQLSRV

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

* feat: add explicit memory limit and paths

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

* chore: replace sqlsrv docker image

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

---------

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

* fix(CI: test_metrics): add explicit flush in logging (#3637)

* fix(logging): fsync crash logs before _Exit() to prevent data loss

When a SIGSEGV occurs, the signal handler logs "Segmentation fault encountered"
and then calls _Exit() which terminates the process immediately. Without fsync(),
kernel write buffers may not be flushed to disk before termination, causing
a race condition where the error log file is sometimes not created.

This fix adds fsync() on Unix/Linux and _commit() on Windows after write() in
ddtrace_log_with_time() to ensure crash logs persist to disk before process
termination.

The issue affects production (rare but possible during power loss, kernel panic,
or I/O errors) and causes consistent test failures where tests check for log
files immediately after crashes (before kernel writeback completes).

Fixes flaky test_metrics SigSegVTest::testGet failures on Kubernetes where
dd_php_error.log was not being created consistently.

* fix(signals): move flush in sigsegv handler

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

---------

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>

* Adds process_tags to live debugger payloads (#3580)

* init process tags for APM

Co-Authored-By: PROFeNoM <alexandre.choura@datadoghq.com>

* feat(process_tags): add process_tags to tracing payloads

* small auto review and fix test

* bwoebi review

* fix test

* Adds process_tags to live debugger payloads

* temporary libdatadog bump

* auto review

* bump libdatadog

* fix build

* update makefile && make cbindgen

* fixing test

* fixing test

* fix appsec tests

---------

Co-authored-by: PROFeNoM <alexandre.choura@datadoghq.com>

* chore(profiling): update libdatadog 26 to 27 (#3640)

* chore(profiling): update libdatadog 26 to 27

* process tags were removed while rebasing to sign commit

---------

Signed-off-by: Alexandre Rulleau <alexandre.rulleau@datadoghq.com>
Signed-off-by: Bob Weinand <bob.weinand@datadoghq.com>
Co-authored-by: Florian Engelhardt <florian.engelhardt@datadoghq.com>
Co-authored-by: Alexandre Rulleau <55387832+Leiyks@users.noreply.github.com>
Co-authored-by: Levi Morrison <levi.morrison@datadoghq.com>
Co-authored-by: Laplie Anderson <randomanderson@users.noreply.github.com>
Co-authored-by: Alejandro Estringana Ruiz <alejandro.estringanaruiz@datadoghq.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Bob Weinand <bob.weinand@datadoghq.com>
Co-authored-by: PROFeNoM <alexandre.choura@datadoghq.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants