Fix SHM futex timeouts on 32-bit time64 libc - #17
Conversation
Code Review by Qodo
1. 32-bit RISC-V receive waits break
|
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (17)
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughC and Rust shared-memory futex waits now marshal timeout values for the selected Linux syscall ABI. Go uses ChangesSHM Futex Timeout ABI
Linux 32-bit Build Tracking
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~25 minutes Change: Bug fix Merge Risk: ⚪ Minimal · up to No confirmed regression remains to block merging. Target-specific C ABI validation remains prudent during normal release checks. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to The change appears to repair timeout behavior without expanding the shared-memory API or weakening message checks. Some platform-specific behavior and the production CPU effect remain unverified. Retained concerns Security review detailsSecurity Blast Radius
Security Findings and Attack Paths
Trust Boundaries and Controls
Resilience and Maintainability Implications
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 23.08% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 13 functions across 9 files. (8 skipped: 8 unsupported.)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
PR Summary by QodoFix SHM futex timeouts on 32-bit time64 libc
AI Description
Diagram
High-Level Assessment
Files changed (15)
|
Up to standards ✅🟢 Issues
|
| Metric | Results |
|---|---|
| Complexity | 4 |
| Duplication | 18 |
🟢 Coverage 100.00% diff coverage · +0.02% coverage variation
Metric Results Coverage variation ✅ +0.02% coverage variation (-1.00%) Diff coverage ✅ 100.00% diff coverage Coverage variation details
Coverable lines Covered lines Coverage Common ancestor commit (0d17a9d) Report Missing Report Missing Report Missing Head commit (6aa8201) 16336 (-3) 14801 (+1) 90.60% (+0.02%) Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch:
<coverage of head commit> - <coverage of common ancestor commit>Diff coverage details
Coverable lines Covered lines Diff coverage Pull request (#17) 18 18 100.00% Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified:
<covered lines added or modified>/<coverable lines added or modified> * 100%1 Codacy didn't receive coverage data for the commit, or there was an error processing the received data. Check your integration for errors and validate that your coverage setup is correct.
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
Code Review by Qodo
1.
|
On 32-bit Linux with time64 libc, passing libc's
timespecdirectly to the legacy futex syscall can turn a 100 ms SHM receive timeout into an immediate timeout. Idle session workers then repeatedly wake and consume CPU.Marshal the selected kernel timeout ABI explicitly in C and Rust, retaining legacy-kernel compatibility and preserving infinite waits. Use portable Go timespec construction. Add elapsed-time and delayed-message regression tests, ARM ABI CI coverage, and integration guidance. Public APIs and the shared-memory wire layout are unchanged.
Validation:
Production CPU reduction has not been remeasured. Separate pre-existing Go UDS/Rust test 32-bit build gaps are tracked in SOW-0037.
Downstream vendor PR: netdata/netdata#24049.
Summary by CodeRabbit
Bug Fixes
Documentation