JDK-8260238 : Java or JavaFX application freezes after some time when using the WebView
  • Type: Bug
  • Component: javafx
  • Sub-Component: web
  • Affected Version: 8u271
  • Priority: P4
  • Status: Closed
  • Resolution: Cannot Reproduce
  • OS: windows_10
  • CPU: x86_64
  • Submitted: 2021-01-20
  • Updated: 2021-03-18
  • Resolved: 2021-01-21
Related Reports
Relates :  
Description
ADDITIONAL SYSTEM INFORMATION :
Reproduced with:
* Oracle JRE 1.8.0_271 win 64
* zulu8.50.0.53-ca-fx-jre8.0.275-win_x64

A DESCRIPTION OF THE PROBLEM :
The Java or JavaFX application that uses a WebView freezes and no longer responds to anything. It doesn't crash, it freezes. This happens randomly with very small apps as well as larger ones. We tried with a Java app embedding an JXPanel and a 100% JavaFX application. Both freeze.

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Compile the attached application

Run the app, browse, switch another application several times. Then leave it running. It will eventually freeze.


EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The application should not freeze
ACTUAL -
The application eventually freezes.

Once frozen, we forced a Windows full crash dump and inspected with Win10dbg. Here are the results:

0:000> !locks

CritSec ntdll!LdrpLoaderLock+0 at 00007ff89a31f4f8
WaiterWoken        No
LockCount          1
RecursionCount     1
OwningThread       2d14
EntryCount         0
ContentionCount    1
*** Locked

Scanned 18 critical sections
0:000> !cs -l
-----------------------------------------
DebugInfo          = 0x00007ff89a31f978
Critical section   = 0x00007ff89a31f4f8 (ntdll!LdrpLoaderLock+0x0)
LOCKED
LockCount          = 0x1
WaiterWoken        = No
OwningThread       = 0x0000000000002d14
RecursionCount     = 0x1
LockSemaphore      = 0xFFFFFFFF
SpinCount          = 0x0000000004000000


0:000> ~
.  0  Id: 29a8.416c Suspend: 0 Teb: 00000000`0092f000 Unfrozen
   1  Id: 29a8.1258 Suspend: 0 Teb: 00000000`00937000 Unfrozen
   2  Id: 29a8.3b8c Suspend: 0 Teb: 00000000`00939000 Unfrozen
   3  Id: 29a8.3598 Suspend: 0 Teb: 00000000`0093b000 Unfrozen
   4  Id: 29a8.41e0 Suspend: 0 Teb: 00000000`0093d000 Unfrozen
   5  Id: 29a8.4270 Suspend: 0 Teb: 00000000`0093f000 Unfrozen
   6  Id: 29a8.3e38 Suspend: 0 Teb: 00000000`00941000 Unfrozen
   7  Id: 29a8.2f4c Suspend: 0 Teb: 00000000`00943000 Unfrozen
   8  Id: 29a8.3aa4 Suspend: 0 Teb: 00000000`00945000 Unfrozen
   9  Id: 29a8.1874 Suspend: 0 Teb: 00000000`00947000 Unfrozen
  10  Id: 29a8.4354 Suspend: 0 Teb: 00000000`00949000 Unfrozen
  11  Id: 29a8.9ec Suspend: 0 Teb: 00000000`0094b000 Unfrozen
  12  Id: 29a8.3f8c Suspend: 0 Teb: 00000000`0094d000 Unfrozen
  13  Id: 29a8.2874 Suspend: 0 Teb: 00000000`0094f000 Unfrozen
  14  Id: 29a8.1184 Suspend: 0 Teb: 00000000`00951000 Unfrozen
  15  Id: 29a8.2e84 Suspend: 0 Teb: 00000000`00953000 Unfrozen
  16  Id: 29a8.dcc Suspend: 0 Teb: 00000000`00955000 Unfrozen
  17  Id: 29a8.3f48 Suspend: 0 Teb: 00000000`00957000 Unfrozen
  18  Id: 29a8.1df0 Suspend: 0 Teb: 00000000`00959000 Unfrozen
  19  Id: 29a8.42e4 Suspend: 0 Teb: 00000000`0095b000 Unfrozen
  20  Id: 29a8.2c60 Suspend: 0 Teb: 00000000`0095d000 Unfrozen
  21  Id: 29a8.3724 Suspend: 0 Teb: 00000000`0095f000 Unfrozen
  22  Id: 29a8.1fd0 Suspend: 0 Teb: 00000000`00961000 Unfrozen
  23  Id: 29a8.4178 Suspend: 0 Teb: 00000000`00963000 Unfrozen
  24  Id: 29a8.37f8 Suspend: 0 Teb: 00000000`00965000 Unfrozen
  25  Id: 29a8.2984 Suspend: 0 Teb: 00000000`00967000 Unfrozen
  26  Id: 29a8.3d48 Suspend: 0 Teb: 00000000`00969000 Unfrozen
  27  Id: 29a8.432c Suspend: 0 Teb: 00000000`00973000 Unfrozen
  28  Id: 29a8.a2c Suspend: 0 Teb: 00000000`00975000 Unfrozen
  29  Id: 29a8.3aac Suspend: 0 Teb: 00000000`00977000 Unfrozen
  30  Id: 29a8.3b24 Suspend: 0 Teb: 00000000`00979000 Unfrozen
  31  Id: 29a8.3088 Suspend: 0 Teb: 00000000`0097b000 Unfrozen
  32  Id: 29a8.2e30 Suspend: 0 Teb: 00000000`0097f000 Unfrozen
  33  Id: 29a8.4208 Suspend: 0 Teb: 00000000`00989000 Unfrozen
  34  Id: 29a8.1e80 Suspend: 0 Teb: 00000000`0098b000 Unfrozen
  35  Id: 29a8.4014 Suspend: 0 Teb: 00000000`0098f000 Unfrozen
  36  Id: 29a8.2970 Suspend: 0 Teb: 00000000`00991000 Unfrozen
  37  Id: 29a8.42d4 Suspend: 0 Teb: 00000000`00993000 Unfrozen
  38  Id: 29a8.3414 Suspend: 0 Teb: 00000000`00995000 Unfrozen
  39  Id: 29a8.b50 Suspend: 0 Teb: 00000000`009a5000 Unfrozen
  40  Id: 29a8.3c1c Suspend: 0 Teb: 00000000`009a7000 Unfrozen
  41  Id: 29a8.b8c Suspend: 0 Teb: 00000000`009a9000 Unfrozen
  42  Id: 29a8.b24 Suspend: 0 Teb: 00000000`009ab000 Unfrozen
  43  Id: 29a8.3b54 Suspend: 0 Teb: 00000000`009ad000 Unfrozen
  44  Id: 29a8.4300 Suspend: 0 Teb: 00000000`009af000 Unfrozen
  45  Id: 29a8.6c0 Suspend: 0 Teb: 00000000`009b3000 Unfrozen
  46  Id: 29a8.4374 Suspend: 0 Teb: 00000000`009b5000 Unfrozen
  47  Id: 29a8.41f8 Suspend: 0 Teb: 00000000`009cd000 Unfrozen
  48  Id: 29a8.3528 Suspend: 0 Teb: 00000000`009db000 Unfrozen
  49  Id: 29a8.3d88 Suspend: 0 Teb: 00000000`009f3000 Unfrozen
  50  Id: 29a8.38a4 Suspend: 0 Teb: 00000000`009a1000 Unfrozen
  51  Id: 29a8.4274 Suspend: 0 Teb: 00000000`0084a000 Unfrozen
  52  Id: 29a8.4058 Suspend: 0 Teb: 00000000`00870000 Unfrozen
  53  Id: 29a8.1c80 Suspend: 0 Teb: 00000000`00820000 Unfrozen
  54  Id: 29a8.14f0 Suspend: 0 Teb: 00000000`00822000 Unfrozen
  55  Id: 29a8.4324 Suspend: 0 Teb: 00000000`00824000 Unfrozen
  56  Id: 29a8.2810 Suspend: 0 Teb: 00000000`00826000 Unfrozen
  57  Id: 29a8.2d14 Suspend: 0 Teb: 00000000`00828000 Unfrozen
  58  Id: 29a8.2d18 Suspend: 0 Teb: 00000000`0082a000 Unfrozen
  59  Id: 29a8.34c4 Suspend: 0 Teb: 00000000`0089a000 Unfrozen
  60  Id: 29a8.38b4 Suspend: 0 Teb: 00000000`0089e000 Unfrozen
  61  Id: 29a8.43c4 Suspend: 0 Teb: 00000000`00983000 Unfrozen
  62  Id: 29a8.415c Suspend: 0 Teb: 00000000`008d8000 Unfrozen
  63  Id: 29a8.2308 Suspend: 0 Teb: 00000000`00812000 Unfrozen
  64  Id: 29a8.3fd8 Suspend: 0 Teb: 00000000`00814000 Unfrozen
  65  Id: 29a8.413c Suspend: 0 Teb: 00000000`00816000 Unfrozen
  66  Id: 29a8.3ee4 Suspend: 0 Teb: 00000000`00818000 Unfrozen
  67  Id: 29a8.2ddc Suspend: 0 Teb: 00000000`00872000 Unfrozen
  68  Id: 29a8.3c0c Suspend: 0 Teb: 00000000`009f7000 Unfrozen
  69  Id: 29a8.22c4 Suspend: 0 Teb: 00000000`0092a000 Unfrozen
  70  Id: 29a8.30f4 Suspend: 0 Teb: 00000000`009d1000 Unfrozen
  71  Id: 29a8.3660 Suspend: 0 Teb: 00000000`009d3000 Unfrozen
  72  Id: 29a8.2cd0 Suspend: 0 Teb: 00000000`009d5000 Unfrozen
  73  Id: 29a8.41a8 Suspend: 0 Teb: 00000000`009d7000 Unfrozen
  74  Id: 29a8.1b6c Suspend: 0 Teb: 00000000`009d9000 Unfrozen
  75  Id: 29a8.3a84 Suspend: 0 Teb: 00000000`009dd000 Unfrozen
  76  Id: 29a8.2714 Suspend: 0 Teb: 00000000`009df000 Unfrozen
  77  Id: 29a8.3988 Suspend: 0 Teb: 00000000`009e1000 Unfrozen
  78  Id: 29a8.43b8 Suspend: 0 Teb: 00000000`009e3000 Unfrozen
  79  Id: 29a8.2834 Suspend: 0 Teb: 00000000`009e5000 Unfrozen
  80  Id: 29a8.3bfc Suspend: 0 Teb: 00000000`009e7000 Unfrozen

0:000> ~57 kv
 # Child-SP          RetAddr           : Args to Child                                                           : Call Site
00 00000000`6aaff7c8 00007ff8`96b245c3 : 00000000`00000000 00000000`527001ea 00000000`00000030 00000000`00000030 : ntdll!NtWaitForSingleObject+0x14
01 00000000`6aaff7d0 00000000`528b3a8d : 00000000`3d7c9200 00000000`02ac4440 00000000`00000000 00000000`00000cd8 : KERNELBASE!WaitForSingleObjectEx+0x93
02 00000000`6aaff870 00000000`5282cd5b : 00000000`3d7c9200 00000000`02ac4440 00000000`3d87d800 00000000`00000000 : jvm!JVM_RaiseSignal+0x523d
03 00000000`6aaff8a0 00000000`5282d3b7 : 00000000`3d87d800 00000000`02ac4440 00000000`00000000 00007ff8`9a219860 : jvm!JVM_Sleep+0x7c88b
04 00000000`6aaff8d0 00000000`5276f785 : 00000000`00000000 00000000`3d87d800 00000000`00000001 00000000`6aaffa70 : jvm!JVM_Sleep+0x7cee7
05 00000000`6aaff900 00007ff8`3ed36377 : 00000000`5a938b28 00000000`00000001 00000000`00000001 60f632d9`00000003 : jvm!JNI_CreateJavaVM+0x205
06 00000000`6aaff9a0 00007ff8`3ed4937b : 00000000`5a938b28 00000000`00000001 7ff00000`00000000 00000000`6aaffa70 : jfxwebkit!WTF::isMainThread+0x57
07 00000000`6aaff9f0 00007ff8`3eee58fd : 00000000`00000001 00007ff8`9a1d267d 00000000`001d0000 00007ff8`711530de : jfxwebkit!WTF::Thread::create+0x29b
08 00000000`6aaffb30 00007ff8`3ee2d077 : 00000000`00000020 00000000`56efceb0 00000000`56efcea0 00000000`56efce70 : jfxwebkit!WTF::platformUserPreferredLanguages+0x15a95d
09 00000000`6aaffb60 00007ff8`9a208f07 : 00000000`7ffe0385 00000000`00000000 00000000`00000003 00000000`7ffe0384 : jfxwebkit!WTF::platformUserPreferredLanguages+0xa20d7
0a 00000000`6aaffb90 00007ff8`9a20903b : 00007ff8`3eee8a00 00007ff8`3d660000 00007ff8`00000003 00000000`00828000 : ntdll!LdrpCallInitRoutine+0x6f
0b 00000000`6aaffc00 00007ff8`9a2065b1 : 00000000`00828000 00000000`00828000 00007ff8`3eee8a00 00007ff8`3ee2d014 : ntdll!LdrpCallTlsInitializers+0x87
0c 00000000`6aaffc80 00007ff8`9a22a2be : 00000000`3d0b0d00 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!LdrShutdownThread+0x141
0d 00000000`6aaffd80 00007ff8`96b4772a : 00007ff8`3d660000 00000000`00000000 00000000`3d0b0d50 00000000`00000000 : ntdll!RtlExitUserThread+0x3e
0e 00000000`6aaffdc0 00007ff8`96ff04c4 : 00000000`5c6857b0 00000000`00000000 00000000`00000000 00000000`00000000 : KERNELBASE!FreeLibraryAndExitThread+0x4a
0f 00000000`6aaffdf0 00007ff8`96ff03c1 : 00000000`5c6857b0 00000000`5c6857b0 00000000`00000000 00000000`00000000 : ucrtbase!common_end_thread+0xa4
10 00000000`6aaffe20 00007ff8`99ad81f4 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ucrtbase!thread_start<unsigned int (__cdecl*)(void * __ptr64)>+0x41
11 00000000`6aaffe50 00007ff8`9a22a251 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0x14
12 00000000`6aaffe80 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x21

We looked for locks, found the one which seems to be frozen and forced a dump of its call stack. It seems to be blocked in the webkit and WTF layers.



---------- BEGIN SOURCE ----------
package org.test.webview;

import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.geometry.VPos;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.layout.Region;
import javafx.scene.paint.Color;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class WebViewApp extends Application {

    private Scene scene;

    @Override
    public void start(Stage stage) {
        // create the scene
        stage.setTitle("Web View");
        scene = new Scene(new FxBrowser(), 750, 500, Color.web("#666970"));
        stage.setScene(scene);
        scene.getStylesheets().add("webviewsample/BrowserToolbar.css");
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

class FxBrowser extends Region {

    final WebView browser = new WebView();
    final WebEngine webEngine = browser.getEngine();

    public FxBrowser() {
        //apply the styles
        getStyleClass().add("browser");
        // load the web page
        webEngine.load("https://www.wikipedia.org/");
        //add the web view to the scene
        getChildren().add(browser);
    }

    private Node createSpacer() {
        Region spacer = new Region();
        HBox.setHgrow(spacer, Priority.ALWAYS);
        return spacer;
    }

    @Override
    protected void layoutChildren() {
        double w = getWidth();
        double h = getHeight();
        layoutInArea(browser, 0, 0, w, h, 0, HPos.CENTER, VPos.CENTER);
    }

    @Override
    protected double computePrefWidth(double height) {
        return 750;
    }

    @Override
    protected double computePrefHeight(double width) {
        return 500;
    }
}
---------- END SOURCE ----------

FREQUENCY : often



Comments
closing report as cannot reproduce
21-01-2021

Checked with attached testcase in Windows 10, Issue could not be reproduced, did not observe any freeze, test app was responsive even after sometime(couple of hours). Test Result: ======== 8u271: Pass openjfx_11 : Pass openjfx_15 : Pass openjfx_16_ea : Pass
21-01-2021