Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 866927170c083846d494376c653608dfd5d29360
      
https://github.com/WebKit/WebKit/commit/866927170c083846d494376c653608dfd5d29360
  Author: Mark Lam <[email protected]>
  Date:   2024-05-28 (Tue, 28 May 2024)

  Changed paths:
    M JSTests/stress/stack-overflow-in-syntax-checker.js
    M Source/JavaScriptCore/jsc.cpp

  Log Message:
  -----------
  The stack-overflow-in-syntax-checker.js JSC stress test is flaky.
https://bugs.webkit.org/show_bug.cgi?id=274749
rdar://128786930

Reviewed by Justin Michaud.

We observed that the stack-overflow-in-syntax-checker.js test is flaky.  After 
a lot of
investigation, the issue turns out to be a test issue:

1. The test starts a worker thread using $262.agent.start.
2. The worker thread will always fail to parse its script: the script will 
cause the parser
   to recurse too deeply, thereby resulting in a StackOverflowError.
3. Since the StackOverflowError occurs during parsing, adding a try-catch block 
around the
   worker payload script (in 279015@main) does not help because the error 
occurs before the
   script even gets to execute.
4. If the worker thread throws the StackOverflowError, and propagate it all the 
way out,
   resulting in an uncaught exception before the main thread terminates, this 
will result
   in the process exiting with EXIT_FAILURE.  The test fails.
5. On the other hand, if the main thread finishes first before the worker 
thread can exit
   with EXIT_FAILURE, then the test passes.

The test is flaky because its result is dependent on whether the main thread or 
the worker
thread wins the race.

The purpose of this test is to ensure that the stack overflow in the parser 
does not result
in a crash.  Hence, whether we get an uncaught exception or not is irrelevant 
and should not
fail the test.

The fix is to add a new `--ignoreUncaughtExceptions` option to the jsc shell, 
and require
that option for this test.

* JSTests/stress/stack-overflow-in-syntax-checker.js:
(try.262.agent.start.262.agent.receiveBroadcast):
(try.262.agent.start.try.262.agent.receiveBroadcast): Deleted.
(try.catch): Deleted.
* Source/JavaScriptCore/jsc.cpp:
(checkException):
(printUsageStatement):
(CommandLine::parseArguments):
(CommandLine::CommandLine):

Canonical link: https://commits.webkit.org/279380@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to