ContendedCallTraceStorageTest: skip on musl+aarch64 debug (CTimer::unregisterThread race)
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 45/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- java
- Lĩnh vực
- devtools, performance, testing-qa
Hướng nghiên cứu
Bắt đầu với ddprof-test/src/test/java/com/datadoghq/profiler/ContendedCallTraceStorageTest.java và kiểm tra isPlatformSupported() cũng như bản tái hiện debug của musl+aarch64. Sau đó, lần theo CTimer::registerThread và CTimer::unregisterThread, tập trung vào teardown và việc phân phối tín hiệu. Công việc được hoàn tất khi test không còn cần platform skip này và vượt qua ổn định trên cấu hình bị ảnh hưởng.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
ContendedCallTraceStorageTest is disabled on musl+aarch64 debug via isPlatformSupported() returning false because CTimer::unregisterThread races with concurrent thread teardown on that combination, causing spurious failures.
Affected file
ddprof-test/src/test/java/com/datadoghq/profiler/ContendedCallTraceStorageTest.java
Reproduction
Run the test with:
- libc: musl
- arch: aarch64
- build type: debug
The race manifests as a crash or hang inside CTimer::unregisterThread during test teardown when profiled threads exit concurrently.
Investigation notes
- The bug is pre-existing and unrelated to the StringDictionary refactor in PR #524.
CTimerrelies on signal delivery to the thread being unregistered; on musl+aarch64 debug the timing of thread teardown vs. signal delivery is different enough to expose a race.- A proper fix likely requires guarding
unregisterThreadwith the same lock asregisterThread, or making the unregister step signal-delivery-free.
Tracked by
PR #524 added the skip; this issue tracks the underlying bug.
- Ngôn ngữ chính
- C++
- Star
- 33
- Fork
- 14
- Merge trung bình
- 2 ngày 12 giờ
- Pull request đã merge (30 ngày)
- 41
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của DataDog/java-profiler
-
needs-review upstream-tracking
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 15/100
DataDog/java-profiler#846 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 52/100
DataDog/java-profiler#843 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
needs-review upstream-tracking
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
DataDog/java-profiler#829 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
needs-review upstream-tracking
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
DataDog/java-profiler#812 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
needs-review upstream-tracking
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
DataDog/java-profiler#785 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của DataDog/java-profiler
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
objectionary/eo-graphs#80 ·
-
bug C/C++ code
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
webarkit/WebARKitLib#85 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
SD Card Size correctionĐang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 72/100
-
[request] vsg/1.1.16Đang mởupstream update
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
conan-io/conan-center-index#31142 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100