-
Notifications
You must be signed in to change notification settings - Fork 34
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
wasm stack frames are stripped out #1858
Comments
CC @natebosch |
This might need a fairly invasive fix - if we could parse out something as a line number we might be able to fix this by tweaking the regex, but without a line we might need to make changes in |
@sigmundch - do you know how we should evaluate changes to This behavior has existed since the introduction of |
I don't see any test impact when I start including the frames with missing line information from |
@natebosch - sorry for the delayed reply. We don't directly use source_map_stack_trace or even Frame.parseV8 in our internal crash deobfuscation tools for web clients. So I believe there would be no impact there (I'm less familiar with the native crash reporting tools, not sure if they have a separate dependency there). For the web - we have a Java and a Dart implementation. Clients internally use the Java implementation, which has its own parsing logic partially shared across other tools. The Dart implementation is there to provide the same functionality externally and for our own testing purposes. There we use similar logic to parse stack traces and deobfuscate them, but we don't actually use the source_map_stack_trace package. You can find that Dart implementation here https://github.com/dart-lang/sdk/blob/fef81857caed60ee8315355c42f23811a302d682/pkg/dart2js_tools/lib/deobfuscate_stack_trace.dart (note that there is even a very old TODO there indicating that we could use the parse logic in package:stack_trace, but we currently don't). Do I understand correctly that if we start adding frames with no-line number (but for example a new property to present the binary-offset), we could be backwards compatible to what is happening today when we can't parse these frames altogether? |
We can be statically backwards compatible by including these frames opaquely, but the behavior change could break anything that reads the frames and (intentionally or unintentionally) expects to not see these frames.
Is this an internal system capturing callstack? If we make a change in |
Yes |
Hi! |
b/286929124 has some internal discussion from June. I think the latest update was a request to @yjbanov about making the flutter frame parsing looser. I'm not sure if this is the same frame parsing that was just adjusted in flutter/flutter#131786 After that I think we found that the issue was caused by a DDC copy of this code which may need an update. @nshahan @sigmundch - have we tried making the same patch in the DDC copy? I would be happy to land a change in |
Handle URIs other than `wasm://`. Fixes #131.
I fixed this in dart-lang/stack_trace#161.
When mapping Wasm byte offsets to sources the convention is that the .wasm file is considered as a single line line where bytes are columns. I've updated this package to parse Wasm frames, in dart-lang/stack_trace#159. With this change |
Handle URIs other than `wasm://`. Fixes #131.
Handle URIs other than `wasm://`. Fixes dart-lang/stack_trace#131.
When building a web application using Flutter and WebAssembly, we will often have stack frames in callstacks that don't have the typical javascript format of somefile.js:123:45, but instead have an hex address
ex:
This makes it difficult to capture callstacks for crashes.
Pointers:
Frame.ParseV8 does not match a location generated by wasm:
https://github.com/dart-lang/stack_trace/blob/master/lib/src/frame.dart#L183
source_map_stack_trace filters out frames that are "Unparsed"
https://github.com/dart-lang/source_map_stack_trace/blob/master/lib/source_map_stack_trace.dart#L37
The text was updated successfully, but these errors were encountered: