Skip to content

Commit 89f6429

Browse files
committed
[wasm] runtime: Fix creating the stack trace for a ManagedError
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.
1 parent 7eba8b0 commit 89f6429

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

src/mono/wasm/runtime/marshal.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,10 @@ export class ManagedError extends Error implements IDisposable {
331331

332332
getSuperStack() {
333333
if (this.superStack) {
334-
return this.superStack.value;
334+
if (this.superStack.value !== undefined)
335+
return this.superStack.value;
336+
if (this.superStack.get !== undefined)
337+
return this.superStack.get.call(this);
335338
}
336339
return super.stack; // this works on FF
337340
}

0 commit comments

Comments
 (0)