[External] : Re: OpenJFX custom build - Java application crash (semi-related to 8262276)

Arun Joseph arun.aj.joseph at oracle.com
Tue Mar 16 12:30:22 UTC 2021


The app is now crashing at InternalFunction which calls jsDynamicCast in JSCast.h, which lead to the initial crash. This assert failure occurs because the type value is ObjectType instead of InternalFunctionType or NullSetterFunctionType. I need to check why this is happens.

NDEBUG and ASSERT_ENABLED are used interchangeably in the WebKit code. So, for creating a build without asserts, you can either use the release build PDBs, or set NDEBUG to 1 in WTF/wtf/PlatformEnable.h to generate a minimal debug build.

— Arun Joseph

On 15-Mar-2021, at 6:08 PM, Primož Kokol <primoz.kokol at gmail.com<mailto:primoz.kokol at gmail.com>> wrote:

I've tried to remove this particular assert statement at "JSCast.h:143":
// ASSERT_UNUSED(vm, canCast == from->JSCell::inherits(vm, Target::info()));

... and now application crashes at different assert statement:

> jfxwebkit.dll!WTFCrashWithInfo(int __formal, const char * __formal, const char * __formal, int __formal) Line 672 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.
  00000025dabfaf00() Unknown Non-user code
  00000025dabfafc0() Unknown Non-user code
  00000164ca445b4b() Unknown Non-user code
  cccccccccccccccc() Unknown Non-user code
  00000164ca445b46() Unknown Non-user code

Is there any way we could turn off assertions in general when producing debug build?

On Sat, 13 Mar 2021 at 05:41, Arun Joseph <arun.aj.joseph at oracle.com<mailto:arun.aj.joseph at oracle.com>> wrote:
I’m currently looking into why the native debug build is crashing. This same assert fails while running FileReaderTest using the native debug build. For the time being, you can try building by removing this particular assert statement for debugging.

— Arun Joseph

> On 12-Mar-2021, at 11:47 PM, Primož Kokol <primoz.kokol at gmail.com<mailto:primoz.kokol at gmail.com>> wrote:
>
> Hi Kevin,
>
> Unfortunately I don't have a test case. We are using various WebViews in
> our production application hence we don't know where/why exactly the
> application freezes.
>
> We were hoping that we will be able to identify it using the native debug
> build (& attached debugged) but it is now unfortunately crashing with the
> above error.
>
> Side note:
> Should I contact Arun directly or is he seeing these messages?
>
> -- PrimosK
>
> On Fri, 12 Mar 2021 at 19:00, Kevin Rushforth <kevin.rushforth at oracle.com<mailto:kevin.rushforth at oracle.com>>
> wrote:
>
>> 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<https://urldefense.com/v3/__https://github.com/openjdk/jfx/pull/417*issuecomment-795178731__;Iw!!GqivPVa7Brio!Lu8MhGsAzeidNANqG0a0sCdMXLnMmT0YMF8vL7Z3VX_HYg2sglHpvMA9Vxw2b72f-2Uo$>
>>>
>>> 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