> 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 two additional commits since the last revision: - Set limit on nested event loop count to 200 which seems less arbitrary - The max nested event loop limit is now platform-independent ------------- Changes: - all: https://git.openjdk.org/jfx/pull/1741/files - new: https://git.openjdk.org/jfx/pull/1741/files/0d44f217..b08594fe Webrevs: - full: https://webrevs.openjdk.org/?repo=jfx&pr=1741&range=03 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1741&range=02-03 Stats: 78 lines in 7 files changed: 19 ins; 44 del; 15 mod Patch: https://git.openjdk.org/jfx/pull/1741.diff Fetch: git fetch https://git.openjdk.org/jfx.git pull/1741/head:pull/1741 PR: https://git.openjdk.org/jfx/pull/1741