On Mon, 31 Mar 2025 17:49:59 GMT, Martin Fox <[email protected]> wrote:
>> There is an undocumented limit on nesting calls to CFRunLoopRun (or the
>> equivalent wrapper NSRunLoop methods). When the limit is hit the OS
>> terminates the Java app. The situation arises when a JavaFX app creates too
>> many nested event loops from within Platform.runLater runnables.
>>
>> This PR doesn't change the limit (which is 250+ nested loops) but it does
>> throw an exception just before the limit is reached so a JavaFX developer
>> will get a useful Java stack trace instead of an OS crash log.
>>
>> On the Mac the nested event loop has two stages: first we ask the run loop
>> to run, then we pull an event out and process it. A Platform.runLater
>> runnable is executed in the first stage so if the runnable starts a new
>> nested event loop the system will re-enter CFRunLoopRun. The same isn't true
>> if an input event handler starts a new nested event loop; at that point
>> we're in stage two and are past the call to CFRunLoopRun.
>
> Martin Fox has updated the pull request incrementally with one additional
> commit since the last revision:
>
> Added description of the new nested event loop limit.
Marked as reviewed by angorya (Reviewer).
modules/javafx.graphics/src/main/java/javafx/application/Platform.java line 296:
> 294: * {@link #canStartNestedEventLoop canStartNestedEventLoop} to check
> 295: * whether it is possible to start one.
> 296: *
+1
-------------
PR Review: https://git.openjdk.org/jfx/pull/1741#pullrequestreview-2730131518
PR Review Comment: https://git.openjdk.org/jfx/pull/1741#discussion_r2021535222