Skip to content

Oversized OpenGL debug message with FancyMenu and Seamless Loading Screen; Linux shutdown deadlock #169

Description

@KeroeSparrow

Description

Installing the following three mods together consistently produces an invalid OpenGL debug message:

  • Veil 4.3.0
  • FancyMenu 3.9.8
  • Seamless Loading Screen 2.2.1+1.21

On Linux with an NVIDIA GPU, Minecraft then hangs during shutdown and the Java process remains alive indefinitely.

The instance is otherwise effectively vanilla, apart from the required libraries:

  • Konkrete 1.9.9
  • Melody 1.0.10
  • YetAnotherConfigLib 3.8.2+1.21.1-neoforge

The issue reproduces with a fresh game directory and default-generated configurations. Loading or creating a world is not required. Waiting for the main menu to finish loading and then selecting Quit Game is sufficient.

Removing any one of Veil, FancyMenu, or Seamless Loading Screen prevents the OpenGL error and allows Minecraft to exit normally.

During startup, the following OpenGL error appears:

[Thread-8/INFO] [com.mojang.blaze3d.platform.GlDebug/]:
OpenGL debug message: id=1281, source=API, type=ERROR, severity=HIGH,
message='GL_INVALID_VALUE error generated. <length> cannot be larger than GL_MAX_DEBUG_MESSAGE_LENGTH'

It is logged at the same timestamp that FancyMenu finishes initializing its smooth-font atlas:

[Render thread/INFO] [de.keksuccino.fancymenu.util.rendering.text.smooth.SmoothFontAtlas/]:
[FANCYMENU] Smooth font atlas initialized: file='noto_sans.ttf',
source=0, size=36px, style=plain, sizePx=1024x1024.

On Linux, Minecraft later reaches its normal shutdown messages, but the Java process never terminates and must be killed externally.

To Reproduce

  1. Create a fresh Minecraft 1.21.1 instance using NeoForge 21.1.242.

  2. Install:

    • Veil 4.3.0
    • FancyMenu 3.9.8
    • Seamless Loading Screen 2.2.1+1.21
    • Konkrete 1.9.9
    • Melody 1.0.10
    • YetAnotherConfigLib 3.8.2+1.21.1-neoforge
  3. Use a fresh game directory with no existing mod configurations.

  4. Launch Minecraft and wait for the main menu to finish loading.

  5. Select Quit Game.

  6. Observe that the Java process remains alive indefinitely on Linux.

  7. Disable any one of Veil, FancyMenu, or Seamless Loading Screen.

  8. Repeat the test and observe that Minecraft exits normally.

The issue can also be reproduced after entering a fresh single-player world, but world loading is not required.

Expected Behavior

The mod combination should not generate an invalid OpenGL debug call.

Minecraft should terminate normally after selecting Quit Game.

Screenshots

Not applicable. Logs and native debugger traces are more relevant to this issue.

System Information

  • Veil Version: 4.3.0
  • Minecraft Version: 1.21.1
  • Loader & Loader Version: NeoForge 21.1.242
  • Operating System: CachyOS Linux, kernel 7.1.3-2-cachyos, Wayland/Hyprland
  • CPU: Intel Core i7-13620H
  • GPU: NVIDIA GeForce RTX 4070 Laptop GPU
  • GPU Driver: NVIDIA 610.43.03
  • OpenGL Version: 4.6.0 NVIDIA 610.43.03
  • RAM: 64 GiB
  • Java: Microsoft OpenJDK 21.0.7
  • LWJGL: 3.3.3
  • Launcher: Prism Launcher 11.0.3 Flatpak

Additional Context

This was originally discovered in a large modpack. The pack was progressively reduced until the issue remained with only Veil, FancyMenu, Seamless Loading Screen, and their required libraries.

The tested compatibility matrix is:

Veil + FancyMenu + Seamless Loading Screen
→ OpenGL error and Linux shutdown hang

Veil + FancyMenu
→ exits normally

Veil + Seamless Loading Screen
→ exits normally

FancyMenu + Seamless Loading Screen
→ exits normally

The problem was originally reproduced with Sable, which bundles Veil. Replacing Sable with standalone Veil 4.3.0 still reproduces the issue, so Sable is not required.

The OpenGL error indicates that a string passed to an OpenGL debug API exceeds GL_MAX_DEBUG_MESSAGE_LENGTH.

Veil mirrors render-thread profiler sections into OpenGL debug groups. Therefore, the error may involve an oversized profiler section name being forwarded to glPushDebugGroup. However, the exact offending OpenGL call and string have not yet been traced.

The Linux shutdown hang occurs after normal Minecraft shutdown logging has completed. Native debugging of the original reproduction showed:

  1. The JVM VM thread enters NVIDIA GLX/OpenGL finalization.
  2. NVIDIA finalization waits for an NVIDIA-owned native thread to exit.
  3. That native thread attempts to detach from the JVM through LWJGL during JVM shutdown.
  4. The VM thread and NVIDIA thread wait on each other indefinitely.

Replacing Minecraft’s LWJGL 3.3.3 libraries with LWJGL 3.3.6 prevents the Linux shutdown deadlock in the same environment. This does not prevent or explain the invalid OpenGL call itself.

The identical minimal mod combination was also tested on Windows 11 with:

  • NVIDIA GeForce RTX 3080 Ti
  • NVIDIA driver 596.21
  • Microsoft OpenJDK 21.0.7
  • LWJGL 3.3.3
  • NeoForge 21.1.242

Windows reproduces the same GL_INVALID_VALUE error at the same point during FancyMenu smooth-font initialization. However, Minecraft completes shutdown normally and exits with code 0.

This suggests that the invalid OpenGL debug call is cross-platform, while the permanent shutdown deadlock is specific to the Linux/NVIDIA GLX/LWJGL 3.3.3 finalization path.

Attachments

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions