sentry-javascript icon indicating copy to clipboard operation
sentry-javascript copied to clipboard

LocalVariables integration - fails to capture local variables properly when stack has a sync/async boundary

Open Bruno-DaSilva opened this issue 1 year ago • 2 comments

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

  1. Init sentry with includeLocalVariables: true
  2. call an async function
  3. throw an exception within that async function
  4. 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.

Bruno-DaSilva avatar Aug 18 '24 00:08 Bruno-DaSilva

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).

Bruno-DaSilva avatar Aug 18 '24 00:08 Bruno-DaSilva

Hey @Bruno-DaSilva thanks for writing in!

We'll look into your issue Next week as this week is Hackweek at Sentry (see #13421).

Lms24 avatar Aug 19 '24 09:08 Lms24

@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 avatar Sep 10 '24 11:09 timfish

@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.

Bruno-DaSilva avatar Sep 10 '24 13:09 Bruno-DaSilva

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 🥀

getsantry[bot] avatar Jan 01 '25 08:01 getsantry[bot]