-
Notifications
You must be signed in to change notification settings - Fork 477
fix(profiling): guard stack chunk recursion #16236
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
|
Bits AI Dev Agent Status: ✅ Done [Fix CI Errors] [View Dev Agent Session] Status History (7 entries)You can ask for changes by mentioning @DataDog in a comment. |
Codeowners resolved as |
Performance SLOsComparing candidate dd/profiling-fix-stack-chunk-recursion-guard (ec849be) with baseline main (fad0a9c) 📈 Performance Regressions (2 suites)📈 iastaspectsospath - 24/24✅ ospathbasename_aspectTime: ✅ 498.918µs (SLO: <700.000µs 📉 -28.7%) vs baseline: 📈 +18.1% Memory: ✅ 42.546MB (SLO: <46.000MB -7.5%) vs baseline: +4.5% ✅ ospathbasename_noaspectTime: ✅ 435.516µs (SLO: <700.000µs 📉 -37.8%) vs baseline: +0.2% Memory: ✅ 42.664MB (SLO: <46.000MB -7.3%) vs baseline: +4.4% ✅ ospathjoin_aspectTime: ✅ 630.326µs (SLO: <700.000µs -10.0%) vs baseline: ~same Memory: ✅ 42.821MB (SLO: <46.000MB -6.9%) vs baseline: +5.5% ✅ ospathjoin_noaspectTime: ✅ 641.754µs (SLO: <700.000µs -8.3%) vs baseline: +0.5% Memory: ✅ 42.605MB (SLO: <46.000MB -7.4%) vs baseline: +4.9% ✅ ospathnormcase_aspectTime: ✅ 352.152µs (SLO: <700.000µs 📉 -49.7%) vs baseline: -0.5% Memory: ✅ 42.664MB (SLO: <46.000MB -7.3%) vs baseline: +5.1% ✅ ospathnormcase_noaspectTime: ✅ 358.821µs (SLO: <700.000µs 📉 -48.7%) vs baseline: ~same Memory: ✅ 42.625MB (SLO: <46.000MB -7.3%) vs baseline: +4.6% ✅ ospathsplit_aspectTime: ✅ 494.513µs (SLO: <700.000µs 📉 -29.4%) vs baseline: -0.2% Memory: ✅ 42.703MB (SLO: <46.000MB -7.2%) vs baseline: +5.1% ✅ ospathsplit_noaspectTime: ✅ 509.357µs (SLO: <700.000µs 📉 -27.2%) vs baseline: +1.4% Memory: ✅ 42.762MB (SLO: <46.000MB -7.0%) vs baseline: +4.9% ✅ ospathsplitdrive_aspectTime: ✅ 377.366µs (SLO: <700.000µs 📉 -46.1%) vs baseline: +0.5% Memory: ✅ 42.684MB (SLO: <46.000MB -7.2%) vs baseline: +5.0% ✅ ospathsplitdrive_noaspectTime: ✅ 72.359µs (SLO: <700.000µs 📉 -89.7%) vs baseline: -1.4% Memory: ✅ 42.880MB (SLO: <46.000MB -6.8%) vs baseline: +5.3% ✅ ospathsplitext_aspectTime: ✅ 457.559µs (SLO: <700.000µs 📉 -34.6%) vs baseline: -1.0% Memory: ✅ 42.625MB (SLO: <46.000MB -7.3%) vs baseline: +4.9% ✅ ospathsplitext_noaspectTime: ✅ 468.663µs (SLO: <700.000µs 📉 -33.0%) vs baseline: +0.2% Memory: ✅ 42.900MB (SLO: <46.000MB -6.7%) vs baseline: +5.6% 📈 telemetryaddmetric - 30/30✅ 1-count-metric-1-timesTime: ✅ 3.374µs (SLO: <20.000µs 📉 -83.1%) vs baseline: 📈 +15.9% Memory: ✅ 35.154MB (SLO: <38.000MB -7.5%) vs baseline: +4.7% ✅ 1-count-metrics-100-timesTime: ✅ 205.191µs (SLO: <220.000µs -6.7%) vs baseline: -0.2% Memory: ✅ 35.193MB (SLO: <38.000MB -7.4%) vs baseline: +4.6% ✅ 1-distribution-metric-1-timesTime: ✅ 3.227µs (SLO: <20.000µs 📉 -83.9%) vs baseline: -1.2% Memory: ✅ 35.016MB (SLO: <38.000MB -7.9%) vs baseline: +4.3% ✅ 1-distribution-metrics-100-timesTime: ✅ 212.797µs (SLO: <230.000µs -7.5%) vs baseline: -1.2% Memory: ✅ 35.389MB (SLO: <38.000MB -6.9%) vs baseline: +5.1% ✅ 1-gauge-metric-1-timesTime: ✅ 2.127µs (SLO: <20.000µs 📉 -89.4%) vs baseline: ~same Memory: ✅ 35.154MB (SLO: <38.000MB -7.5%) vs baseline: +4.7% ✅ 1-gauge-metrics-100-timesTime: ✅ 135.670µs (SLO: <150.000µs -9.6%) vs baseline: -1.7% Memory: ✅ 35.271MB (SLO: <38.000MB -7.2%) vs baseline: +5.1% ✅ 1-rate-metric-1-timesTime: ✅ 3.024µs (SLO: <20.000µs 📉 -84.9%) vs baseline: -0.3% Memory: ✅ 35.232MB (SLO: <38.000MB -7.3%) vs baseline: +5.0% ✅ 1-rate-metrics-100-timesTime: ✅ 219.427µs (SLO: <250.000µs 📉 -12.2%) vs baseline: +0.1% Memory: ✅ 35.252MB (SLO: <38.000MB -7.2%) vs baseline: +5.0% ✅ 100-count-metrics-100-timesTime: ✅ 21.071ms (SLO: <22.000ms -4.2%) vs baseline: -0.3% Memory: ✅ 35.468MB (SLO: <38.000MB -6.7%) vs baseline: +5.1% ✅ 100-distribution-metrics-100-timesTime: ✅ 2.253ms (SLO: <2.550ms 📉 -11.6%) vs baseline: +0.6% Memory: ✅ 35.507MB (SLO: <38.000MB -6.6%) vs baseline: +4.7% ✅ 100-gauge-metrics-100-timesTime: ✅ 1.423ms (SLO: <1.550ms -8.2%) vs baseline: +0.5% Memory: ✅ 35.547MB (SLO: <38.000MB -6.5%) vs baseline: +5.9% ✅ 100-rate-metrics-100-timesTime: ✅ 2.275ms (SLO: <2.550ms 📉 -10.8%) vs baseline: -0.4% Memory: ✅ 35.468MB (SLO: <38.000MB -6.7%) vs baseline: +5.5% ✅ flush-1-metricTime: ✅ 4.509µs (SLO: <20.000µs 📉 -77.5%) vs baseline: +0.4% Memory: ✅ 35.704MB (SLO: <38.000MB -6.0%) vs baseline: +5.3% ✅ flush-100-metricsTime: ✅ 174.522µs (SLO: <250.000µs 📉 -30.2%) vs baseline: ~same Memory: ✅ 35.527MB (SLO: <38.000MB -6.5%) vs baseline: +4.5% ✅ flush-1000-metricsTime: ✅ 2.188ms (SLO: <2.500ms 📉 -12.5%) vs baseline: ~same Memory: ✅ 36.333MB (SLO: <38.750MB -6.2%) vs baseline: +4.9% 🟡 Near SLO Breach (1 suite)🟡 tracer - 6/6✅ largeTime: ✅ 31.673ms (SLO: <32.950ms -3.9%) vs baseline: +0.6% Memory: ✅ 36.825MB (SLO: <39.250MB -6.2%) vs baseline: +5.2% ✅ mediumTime: ✅ 3.135ms (SLO: <3.200ms -2.0%) vs baseline: +0.5% Memory: ✅ 35.193MB (SLO: <38.750MB -9.2%) vs baseline: +4.9% ✅ smallTime: ✅ 363.662µs (SLO: <370.000µs 🟡 -1.7%) vs baseline: +3.6% Memory: ✅ 35.311MB (SLO: <38.750MB -8.9%) vs baseline: +5.2%
|
12d4a6e to
2a536d4
Compare
2a536d4 to
ec849be
Compare
|
Description
https://datadoghq.atlassian.net/browse/PROF-13112
Prevent stack chunk updates from recursing indefinitely on cyclic or excessively deep chunk chains, and add a regression test covering self-referential chunk data to guard against stack overflows.
Testing
We unfortunately can't unit test this at the moment since our unit tests (
profiling_nativejobs in GitLab) are not built against CPython and Echion requires CPython headers.Risks
Low: bounds corrupted stack chunk chains to avoid recursion overflow.