Skip to content

[dart2js] Stack trace is not equal on dart2js #53233

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

Closed
sgrekhov opened this issue Aug 16, 2023 · 3 comments
Closed

[dart2js] Stack trace is not equal on dart2js #53233

sgrekhov opened this issue Aug 16, 2023 · 3 comments
Labels
area-web-js Issues related to JavaScript support for Dart Web, including DDC, dart2js, and JS interop. web-dart2js

Comments

@sgrekhov
Copy link
Contributor

Tests
https://github.com/dart-lang/co19/blob/master/LanguageFeatures/Extension-types/dynamic_semantics_member_invocation_A02_t04.dart
https://github.com/dart-lang/co19/blob/master/LanguageFeatures/Extension-types/dynamic_semantics_member_invocation_A03_t04.dart
Fails on dart2js (works on all other platforms)
Failure log

/==================================================================================================================================================\
| co19/LanguageFeatures/Extension-types/dynamic_semantics_member_invocation_A02_t04 failed again (CompileTimeError -> RuntimeError, expected Pass) |
\==================================================================================================================================================/

--- Command "dart2js" (took 04.000350s):
DART_CONFIGURATION=ReleaseX64 sdk/bin/dart2js_developer -Dtest_runner.configuration=dart2js-hostasserts-linux-d8 --enable-experiment=inline-class --sound-null-safety --test-mode --packages=/b/s/w/ir/.dart_tool/package_config.json /b/s/w/ir/tests/co19/src/LanguageFeatures/Extension-types/dynamic_semantics_member_invocation_A02_t04.dart --sound-null-safety --out=/b/s/w/ir/out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A02_t04/dynamic_semantics_member_invocation_A02_t04.js

exit code:
0

stdout:
Compiled 9,875,170 input bytes (5,046,946 characters source) to 115,442 characters JavaScript in 4.30 seconds using 518.012 MB of memory

--- Command "d8" (took 64ms):
DART_CONFIGURATION=ReleaseX64 TEST_COMPILATION_DIR=/b/s/w/ir/out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A02_t04 /b/s/w/ir/third_party/d8/linux/d8 /b/s/w/ir/sdk/lib/_internal/js_runtime/lib/preambles/d8.js /b/s/w/ir/out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A02_t04/dynamic_semantics_member_invocation_A02_t04.js

exit code:
1

stdout:
/b/s/w/ir/sdk/lib/_internal/js_runtime/lib/preambles/d8.js:263: Expect.equals(expected: <42>, actual: <42>) fails.
          throw e;
          ^
Expect.equals(expected: <42>, actual: <42>) fails.
    at Object.wrapException (/b/s/w/ir/out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A02_t04/dynamic_semantics_member_invocation_A02_t04.js:321:43)
    at Object._fail (/b/s/w/ir/out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A02_t04/dynamic_semantics_member_invocation_A02_t04.js:2479:15)
    at Object.Expect_equals (/b/s/w/ir/out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A02_t04/dynamic_semantics_member_invocation_A02_t04.js:2488:11)
    at main (/b/s/w/ir/out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A02_t04/dynamic_semantics_member_invocation_A02_t04.js:2510:11)
    at action (/b/s/w/ir/sdk/lib/_internal/js_runtime/lib/preambles/d8.js:275:31)
    at eventLoop (/b/s/w/ir/sdk/lib/_internal/js_runtime/lib/preambles/d8.js:258:9)
    at self.dartMainRunner (/b/s/w/ir/sdk/lib/_internal/js_runtime/lib/preambles/d8.js:276:5)
    at /b/s/w/ir/out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A02_t04/dynamic_semantics_member_invocation_A02_t04.js:3140:7
    at /b/s/w/ir/out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A02_t04/dynamic_semantics_member_invocation_A02_t04.js:3125:7
    at dartProgram (/b/s/w/ir/out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A02_t04/dynamic_semantics_member_invocation_A02_t04.js:3136:5)

Deobfuscated error and stack:
Expect.equals(expected: <42>, actual: <42>) fails.
    at wrapException        org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_helper.dart 1195:37
    at _fail                ../../../../../tests/co19/src/Utils/expect.dart 18:5
    at Expect.equals        ../../../../../tests/co19/src/Utils/expect_common.dart 15:7
    at main                 ../../../../../tests/co19/src/LanguageFeatures/Extension-types/dynamic_semantics_member_invocation_A02_t04.dart 50:12
    at action               sdk/lib/_internal/js_runtime/lib/preambles/d8.js 275:31
    at eventLoop            sdk/lib/_internal/js_runtime/lib/preambles/d8.js 258:9
    at self.dartMainRunner  sdk/lib/_internal/js_runtime/lib/preambles/d8.js 276:5
    at <fn>                 out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A02_t04/dynamic_semantics_member_invocation_A02_t04.js 3140:7
    at <fn>                 out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A02_t04/dynamic_semantics_member_invocation_A02_t04.js 3125:7
    at dartProgram          out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A02_t04/dynamic_semantics_member_invocation_A02_t04.js 3136:5


--- Re-run this test:
python3 tools/test.py -n dart2js-hostasserts-linux-d8 co19/LanguageFeatures/Extension-types/dynamic_semantics_member_invocation_A02_t04

/==================================================================================================================================================\
| co19/LanguageFeatures/Extension-types/dynamic_semantics_member_invocation_A03_t04 failed again (CompileTimeError -> RuntimeError, expected Pass) |
\==================================================================================================================================================/

--- Command "dart2js" (took 03.000866s):
DART_CONFIGURATION=ReleaseX64 sdk/bin/dart2js_developer -Dtest_runner.configuration=dart2js-hostasserts-linux-d8 --enable-experiment=inline-class --sound-null-safety --test-mode --packages=/b/s/w/ir/.dart_tool/package_config.json /b/s/w/ir/tests/co19/src/LanguageFeatures/Extension-types/dynamic_semantics_member_invocation_A03_t04.dart --sound-null-safety --out=/b/s/w/ir/out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A03_t04/dynamic_semantics_member_invocation_A03_t04.js

exit code:
0

stdout:
Compiled 9,875,523 input bytes (5,047,299 characters source) to 115,402 characters JavaScript in 3.79 seconds using 524.641 MB of memory

--- Command "d8" (took 73ms):
DART_CONFIGURATION=ReleaseX64 TEST_COMPILATION_DIR=/b/s/w/ir/out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A03_t04 /b/s/w/ir/third_party/d8/linux/d8 /b/s/w/ir/sdk/lib/_internal/js_runtime/lib/preambles/d8.js /b/s/w/ir/out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A03_t04/dynamic_semantics_member_invocation_A03_t04.js

exit code:
1

stdout:
/b/s/w/ir/sdk/lib/_internal/js_runtime/lib/preambles/d8.js:263: Expect.equals(expected: <42>, actual: <42>) fails.
          throw e;
          ^
Expect.equals(expected: <42>, actual: <42>) fails.
    at Object.wrapException (/b/s/w/ir/out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A03_t04/dynamic_semantics_member_invocation_A03_t04.js:321:43)
    at Object._fail (/b/s/w/ir/out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A03_t04/dynamic_semantics_member_invocation_A03_t04.js:2479:15)
    at Object.Expect_equals (/b/s/w/ir/out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A03_t04/dynamic_semantics_member_invocation_A03_t04.js:2488:11)
    at main (/b/s/w/ir/out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A03_t04/dynamic_semantics_member_invocation_A03_t04.js:2509:11)
    at action (/b/s/w/ir/sdk/lib/_internal/js_runtime/lib/preambles/d8.js:275:31)
    at eventLoop (/b/s/w/ir/sdk/lib/_internal/js_runtime/lib/preambles/d8.js:258:9)
    at self.dartMainRunner (/b/s/w/ir/sdk/lib/_internal/js_runtime/lib/preambles/d8.js:276:5)
    at /b/s/w/ir/out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A03_t04/dynamic_semantics_member_invocation_A03_t04.js:3136:7
    at /b/s/w/ir/out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A03_t04/dynamic_semantics_member_invocation_A03_t04.js:3121:7
    at dartProgram (/b/s/w/ir/out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A03_t04/dynamic_semantics_member_invocation_A03_t04.js:3132:5)

Deobfuscated error and stack:
Expect.equals(expected: <42>, actual: <42>) fails.
    at wrapException        org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_helper.dart 1195:37
    at _fail                ../../../../../tests/co19/src/Utils/expect.dart 18:5
    at Expect.equals        ../../../../../tests/co19/src/Utils/expect_common.dart 15:7
    at main                 ../../../../../tests/co19/src/LanguageFeatures/Extension-types/dynamic_semantics_member_invocation_A03_t04.dart 55:12
    at action               sdk/lib/_internal/js_runtime/lib/preambles/d8.js 275:31
    at eventLoop            sdk/lib/_internal/js_runtime/lib/preambles/d8.js 258:9
    at self.dartMainRunner  sdk/lib/_internal/js_runtime/lib/preambles/d8.js 276:5
    at <fn>                 out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A03_t04/dynamic_semantics_member_invocation_A03_t04.js 3136:7
    at <fn>                 out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A03_t04/dynamic_semantics_member_invocation_A03_t04.js 3121:7
    at dartProgram          out/ReleaseX64/generated_compilations/dart2js-hostasserts-linux-d8/tests_co19_src_LanguageFeatures_Extension-types_dynamic_semantics_member_invocation_A03_t04/dynamic_semantics_member_invocation_A03_t04.js 3132:5


--- Re-run this test:
python3 tools/test.py -n dart2js-hostasserts-linux-d8 co19/LanguageFeatures/Extension-types/dynamic_semantics_member_invocation_A03_t04
@sigmundch
Copy link
Member

Thanks for filing the issue.

cc @lrhn

I believe the current behavior was intentional and that in this case the test needs a small adjustment.

As noted in the documentation:

... This function does not guarantee to preserve the identity of stackTrace. The StackTrace object that is caught by a try/catch of this error, or which is set as the Error.stackTrace of an error, may not be the same stackTrace object provided as argument, but it will have the same contents according to StackTrace.toString.

I believe the test need to change from comparing the stack trace objects:

Expect.equals(st, _st);

To compare their String representations instead:

Expect.equals('$st', '$_st');

@sigmundch sigmundch added web-dart2js area-web-js Issues related to JavaScript support for Dart Web, including DDC, dart2js, and JS interop. web-eval evaluation support on the web and removed web-eval evaluation support on the web labels Aug 16, 2023
@lrhn
Copy link
Member

lrhn commented Aug 16, 2023

Yep, that sounds right. The internal representation of a stack trace can be whatever the platform needs it to be, as long as it looks the same when you do toString.

@sgrekhov
Copy link
Contributor Author

@sigmundch thank you for the clarification! dart-lang/co19#2213

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-web-js Issues related to JavaScript support for Dart Web, including DDC, dart2js, and JS interop. web-dart2js
Projects
None yet
Development

No branches or pull requests

3 participants