sentry-javascript
sentry-javascript copied to clipboard
LocalVariables integration - fails to capture local variables properly when stack has a sync/async boundary
Is there an existing issue for this?
- [x] I have checked for existing issues https://github.com/getsentry/sentry-javascript/issues
- [x] I have reviewed the documentation https://docs.sentry.io/
- [x] I am using the latest SDK release https://github.com/getsentry/sentry-javascript/releases
How do you use Sentry?
Sentry Saas (sentry.io)
Which SDK are you using?
@sentry/node
SDK Version
8.26.0
Framework Version
Node v20.12.2
Link to Sentry event
https://clearbanc.sentry.io/issues/5724968061/events/74e0a0947fb8464fa4a326fa2ea48576/
Reproduction Example/SDK Setup
SDK setup:
Sentry.init({
dsn: process.env.SENTRY_DSN,
includeLocalVariables: true,
});
Steps to Reproduce
Basically what this issue found: https://github.com/getsentry/sentry-javascript/issues/11194
- Init sentry with
includeLocalVariables: true - call an async function
- throw an exception within that async function
- capture the thrown error
Expected Result
Errors in the sentry UI should show the local variables for the entire callstack, async and sync, based on this comment https://github.com/getsentry/sentry-javascript/issues/11194#issuecomment-2013981278
Actual Result
You'll only see variables for the most recent sync calls up until the async barrier, and then no additional variables before that. This appears to be behaviour seen in multiple git issues, as a limitation of the v8 engine, for example in dart and the vscode js debugger https://github.com/microsoft/vscode-js-debug/issues/353#issuecomment-591496999.
I'm hoping with the digging I've done to root cause these it shouldn't require a high effort repro example -- but if it's needed I can create one (it'll just take me some time that I don't immediately have).
Hey @Bruno-DaSilva thanks for writing in!
We'll look into your issue Next week as this week is Hackweek at Sentry (see #13421).
@Bruno-DaSilva do you have an example that replicates this?
I've tried adding some async into our existing integration tests and still get local variables.
@timfish I'll try and find some time to put together a somewhat minimal reproducible example. I've only tested this bit in our actual full apps so far.
This issue has gone three weeks without activity. In another week, I will close it.
But! If you comment or otherwise update it, I will reset the clock, and if you remove the label Waiting for: Community, I will leave it alone ... forever!
"A weed is but an unloved flower." ― Ella Wheeler Wilcox 🥀