getsentry / getsentry/sentry-ruby

Segmentation fault in TracePoint handler on Ruby 3.4.6 +YJIT (Sidekiq)

Đang mở
#2,913 2 bình luận 0 reaction 1 người được giao Được @sl0thentr0py nhận Xem trên GitHub
Bug Errors Ruby
Ngôn ngữ chính
Ruby
Star
987
Fork
541
Merge trung bình
17 giờ 40 phút
Pull request đã merge (30 ngày)
19

Mô tả

### Issue Description

We're experiencing recurring segmentation faults in production on our Sidekiq background worker. The crash occurs inside Ruby's `` implementation, called from sentry-ruby's `include_local_variables` TracePoint handler.

## Crash Dump

```
:382: [BUG] Segmentation fault at 0x00000001c63e5400
ruby 3.4.6 (2025-09-16 revision dbd83256b1) +YJIT +PRISM [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0109 p:0003 s:0725 e:000724 METHOD :382
c:0108 p:0021 s:0721 e:000720 BLOCK sentry-ruby-5.27.0/lib/sentry-ruby.rb:74 [FINISH]
c:0107 p:0197 s:0715 e:000714 BLOCK /usr/local/lib/ruby/3.4.0/resolv.rb:570
c:0106 p:0012 s:0703 e:000702 BLOCK /usr/local/lib/ruby/3.4.0/resolv.rb:1168 [FINISH]
c:0105 p:0027 s:0698 e:000697 METHOD :228
c:0104 p:0007 s:0692 e:000691 BLOCK /usr/local/lib/ruby/3.4.0/resolv.rb:1166
c:0103 p:0027 s:0688 e:000687 METHOD :228
c:0102 p:0006 s:0682 e:000681 BLOCK /usr/local/lib/ruby/3.4.0/resolv.rb:1165
c:0101 p:0027 s:0678 e:000677 METHOD :228
c:0100 p:0028 s:0672 e:000671 METHOD /usr/local/lib/ruby/3.4.0/resolv.rb:1163
c:0099 p:0030 s:0664 e:000663 METHOD /usr/local/lib/ruby/3.4.0/resolv.rb:540
c:0098 p:0008 s:0654 e:000653 METHOD /usr/local/lib/ruby/3.4.0/resolv.rb:523
c:0097 p:0022 s:0647 e:000646 METHOD /usr/local/lib/ruby/3.4.0/resolv.rb:414
SEGV received in SEGV handler
./entrypoint_worker.sh: line 29: 110 Aborted (core dumped) bundle exec sidekiq
```

## What We Know

- The crash happens inside `:382`, called from `sentry-ruby.rb:74` — the TracePoint handler registered by `include_local_variables = true`
- `resolv.rb` (Ruby's DNS resolver) is in the call stack — it raises internal exceptions as part of normal flow control, which triggers the global TracePoint on `:raise`
- A double SEGV occurred (`SEGV received in SEGV handler`), so the C-level backtrace was not printed
- Ruby GC heap metrics and memory usage showed no anomalies before the crash
- The Sidekiq process was running concurrent workloads

### Reproduction Steps

Run concurrent jobs in the corresponding versions that might eventually raise exceptions

## Environment

- **sentry-ruby**: 5.27.0
- **Ruby**: 3.4.6 (2025-09-16 revision dbd83256b1) +YJIT +PRISM [x86_64-linux]
- **Sidekiq**: background worker with ~25 concurrent threads
- **Platform**: Linux

## Sentry Configuration

```ruby
Sentry.init do |config|
config.include_local_variables = true
config.traces_sample_rate = 1.0
config.profiles_sample_rate = 1.0
end
```

### Expected Behavior

Not to crash sidekiq server

### Actual Behavior

Crashing server

### Ruby Version

3.4.6 (2025-09-16 revision dbd83256b1)

### SDK Version

5.27.0

### Integration and Its Version

Sidekiq

### Sentry Config

```ruby
Sentry.init do |config|
config.include_local_variables = true
config.traces_sample_rate = 1.0
config.profiles_sample_rate = 1.0
end
```

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.