Skip to content

Commit efc62a8

Browse files
sigmundchCommit Queue
authored andcommitted
[test_runner] fix bug in regexp in stack trace deobfuscation
This logic is responsible for creating a readable deobfuscated stack from ddc and dart2js JavaScript stack traces. The logic was removing the query parameter of URLs, but accidentally matched multi-line strings and applied the regexp in invalid contexts (like the error message itself). Excluding `\n` from the regexp pattern prevents this issue. Example input (obfuscated error): ``` window.onerror called: http://127.0.0.1:35679/root_build/gen/utils/ddc/stable/sdk/amd/dart_sdk.js:5082: Uncaught Error Error: Expected a value of type 'FutureOr<FileSystem>?', but got one of type 'LegacyJavaScriptObject' at Object.throw_ [as throw] (http://127.0.0.1:35679/root_build/gen/utils/ddc/stable/sdk/amd/dart_sdk.js:5082:11) at Object.castError (http://127.0.0.1:35679/root_build/gen/utils/ddc/stable/sdk/amd/dart_sdk.js:5041:15) at Object.cast [as as] (http://127.0.0.1:35679/root_build/gen/utils/ddc/stable/sdk/amd/dart_sdk.js:5385:19) at dart.NullableType.new.as (http://127.0.0.1:35679/root_build/gen/utils/ddc/stable/sdk/amd/dart_sdk.js:7243:60) at _AsyncCompleter.new.complete (http://127.0.0.1:35679/root_build/gen/utils/ddc/stable/sdk/amd/dart_sdk.js:31216:28) at http://127.0.0.1:35679/root_build/gen/utils/ddc/stable/sdk/amd/dart_sdk.js:99073:19 ``` Example deobfuscation before (see truncated error and first frame was dropped accidentally): ``` window.onerror called: out/ReleaseX64/gen/utils/ddc/stable/sdk/amd/dart_sdk.js:5082: Uncaught Error Error: Expected a value of type 'FutureOr<FileSystem>:5082:11) at Object.castError ../../../../../../dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 127:3 at Object.cast ../../../../../../dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 818:12 at dart.NullableType.new.as ../../../../../../dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/types.dart 425:9 at _AsyncCompleter.new.complete ../../../../../../dart-sdk/lib/async/future_impl.dart 42:31 at <fn> ../../../../../../dart-sdk/lib/html/dart2js/html_dart2js.dart 33424:16 ``` but after (error and first frame recovered): ``` window.onerror called: out/ReleaseX64/gen/utils/ddc/stable/sdk/amd/dart_sdk.js:5082: Uncaught Error Error: Expected a value of type 'FutureOr<FileSystem>?', but got one of type 'LegacyJavaScriptObject' at Object.throw_ out/ReleaseX64/gen/utils/ddc/stable/sdk/amd/dart_sdk.js 5082:11 at Object.castError ../../../../../../dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 127:3 at Object.cast ../../../../../../dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 818:12 at dart.NullableType.new.as ../../../../../../dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/types.dart 425:9 at _AsyncCompleter.new.complete ../../../../../../dart-sdk/lib/async/future_impl.dart 42:31 at <fn> ../../../../../../dart-sdk/lib/html/dart2js/html_dart2js.dart 33424:16 ``` Change-Id: Id9f37efe9bdacc63aae3b24ebe0602a8ea7cf8fd Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/328765 Reviewed-by: Nicholas Shahan <[email protected]> Commit-Queue: Sigmund Cherem <[email protected]>
1 parent 81aaf6c commit efc62a8

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

pkg/test_runner/lib/src/command_output.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@ class BrowserCommandOutput extends CommandOutput
414414
.replaceAll(RegExp('http://[^/]*/root_build/'), '$_buildDirectory/')
415415
.replaceAll(RegExp('http://[^/]*/root_dart/'), '')
416416
// Remove query parameters (seen in .html URIs).
417-
.replaceAll(RegExp('\\?[^:]*:'), ':');
417+
.replaceAll(RegExp('\\?[^:\n]*:'), ':');
418418
// TODO(sigmund): change internal deobfuscation code to avoid spurious
419419
// error messages when files do not have a corresponding source-map.
420420
_deobfuscateAndWriteStack(stringStack, output);

0 commit comments

Comments
 (0)