BibTex not starting because of "Caused by: java.lang.RuntimeException: Error creating vertex shader"

This is a bug, but I am not sure where. I am on Linux Mint with several machines. All work fine, except my main computer :frowning: Working machines have AMD GPUs, or older Intel VGAs. This happens with all debs and portable versions from 4.x to 6.0alpha. Internet search told me it was a problem with hardware acceleration. For the latest portable version I added java-options=-Dprism.verbose=true to the configuration file. This is what I get:

tom@tux ~/tmp/JabRef $ JabRef/bin/JabRef 
WARNING: Using incubator modules: jdk.incubator.vector
2026-03-06 22:59:59 [main] org.jabref.Launcher.main()
INFO: Starting JabRef v6.0-tags-v6-0-alpha-5.1--2026-02-20--409d4b2
Messages are not initialized before accessing key: Imported entries
2026-03-06 23:00:01 [main] org.jabref.logic.search.PostgreServer.<init>()
INFO: Postgres server started, connection port: 44223
2026-03-06 23:00:01 [main] org.jabref.logic.citationstyle.CSLStyleLoader.loadInternalStyles()
INFO: Loaded 2844 CSL styles
2026-03-06 23:00:01 [JavaFX-Launcher] sun.util.logging.internal.LoggingProviderImpl$JULWrapper.log()
WARN: Unsupported JavaFX configuration: classes were loaded from 'module javafx.graphics', isAutomatic: false, isOpen: true
Prism pipeline init order: es2 sw 
Using Double Precision Marlin Rasterizer
Using dirty region optimizations
Not using texture mask for primitives
Not forcing power of 2 sizes for textures
Using hardware CLAMP_TO_ZERO mode
Opting in for HiDPI pixel scaling
Not forcing UploadingPainter
Prism pipeline name = com.sun.prism.es2.ES2Pipeline
Loading ES2 native library ... prism_es2
	succeeded.
GLFactory using com.sun.prism.es2.X11GLFactory
(X) Got class = class com.sun.prism.es2.ES2Pipeline
Initialized prism pipeline: com.sun.prism.es2.ES2Pipeline
Maximum supported texture size: 16384
Maximum texture size clamped to 4096
Non power of two texture support = true
Maximum number of vertex attributes = 16
Maximum number of uniform vertex components = 16384
Maximum number of uniform fragment components = 16384
Maximum number of varying components = 128
Maximum number of texture units usable in a vertex shader = 32
Maximum number of texture units usable in a fragment shader = 32
Graphics Vendor: Intel
       Renderer: Mesa Intel(R) Graphics (RKL GT1)
        Version: 4.6 (Compatibility Profile) Mesa 25.2.8-0ubuntu0.24.04.1
 vsync: true vpipe: true
2026-03-06 23:00:03 [JavaFX Application Thread] org.jabref.gui.theme.ThemeManager.updateThemeSettings()
INFO: Not updating theme because it hasn't changed
2026-03-06 23:00:03 [JavaFX Application Thread] org.jabref.gui.theme.ThemeManager.updateThemeSettings()
INFO: Theme set to Theme{type=DEFAULT, name=''} with base css StyleSheet{jrt:/org.jabref/org/jabref/gui/Base.css}

(JabRef:688211): Gdk-WARNING **: 23:00:03.809: XSetErrorHandler() called with a GDK error trap pushed. Don't do that.
2026-03-06 23:00:05 [JavaFX Application Thread] org.jabref.gui.JabRefGuiStateManager.setActiveDatabase()
INFO: No open database detected
2026-03-06 23:00:06 [JavaFX Application Thread] org.jabref.gui.JabRefGuiStateManager.setActiveDatabase()
INFO: No open database detected
ES2ResourceFactory: Prism - createStockShader: FillPgram_Color.frag
java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119)
	at java.base/java.lang.reflect.Method.invoke(Method.java:565)
	at javafx.graphics@25.0.2/com.sun.prism.es2.ES2ResourceFactory.createStockShader(ES2ResourceFactory.java:335)
	at javafx.graphics@25.0.2/com.sun.prism.impl.ps.BaseShaderContext.getPaintShader(BaseShaderContext.java:271)
	at javafx.graphics@25.0.2/com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:502)
	at javafx.graphics@25.0.2/com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:371)
	at javafx.graphics@25.0.2/com.sun.prism.impl.ps.BaseShaderGraphics.renderGeneralRoundedPgram(BaseShaderGraphics.java:924)
	at javafx.graphics@25.0.2/com.sun.prism.impl.ps.BaseShaderGraphics.renderGeneralRoundedRect(BaseShaderGraphics.java:625)
	at javafx.graphics@25.0.2/com.sun.prism.impl.ps.BaseShaderGraphics.fillRect(BaseShaderGraphics.java:1532)
	at javafx.graphics@25.0.2/com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectanglesDirectly(NGRegion.java:1112)
	at javafx.graphics@25.0.2/com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectangle(NGRegion.java:852)
	at javafx.graphics@25.0.2/com.sun.javafx.sg.prism.NGRegion.renderAsRectangle(NGRegion.java:754)
	at javafx.graphics@25.0.2/com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:575)
	at javafx.graphics@25.0.2/com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:2063)
	at javafx.graphics@25.0.2/com.sun.javafx.sg.prism.NGNode.render(NGNode.java:1955)
	at javafx.graphics@25.0.2/com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:481)
	at javafx.graphics@25.0.2/com.sun.javafx.tk.quantum.ViewPainter.paintImpl(ViewPainter.java:329)
	at javafx.graphics@25.0.2/com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:92)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:545)
	at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:369)
	at javafx.graphics@25.0.2/com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614)
	at javafx.graphics@25.0.2/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:122)
	at java.base/java.lang.Thread.run(Thread.java:1474)
Caused by: java.lang.RuntimeException: Error creating vertex shader
	at javafx.graphics@25.0.2/com.sun.prism.es2.ES2Shader.createFromSource(ES2Shader.java:132)
	at javafx.graphics@25.0.2/com.sun.prism.es2.ES2Shader.createFromSource(ES2Shader.java:173)
	at javafx.graphics@25.0.2/com.sun.prism.es2.ES2ResourceFactory.createShader(ES2ResourceFactory.java:236)
	at javafx.graphics@25.0.2/com.sun.prism.shader.FillPgram_Color_Loader.loadShader(FillPgram_Color_Loader.java:48)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	... 24 more
java.lang.InternalError: Error loading stock shader FillPgram_Color
	at javafx.graphics@25.0.2/com.sun.prism.es2.ES2ResourceFactory.createStockShader(ES2ResourceFactory.java:338)
	at javafx.graphics@25.0.2/com.sun.prism.impl.ps.BaseShaderContext.getPaintShader(BaseShaderContext.java:271)
	at javafx.graphics@25.0.2/com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:502)
	at javafx.graphics@25.0.2/com.sun.prism.impl.ps.BaseShaderContext.validatePaintOp(BaseShaderContext.java:371)
	at javafx.graphics@25.0.2/com.sun.prism.impl.ps.BaseShaderGraphics.renderGeneralRoundedPgram(BaseShaderGraphics.java:924)
	at javafx.graphics@25.0.2/com.sun.prism.impl.ps.BaseShaderGraphics.renderGeneralRoundedRect(BaseShaderGraphics.java:625)
	at javafx.graphics@25.0.2/com.sun.prism.impl.ps.BaseShaderGraphics.fillRect(BaseShaderGraphics.java:1532)
	at javafx.graphics@25.0.2/com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectanglesDirectly(NGRegion.java:1112)
	at javafx.graphics@25.0.2/com.sun.javafx.sg.prism.NGRegion.renderBackgroundRectangle(NGRegion.java:852)

and so on.

Hardware:

root@lewo:~# lshw -C video
*-display
Beschreibung: VGA compatible controller
Produkt: HD Graphics 500
Hersteller: Intel Corporation
Physische ID: 2
Bus-Informationen: pci@0000:00:02.0
Logischer Name: /dev/fb0
Version: 0b
Breite: 64 bits
Takt: 33MHz
Fähigkeiten: pciexpress msi pm vga_controller bus_master cap_list rom fb
Konfiguration: depth=32 driver=i915 latency=0 resolution=1920,1080
Ressourcen: irq:135 memory:90000000-90ffffff memory:80000000-8fffffff ioport:f000(Größe=64) memory:c0000-dffff
root@lewo:~#
Abgemeldet
Connection to lewo closed.
root@tux:~/rdb3# lshw -C video
*-display
description: VGA compatible controller
product: RocketLake-S GT1 [UHD Graphics 730]
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
logical name: /dev/fb0
version: 04
width: 64 bits
clock: 33MHz
capabilities: pciexpress msi pm vga_controller bus_master cap_list rom fb
configuration: depth=32 driver=i915 latency=0 resolution=1920,1080
resources: irq:150 memory:91000000-91ffffff memory:a0000000-afffffff ioport:4000(size=64) memory:c0000-dffff

The first one (lewo) works fine, tux is the one giving problems.

Any idea where to search?

Thanks a lot!

What version of Linux Mint? UHD Graphics 730 was released in 2021 according to Intel UHD Graphics 730 Specs | TechPowerUp GPU Database. Then give it one or two years for drivers, firmware and general software support to show up in distributions with major bugs straightened out. Linux Mint usually supports LTS kernels and depending on the timing of their release, it can be that they just barely missed the upstream support for this particular hardware and on top of that, if you as a user were lazy and didn’t upgrade immediately to a new Linux Mint version, it could very well be that it’s simply not supported on your OS yet.

I found https://bugs.openjdk.org/browse/JDK-8314729. Are your symptoms similar? Does the window turn white? Could be a driver issue.

Thank you,

well, I am on Mint 22.3, kernel 6.8.0-100, which should be the latest one. I have cross-checked similarities to older Intel cards, and every output looks like from “systool -v -m i915” look very much the same (base and stack addresses differ, of course) So I am running out of ideas where to check. Because this part of my log:

implies, that es2 actually IS loaded and active?? Is there a simple test to check with javafx? The JDK you mentioned is more or less the same, BUT: my device is not in the reject list, and the log says it is initialized fine. So I am currently at “WTF?”, ran out of ideas.

Again, thanks for any pointers.

Ciao

Tom

Fun fact: This works out of the box:

tom@tux ~/tmp/JabRef $ ssh tom@tux -fX /opt/jabref/bin/JabRef

I can even push to a locally running LibreOffice file.

Go figure…

1 Like

It seems like someone had the same problem with JabRef and nvidia
https://bugs.openjdk.org/browse/JDK-8276172

Yes, I had seen that also already, and I checked the links in Praveen Narayanaswamy comment. Looks like “Intel” is already in the JFX GLFactory class. At least the version the link points to. The second link suggests, that this has exactly been the case. At the end of the day, I do not care anymore, because running via the ssh to localhost is good enough for me. This is an office program, not a game, so I give a sh*t about frame rates and 3D pipelines.

Anyway, thanks for your support!

Ciao

Tom