Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8251131

The JavaFX WebView JAR can not be loaded dynamically

XMLWordPrintable

    • web
    • x86_64
    • generic

      ADDITIONAL SYSTEM INFORMATION :
      Happens on any OS

      A DESCRIPTION OF THE PROBLEM :
      Even with Java 11+ the usage of the module path is not a must.
      While JavaFX 11+ has some limitations and need workarounds (https://bugs.openjdk.java.net/browse/JDK-8248122) to be executed as part of the classpath it is still possible.
      Some distributions (Bellsoft Liberica or Azul Zulu) even provide OpenJDK based build with a bundled JavaFX that is on the classpath by default.
      In general Java allows to add JARs at runtime (see java.net.URLClassLoader). When doiung this with the WebView specific Jars of JavaFX the described bug happens:

      After dynamically adding JavaFX WebView Jars to the classpath and displaying a WebView the complete app crashes without an exception.
      This is based on a pointer issue in native code.
      The following text is an excerpt of the crash file on MacOS:

      Process: java [80553]
      Path: /Users/USER/*/java
      Identifier: net.java.openjdk.cmd
      Version: 1.0 (1.0)
      Code Type: X86-64 (Native)
      Parent Process: java [80510]
      User ID: 501

      Date/Time: 2020-07-31 14:17:23.513 +0200
      OS Version: Mac OS X 10.15.5 (19F101)
      Report Version: 12
      Bridge OS Version: 3.0 (14Y908)
      Anonymous UUID: 6680E7C4-44F2-9D95-FFB8-E713FC6CEBDF

      Sleep/Wake UUID: D407941F-41AC-4F27-89FB-B782119DCFFD

      Time Awake Since Boot: 1000000 seconds
      Time Since Wake: 4500 seconds

      System Integrity Protection: enabled

      Crashed Thread: 19 Dispatch queue: org.webkit.DataURLDecoder

      Exception Type: EXC_BAD_ACCESS (SIGABRT)
      Exception Codes: KERN_INVALID_ADDRESS at 0x00007fd4bb879fe4
      Exception Note: EXC_CORPSE_NOTIFY

      VM Regions Near 0x7fd4bb879fe4:
          Stack 000070000daa9000-000070000dba7000 [ 1016K] rw-/rwx SM=COW thread 52
      -->
          MALLOC_TINY 00007fd5cbc00000-00007fd5cbd00000 [ 1024K] rw-/rwx SM=PRV

      Application Specific Information:
      abort() called

      ....

      Thread 19 Crashed:: Dispatch queue: org.webkit.DataURLDecoder
      0 libsystem_kernel.dylib
      0x00007fff71d6933a __pthread_kill + 10
      1 libsystem_pthread.dylib
      0x00007fff71e25e60 pthread_kill + 430
      2 libsystem_c.dylib
      0x00007fff71cf0808 abort + 120
      3 libjvm.dylib
      0x00000001105f1fe6 os::abort(bool, void*, void const*) + 22
      4 libjvm.dylib
      0x00000001107416cb VMError::report_and_die(int, char const*, char const*, __va_list_tag*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long) + 2889
      5 libjvm.dylib
      0x0000000110740b5d VMError::report_and_die(Thread*, unsigned int, unsigned char*, void*, void*, char const*, ...) + 155
      6 libjvm.dylib
      0x00000001107417a1 VMError::report_and_die(Thread*, unsigned int, unsigned char*, void*, void*) + 33
      7 libjvm.dylib
      0x00000001105f5ea5 JVM_handle_bsd_signal + 754
      8 libjvm.dylib
      0x00000001105f3a40 signalHandler(int, __siginfo*, void*) + 45
      9 libsystem_platform.dylib
      0x00007fff71e1a5fd _sigtramp + 29
      10 ???
      0x0000000134055270 0 + 5167731312
      11 libjvm.dylib
      0x000000011070e599 oopDesc* RawAccessBarrier<1097844ull>::oop_load<oopDesc*>(void*) + 9
      12 libjvm.dylib
      0x000000011070e60b oopDesc* G1BarrierSet::AccessBarrier<1097844ull, G1BarrierSet>::oop_load_not_in_heap<oopDesc*>(oopDesc**) + 11
      13 libjvm.dylib
      0x00000001103d4cb2 get_method_id(JNIEnv_*, _jclass*, char const*, char const*, bool, Thread*) + 142
      14 libjvm.dylib
      0x00000001103d4f47 jni_GetStaticMethodID + 234
      15 libjfxwebkit.dylib
      0x000000019909f26c WTF::scheduleDispatchFunctionsOnMainThread() + 412
      16 libjfxwebkit.dylib
      0x0000000198b24339 WTF::Function<void ()>::CallableWrapper<WebCore::DataURLDecoder::decode(WTF::URL const&, WebCore::DataURLDecoder::ScheduleContext const&, WTF::Function<void (WTF::Optional<WebCore::DataURLDecoder::Result>)>&&)::$_0>::call() + 889
      17 libjfxwebkit.dylib
      0x00000001990a12f8 WTF::BlockPtr<void ()> WTF::BlockPtr<void ()>::fromCallable<WTF::WorkQueue::dispatch(WTF::Function<void ()>&&)::$_0>(WTF::WorkQueue::dispatch(WTF::Function<void ()>&&)::$_0)::'lambda'(void*)::__invoke(void*) + 72
      18 libdispatch.dylib
      0x00007fff71bc76c4 _dispatch_call_block_and_release + 12
      19 libdispatch.dylib
      0x00007fff71bc8658 _dispatch_client_callout + 8
      20 libdispatch.dylib
      0x00007fff71bcdc44 _dispatch_lane_serial_drain + 597
      21 libdispatch.dylib
      0x00007fff71bce5d6 _dispatch_lane_invoke + 363
      22 libdispatch.dylib
      0x00007fff71bd7c09 _dispatch_workloop_worker_thread + 596
      23 libsystem_pthread.dylib
      0x00007fff71e22a3d _pthread_wqthread + 290
      24 libsystem_pthread.dylib
      0x00007fff71e21b77 start_wqthread + 15

      The following issues are mention the problem and contain additional information:

      https://github.com/javafxports/openjdk-jfx/issues/316#issuecomment-457912843
      https://github.com/karakun/OpenWebStart/issues/125


      REGRESSION : Last worked in version 8u261

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Add the JavaFX jars dynamically to a running application and open the WebView

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      WebView is displayed
      ACTUAL -
      Application crash

      FREQUENCY : always


            pnarayanaswa Praveen Narayanaswamy
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: