fix: crashtracker runtime stack infinite loop#3845
Conversation
| frame.column = -1; | ||
| frame.column = 0; | ||
| EMIT(&frame); | ||
| call = call->prev_execute_data; |
There was a problem hiding this comment.
In light of the other investigation... we cannot be certain call-> is valid xD
There was a problem hiding this comment.
This is checked in line 57.
|
@gyuheon0h I was intentionally using the negative numbers as markers. Unless there was a problem with the fact that they wrap? |
@bwoebi Not particularly, but theyre noisy IMO. Libdatadog also says to send 0 for unknown values, but up to you 🤷 |
|
Well, PHP already uses And sure, they're noisy, so you actually see "there's corruption"- that's good thing, right? Could you please revert that part? Thanks :-) |
|
🎯 Code Coverage (details) 🔗 Commit SHA: 8e49afb | Docs | Datadog PR Page | Give us feedback! |
@bwoebi done, thanks :) 👍 |

Description
There was a crash report with the runtime stack unwinding infinite looping: https://app.datadoghq.com/logs?query=-%40org_id%3A603589%20%40error.is_crash%3Atrue%20%40org_id%3A1000626888&agg_m=count&agg_m_source=base&agg_t=count&clustering_pattern_field_path=message&cols=host%2Cservice%2C%40org_id&event=AwAAAZ3U6zFHIybQJAAAABhBWjNVNnpGSEFBQVF1X283ZzRmcEh3QUEAAAAkMDE5ZGQ0ZWUtNTMzNC00Mzk4LTliNzktOGU5YTQ5NjZhZDhjAANM0A&fromUser=true&index=instrumentation-telemetry-data&link_source=monitor_notif&messageDisplay=inline&refresh_mode=sliding&storage=flex_tier&stream_sort=desc&viz=stream&from_ts=1747059580431&to_ts=1747145980431&live=true
Here is what the raw stack looks like
Couple of things here.
type_nameis `'triggered
-1inuint32. 2^32-1 = 4294967295Then, this points to this section of code
being the culprit.
frame.columnis set to -1, and the frame does not proceed, since we don't performcall = call->prev_execute_data;Reviewer checklist