WebKit Crashes JVM when removing nodes from DOM on wrong thread.

Scott Palmer swpalmer at gmail.com
Sun Feb 12 23:49:57 UTC 2023


I'm seeing a hard crash in native code that brings down the JVM when I
accidentally called removeChild on an element from a WebView Document while
not on the Platform thread.  While I know it's my error, bringing down the
JVM instead of throwing an exception seems wrong.

Should this be considered a bug or not?

Scott

With JavaFX 17:
Thread 50 Crashed:: Java: ForkJoinPool-1-worker-5
0   libjfxwebkit.dylib                   0x14fa2ac33 WTFCrashWithInfo(int,
char const*, char const*, int) + 19
1   libjfxwebkit.dylib                   0x14ea5b60d
WebCore::TimerBase::setNextFireTime(WTF::MonotonicTime) + 541
2   libjfxwebkit.dylib                   0x14ee0a513
WebCore::RenderTreeBuilder::detachFromRenderElement(WebCore::RenderElement&,
WebCore::RenderObject&, WebCore::RenderTreeBuilder::WillBeDestroyed) + 179
3   libjfxwebkit.dylib                   0x14ee09fa2
WebCore::RenderTreeBuilder::Block::detach(WebCore::RenderBlock&,
WebCore::RenderObject&,
WebCore::RenderTreeBuilder::CanCollapseAnonymousBlock) + 562
4   libjfxwebkit.dylib                   0x14ee085ef
WebCore::RenderTreeBuilder::detach(WebCore::RenderElement&,
WebCore::RenderObject&,
WebCore::RenderTreeBuilder::CanCollapseAnonymousBlock) + 543
5   libjfxwebkit.dylib                   0x14ee082ba
WebCore::RenderTreeBuilder::destroy(WebCore::RenderObject&) + 58
6   libjfxwebkit.dylib                   0x14ee0bd57
WebCore::RenderTreeBuilder::destroyAndCleanUpAnonymousWrappers(WebCore::RenderObject&)
+ 263
7   libjfxwebkit.dylib                   0x14ee19aae
WebCore::RenderTreeUpdater::tearDownRenderers(WebCore::Element&,
WebCore::RenderTreeUpdater::TeardownType,
WebCore::RenderTreeBuilder&)::$_7::operator()(unsigned int) const + 734
8   libjfxwebkit.dylib                   0x14ee18c13
WebCore::RenderTreeUpdater::tearDownRenderers(WebCore::Element&,
WebCore::RenderTreeUpdater::TeardownType, WebCore::RenderTreeBuilder&) +
1171
9   libjfxwebkit.dylib                   0x14ee196d1
WebCore::RenderTreeUpdater::tearDownRenderers(WebCore::Element&) + 65
10  libjfxwebkit.dylib                   0x14e46db9c
WebCore::ContainerNode::removeBetween(WebCore::Node*, WebCore::Node*,
WebCore::Node&) + 108
11  libjfxwebkit.dylib                   0x14e46ad44
WebCore::ContainerNode::removeChild(WebCore::Node&) + 324
12  libjfxwebkit.dylib                   0x14e50e24b
WebCore::Node::removeChild(WebCore::Node&) + 43
13  libjfxwebkit.dylib                   0x14d98deeb
Java_com_sun_webkit_dom_NodeImpl_removeChildImpl + 107
14  ???                                 0x1203e753a ???
15  ???                                 0x1203e335c ???
16  ???                                 0x1203e36a2 ???
17  ???                                 0x1203e342b ???
18  ???                                 0x1203e342b ???
19  ???                                 0x1203e388f ???
20  ???                                 0x1203e342b ???
21  ???                                 0x1203e3317 ???
22  ???                                 0x1203e3317 ???
23  ???                                 0x1203e342b ???
24  ???                                 0x1203e3317 ???
25  ???                                 0x1203e342b ???
26  ???                                 0x1203dacc9 ???
27  libjvm.dylib                         0x110790af6
JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*,
JavaThread*) + 710
28  libjvm.dylib                         0x11078fb47
JavaCalls::call_virtual(JavaValue*, Klass*, Symbol*, Symbol*,
JavaCallArguments*, JavaThread*) + 327
29  libjvm.dylib                         0x11078fc13
JavaCalls::call_virtual(JavaValue*, Handle, Klass*, Symbol*, Symbol*,
JavaThread*) + 99
30  libjvm.dylib                         0x11083ab94
thread_entry(JavaThread*, JavaThread*) + 180
31  libjvm.dylib                         0x110d164af
JavaThread::thread_main_inner() + 335
32  libjvm.dylib                         0x110d1481f Thread::call_run() +
207
33  libjvm.dylib                         0x110b1f898
thread_native_entry(Thread*) + 328
34  libsystem_pthread.dylib          0x7ff8062b4259 _pthread_start + 125
35  libsystem_pthread.dylib          0x7ff8062afc7b thread_start + 15


With JavaFX 19.0.2.1
Thread 48 Crashed:: Java: ForkJoinPool-1-worker-2
0   libjfxwebkit.dylib                   0x14f2eb9f3 0x14d0d8000 + 35731955
1   libjfxwebkit.dylib                   0x14e3744a6 0x14d0d8000 + 19514534
2   libjfxwebkit.dylib                   0x14e747d49 0x14d0d8000 + 23526729
3   libjfxwebkit.dylib                   0x14e747798 0x14d0d8000 + 23525272
4   libjfxwebkit.dylib                   0x14e745b7f 0x14d0d8000 + 23518079
5   libjfxwebkit.dylib                   0x14e745837 0x14d0d8000 + 23517239
6   libjfxwebkit.dylib                   0x14e749766 0x14d0d8000 + 23533414
7   libjfxwebkit.dylib                   0x14e757dc1 0x14d0d8000 + 23592385
8   libjfxwebkit.dylib                   0x14e757033 0x14d0d8000 + 23588915
9   libjfxwebkit.dylib                   0x14e757aa1 0x14d0d8000 + 23591585
10  libjfxwebkit.dylib                   0x14dd3a2ec 0x14d0d8000 + 12985068
11  libjfxwebkit.dylib                   0x14dd37344 0x14d0d8000 + 12972868
12  libjfxwebkit.dylib                   0x14dddd01b 0x14d0d8000 + 13651995
13  libjfxwebkit.dylib                   0x14d18841b
Java_com_sun_webkit_dom_NodeImpl_removeChildImpl + 107
14  ???                                 0x120a6453a ???
15  ???                                 0x120a6035c ???
16  ???                                 0x120a606a2 ???
17  ???                                 0x120a6042b ???
18  ???                                 0x120a6042b ???
19  ???                                 0x120a6088f ???
20  ???                                 0x120a6042b ???
21  ???                                 0x120a60317 ???
22  ???                                 0x120a60317 ???
23  ???                                 0x120a6042b ???
24  ???                                 0x120a60317 ???
25  ???                                 0x120a6042b ???
26  ???                                 0x120a57cc9 ???
27  libjvm.dylib                         0x110e0daf6
JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*,
JavaThread*) + 710
28  libjvm.dylib                         0x110e0cb47
JavaCalls::call_virtual(JavaValue*, Klass*, Symbol*, Symbol*,
JavaCallArguments*, JavaThread*) + 327
29  libjvm.dylib                         0x110e0cc13
JavaCalls::call_virtual(JavaValue*, Handle, Klass*, Symbol*, Symbol*,
JavaThread*) + 99
30  libjvm.dylib                         0x110eb7b94
thread_entry(JavaThread*, JavaThread*) + 180
31  libjvm.dylib                         0x1113934af
JavaThread::thread_main_inner() + 335
32  libjvm.dylib                         0x11139181f Thread::call_run() +
207
33  libjvm.dylib                         0x11119c898
thread_native_entry(Thread*) + 328
34  libsystem_pthread.dylib          0x7ff8062b4259 _pthread_start + 125
35  libsystem_pthread.dylib          0x7ff8062afc7b thread_start + 15
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/openjfx-dev/attachments/20230212/116cb339/attachment-0001.htm>


More information about the openjfx-dev mailing list