-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
[release/7.0-staging][wasm] runtime: Fix creating the stack trace for a ManagedError #89905
Conversation
With the latest chrome (`115.*`) the following code in `runtime/marshal.ts` fails because `this.superStack.value` is no longer available: ```js getSuperStack() { if (this.superStack) { return this.superStack.value; } return super.stack; // this works on FF } ``` This causes the final error to not have the original managed error message, and also have a `"undefined"` at the end of the string. Truncated error missing the native part of the stack, and the message: ``` at System.Runtime.InteropServices.JavaScript.Tests.JavaScriptTestHelper.ThrowFromJSExport(String message) at System.Runtime.InteropServices.JavaScript.Tests.JavaScriptTestHelper.__Wrapper_ThrowFromJSExport_271731536(JSMarshalerArgument* __arguments_buffer) undefined ``` With the fix: ``` at System.Runtime.InteropServices.JavaScript.Tests.JavaScriptTestHelper.ThrowFromJSExport(String message) at System.Runtime.InteropServices.JavaScript.Tests.JavaScriptTestHelper.__Wrapper_ThrowFromJSExport_817705034(JSMarshalerArgument* __arguments_buffer) Error: -t-e-s-t- at sr (http://127.0.0.1:60345/_framework/dotnet.runtime.js:3:33284) at Br (http://127.0.0.1:60345/_framework/dotnet.runtime.js:3:42679) at http://127.0.0.1:60345/_framework/dotnet.runtime.js:3:40825 at Module.catch1stack (http://127.0.0.1:60345/JavaScriptTestHelper.mjs:132:9) at http://127.0.0.1:60345/_framework/dotnet.runtime.js:3:36627 at mr (http://127.0.0.1:60345/_framework/dotnet.runtime.js:3:37821) at do_icall (http://127.0.0.1:60345/_framework/dotnet.native.wasm:wasm-function[221]:0x19711) at do_icall_wrapper (http://127.0.0.1:60345/_framework/dotnet.native.wasm:wasm-function[108]:0x157bc) at mono_interp_exec_method (http://127.0.0.1:60345/_framework/dotnet.native.wasm:wasm-function[101]:0x9c92) at interp_runtime_invoke (http://127.0.0.1:60345/_framework/dotnet.native.wasm:wasm-function[141]:0x16cd7) ``` Thanks to @kg for the fix. (cherry picked from commit 89f6429)
Tagging subscribers to 'arch-wasm': @lewing Issue DetailsBackport of a fix from #89890 cc @kg Customer impactWith the latest stable version of chrome ( DetailsWith the latest chrome ( getSuperStack() {
if (this.superStack) {
return this.superStack.value;
}
return super.stack; // this works on FF
} This causes the final error to not have the original managed error message, and also have a Truncated error missing the native part of the stack, and the message:
With the fix:
Thanks to @kg for the fix. (cherry picked from commit 89f6429) TestingThis has been tested with manual, and automated tests on RiskLow. This fixes a regression in behavior caused by a new chrome update.
|
@thaystg any idea about the debugger test failures here? https://helixre107v0xd1eu3ibi6ka.blob.core.windows.net/dotnet-runtime-refs-pull-89905-merge-7b39d93d89c24bd18f/chrome-DebuggerTests/1/console.cfc39e38.log?helixlogtype=result Could they be related to the chrome bump here? |
Friendly reminder: if you want this servicing fix to be included in the September 2023 Release, you'll have to merge this PR before August 14th. |
Thanks. I want to test the broken vs fixed behavior specifically for 7.0 , which I should be able to do this week. |
@radical since this PR has not yet been approved by Tactics, it will have to wait until the October Release. |
Backport of a fix from #89890
cc @kg
Customer impact
With the latest stable version of chrome (
115.*
), some of the errors thrown for exceptions can be missing the original exception message, and the native stack. This fixes the issue.Details
With the latest chrome (
115.*
) the following code inruntime/marshal.ts
fails becausethis.superStack.value
is no longer available:This causes the final error to not have the original managed error message, and also have a
"undefined"
at the end of the string.Truncated error missing the native part of the stack, and the message:
With the fix:
Thanks to @kg for the fix.
(cherry picked from commit 89f6429)
Testing
This has been tested with manual, and automated tests on
main
. FIXME: Testing pending on 7.0-stagingRisk
Low. This fixes a regression in behavior caused by a new chrome update.