Skip to content

[PROF-13115] Fix profiler support for Ruby 4.0.0-preview2#5091

Merged
ivoanjo merged 4 commits into
masterfrom
ivoanjo/prof-13115-ruby-4_0_0-preview2-profiler
Nov 25, 2025
Merged

[PROF-13115] Fix profiler support for Ruby 4.0.0-preview2#5091
ivoanjo merged 4 commits into
masterfrom
ivoanjo/prof-13115-ruby-4_0_0-preview2-profiler

Conversation

@ivoanjo

@ivoanjo ivoanjo commented Nov 25, 2025

Copy link
Copy Markdown
Member

What does this PR do?

This PR contains 3 small fixes for profiler support in Ruby 4.0.0-preview2:

  1. rb_obj_info is not available in Ruby 4
  2. Remove a pending from a spec that didn't work on Ruby 3.5.0-preview1
  3. Stack trace behavior slightly changed in Ruby 4

It does not affect other Ruby versions.

Motivation:

This PR, together with #5090 and DataDog/datadog-ruby_core_source#18 is needed to get a green CI for the profiler on Ruby 4.

Change log entry

Yes. Fix profiler support for Ruby 4.0.0-preview2

Additional Notes:

N/A

How to test the change?

We don't yet have Ruby 4 in CI, so this can only be tested locally.

Looks like this symbol was hidden again. We only use it for debugging
anyway...
With 4.0.0-preview2 this spec is working fine.
@ivoanjo
ivoanjo requested review from a team as code owners November 25, 2025 11:37
@github-actions github-actions Bot added the profiling Involves Datadog profiling label Nov 25, 2025
@datadog-official

datadog-official Bot commented Nov 25, 2025

Copy link
Copy Markdown

✅ Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

🎯 Code Coverage
Patch Coverage: 42.11%
Total Coverage: 95.16% (-0.01%)

View detailed report

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

@ivoanjo ivoanjo mentioned this pull request Nov 25, 2025
@pr-commenter

pr-commenter Bot commented Nov 25, 2025

Copy link
Copy Markdown

Benchmarks

Benchmark execution time: 2025-11-25 14:04:17

Comparing candidate commit 49e66f9 in PR branch ivoanjo/prof-13115-ruby-4_0_0-preview2-profiler with baseline commit 7084871 in branch master.

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

scenario:error - error tracking, with_error=true - third_party only

  • 🟩 throughput [+610.187op/s; +656.548op/s] or [+5.737%; +6.173%]

scenario:profiling - Allocations ()

  • 🟩 throughput [+195862.641op/s; +203332.196op/s] or [+6.248%; +6.486%]

@lloeki lloeki left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM

Comment thread ext/datadog_profiling_native_extension/extconf.rb Outdated
@ivoanjo
ivoanjo merged commit ffc9958 into master Nov 25, 2025
544 checks passed
@ivoanjo
ivoanjo deleted the ivoanjo/prof-13115-ruby-4_0_0-preview2-profiler branch November 25, 2025 14:31
@github-actions github-actions Bot added this to the 2.23.0 milestone Nov 25, 2025
@Strech Strech mentioned this pull request Dec 11, 2025
ivoanjo added a commit that referenced this pull request Dec 15, 2025
**What does this PR do?**

This PR disables the heap profiling feature when running on Ruby 4 as
the current implementation (that relies on object_id) is not safe to use
on Ruby 4.

**Motivation:**

Avoid impacting applications running on Ruby 4.

**Additional Notes:**

Discussion with the Ruby core team in
https://bugs.ruby-lang.org/issues/21710 has uncovered that our use
of object_id from inside the NEWOBJ tracepoint is not safe on
Ruby 4, and it's likely it can't be made safe.

Until we're able to replace the Datadog profiler's usage of
object_id for heap profiling, we won't be able to safely offer
this feature on Ruby 4.

(We temporarily disabled the heap profiler for 4.0.0-preview2 in
 #5091 and re-enabled it in #5121 when it looked fixed but
discussion on the upstream ticket uncovered further issues)

**How to test the change?**

Validate that profiler doesn't enable heap profiling on Ruby 4.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

profiling Involves Datadog profiling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants