fix(prof): validate opline before access#3319
Conversation
Benchmarks [ profiler ]Benchmark execution time: 2025-07-10 21:47:21 Comparing candidate commit 163d199 in PR branch Found 0 performance improvements and 1 performance regressions! Performance is the same for 29 metrics, 6 unstable metrics. scenario:walk_stack/1
|
44ceea8 to
2bc5d1e
Compare
1439293 to
84e3204
Compare
d82f513 to
d802cc1
Compare
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #3319 +/- ##
=======================================
Coverage 61.83% 61.83%
=======================================
Files 140 140
Lines 12318 12318
Branches 1617 1617
=======================================
Hits 7617 7617
Misses 3989 3989
Partials 712 712 Continue to review full report in Codecov by Sentry.
🚀 New features to boost your workflow:
|
8c94147 to
331167f
Compare
331167f to
692a304
Compare
Co-authored-by: Bob Weinand <[email protected]> Co-authored-by: Levi Morrison <[email protected]>
777f9aa to
ad16bf1
Compare
Benchmarks [ tracer ]Benchmark execution time: 2025-07-11 00:40:21 Comparing candidate commit 163d199 in PR branch Found 1 performance improvements and 1 performance regressions! Performance is the same for 176 metrics, 0 unstable metrics. scenario:PDOBench/benchPDOBaseline-opcache
scenario:PDOBench/benchPDOOverheadWithDBM-opcache
|
opline before accessopline before access
Description
When collecting the stack trace outside of a vm interrupt, the
execute_data.oplinemight be a dangling pointer. So far we had some mitigations in place for known cases, but there are some cases where this may still happen. Granted this is extremely rare, but annoying.The root cause is that the
execute_data.oplinepointer has a different lifetime than theexecute_data.func.op_arrayit points into.This PR:
oplineallocation_generator_01.phpttest only if PHP > 8.0.10 is used, as otherwise it crashes in PHPReviewer checklist