OpenJFX custom build - Java application crash (semi-related to 8262276)

Kevin Rushforth kevin.rushforth at oracle.com
Fri Mar 12 17:54:42 UTC 2021


Arun should be able to help you with the crash you are seeing in debug mode.

Regarding the hang, do you have a test case that will reproduce it? A 
few different developers have reported similar hangs. We ended up 
closing a recently-filed bug, JDK-8260238 [1], because were (and still 
are) unable to reproduce the hang.

-- Kevin

[1] https://bugs.openjdk.java.net/browse/JDK-8260238


On 3/12/2021 1:06 AM, Primož Kokol wrote:
> Hi everyone,
>
> I would need some help related to OpenJFX build.
>
> I was able to successfully prepare a build following this procedure (from
> pull/417 request):
> https://github.com/openjdk/jfx/pull/417#issuecomment-795178731
>
> We wanted to use it in our existing application (Java 11.0.10) to debug an
> issue where the application would hang/freeze for no obvious reason because
> of WebKit.
>
> In order to use this build we've manually overridden javafx-*.jar files in
> our application with the ones from the above build.
> We've also placed all produced DLL files in our application's "bin" folder
> so they are properly picked up (I've verified and I can confirm that
> jfxwebkit.dll produced by our debug build is loaded).
>
> After using this native debug build, the application will crash instead
> with:
> Unhandled exception at 0x00007FFA1E93286E (ucrtbase.dll) in java.exe: Fatal
> program exit requested.
>
> It looks like it happens when JS code calls Java method.
>
> There is the call stack at the time when exception happens:
>
>> ucrtbase.dll!abort () Unknown Non-user code. Symbols loaded.
>    jfxwebkit.dll!WTFCrashWithInfo(int __formal, const char * __formal, const
> char * __formal, int __formal) Line 672 C++ Symbols loaded.
>
> jfxwebkit.dll!JSC::JSCastingHelpers::inheritsJSTypeImpl<JSC::InternalFunction,JSC::InternalFunction>(JSC::VM
> & vm, JSC::InternalFunction * from, JSC::JSTypeRange range) Line 143 C++
> Symbols loaded.
>
> jfxwebkit.dll!JSC::JSCastingHelpers::InheritsTraits<JSC::InternalFunction>::inherits<JSC::InternalFunction>(JSC::VM
> & vm, JSC::InternalFunction * from) Line 164 C++ Symbols loaded.
>    jfxwebkit.dll!JSC::jsDynamicCast<JSC::InternalFunction
> *,JSC::InternalFunction>(JSC::VM & vm, JSC::InternalFunction * from) Line
> 182 C++ Symbols loaded.
>    jfxwebkit.dll!JSC::InternalFunction::finishCreation(JSC::VM & vm, const
> WTF::String & name, JSC::InternalFunction::NameAdditionMode
> nameAdditionMode) Line 49 C++ Symbols loaded.
>    jfxwebkit.dll!JSC::RuntimeMethod::finishCreation(JSC::VM & vm, const
> WTF::String & ident) Line 58 C++ Symbols loaded.
>    jfxwebkit.dll!JavaRuntimeMethod::finishCreation(JSC::VM & globalData,
> const WTF::String & name) Line 231 C++ Symbols loaded.
>    jfxwebkit.dll!JavaRuntimeMethod::create(JSC::JSGlobalObject *
> globalObject, const WTF::String & name, JSC::Bindings::Method * method)
> Line 212 C++ Symbols loaded.
>    jfxwebkit.dll!JSC::Bindings::JavaInstance::getMethod(JSC::JSGlobalObject
> * globalObject, JSC::PropertyName propertyName) Line 241 C++ Symbols loaded.
>
> jfxwebkit.dll!JSC::Bindings::RuntimeObject::methodGetter(JSC::JSGlobalObject
> * lexicalGlobalObject, __int64 thisValue, JSC::PropertyName propertyName)
> Line 124 C++ Symbols loaded.
>    jfxwebkit.dll!JSC::PropertySlot::customGetter(JSC::JSGlobalObject *
> globalObject, JSC::PropertyName propertyName) Line 48 C++ Symbols loaded.
>    jfxwebkit.dll!JSC::PropertySlot::getValue(JSC::JSGlobalObject *
> globalObject, JSC::PropertyName propertyName) Line 422 C++ Symbols loaded.
>    jfxwebkit.dll!JSC::JSValue::get(JSC::JSGlobalObject * globalObject,
> JSC::PropertyName propertyName, JSC::PropertySlot & slot) Line 963 C++
> Symbols loaded.
>    jfxwebkit.dll!JSC::LLInt::performLLIntGetByID(const JSC::Instruction *
> pc, JSC::CodeBlock * codeBlock, JSC::JSGlobalObject * globalObject,
> JSC::JSValue baseValue, const JSC::Identifier & ident,
> JSC::GetByIdModeMetadata & metadata) Line 759 C++ Symbols loaded.
>    jfxwebkit.dll!llint_slow_path_get_by_id(JSC::CallFrame * callFrame, const
> JSC::Instruction * pc) Line 833 C++ Symbols loaded.
>    jfxwebkit.dll!llint_entry () Unknown Non-user code. Symbols loaded.
>    000000c7ef8fae90() Unknown Non-user code
>    000000c7ef8faf50() Unknown Non-user code
>    0000028d52eeedbb() Unknown Non-user code
>    cccccccccccccccc() Unknown Non-user code
>    0000028d52eeedb6() Unknown Non-user code
>
> ... and partial output from the output console:
>
> ....
> (S)tacking Context/(F)orced SC/O(P)portunistic SC, (N)ormal flow only,
> (O)verflow clip, (A)lpha (opacity or mask), has (B)lend mode, (I)solates
> blending, (T)ransform-ish, (F)ilter, Fi(X)ed position, Behaves as fi(x)ed,
> (C)omposited, (P)rovides backing/uses (p)rovided backing/paints to
> (a)ncestor, (c)omposited descendant, (s)scrolling ancestor, (t)transformed
> ancestor
> Dirty (z)-lists, Dirty (n)ormal flow lists
> Traversal needs: requirements (t)raversal on descendants, (b)acking or
> hierarchy traversal on descendants, (r)equirements traversal on all
> descendants, requirements traversal on all (s)ubsequent layers, (h)ierarchy
> traversal on all descendants, update of paint (o)rder children
> Update needs:    post-(l)ayout requirements, (g)eometry, (k)ids geometry,
> (c)onfig, layer conne(x)ion, (s)crolling tree
> Scrolling scope: box contents
>
> S-------------- -- ------ -----s 34 34 0000028D98F22260 (0,0) width=460
> height=650 RenderView 0x28d4d4d1cd0
> S-------------- -- ------ ------ 34 34   + 0000028D4D98D430 (0,0) width= no
> compositing work to do
> FrameView 0000028D4F2A4CF0 performPostLayoutTasks
>
> FrameView 0000028D4F2A4CF0 updateLayoutViewport() totalContentSize
> width=460 height=650 unscaledDocumentRect (0,0) width=460 height=650 header
> height 0 footer height 0 fixed behavior 0
> layoutViewport: (0,0) width=460 height=650
> visualViewport: (0,0) width=460 height=650 (is override 0)
> stable origins: min: (0.00,0.00) max: (0.00,0.00)
> DocumentTimelinesController::updateAnimationsAndSendEvents for time 24.89s
> DeclarativeAnimation::tick for element node 0000028D40C406A0 DIV
> 0x28d40c406a0 class='leaflet-proxy leaflet-zoom-animated'
> KeyframeEffect::invalidate on element node 0000028D40C406A0 DIV
> 0x28d40c406a0 class='leaflet-proxy leaflet-zoom-animated'
> DeclarativeAnimation::tick for element node 0000028D40C42E90 DIV
> 0x28d40c42e90 class='leaflet-tile-container leaflet-zoom-animated'
> KeyframeEffect::invalidate on element node 0000028D40C42E90 DIV
> 0x28d40c42e90 class='leaflet-tile-container leaflet-zoom-animated'
> EventDispatcher::dispatchEvent transitioncancel on node DIV
> EventDispatcher::dispatchEvent transitioncancel on node DIV
> ASSERTION FAILED: canCast == from->JSCell::inherits(vm, Target::info())
> C:\jfx\modules\javafx.web\src\main\native\Source\JavaScriptCore\runtime\JSCast.h(143)
> : JSC::JSCastingHelpers::inheritsJSTypeImpl
> Unhandled exception at 0x00007FFA1E93286E (ucrtbase.dll) in java.exe: Fatal
> program exit requested.
>
> Note that this crash isn't happening with official JavaFX 15, 16, and
> 17-ea+2 builds (that are at the time of writing this available on the
> maven), but unfortunately we can't use these for debugging purposes.
>
> Does that indicate any issues with the native debug build or is this some
> regression that was introduced in the current `master` branch recently
> (after 17-ea+2)?
>
> Thanks for any helpful hints/advice in advance!
>
> Best regards,
> PrimosK



More information about the openjfx-dev mailing list