Patbox/Image2Map

Crash when generating .jpeg on OpenJDK 11

MightyKnight opened this issue · 5 comments

Immediate crash happens on server when generating a .jpg file:

java.lang.UnsatisfiedLinkError: /usr/lib/jvm/java-11-openjdk-amd64/lib/libjavajpeg.so: libjpeg.so.62: cannot open shared object file: No such file or directory

This only happens with .jpg files, not with png.

I'm suspecting this to be the Java installation my server host is using, since the mod works fine when I use it locally.
Seems like it OpenJDK may have problems with the image decoding you are using.

Hoping this can be made compatible, since sadly I'm not able to change the java installation on the host I use. I'd ust recently wanted to start using your exeptionally useful mod on the server too.

Crash report | File | Pastebin
---- Minecraft Crash Report ----
// Shall we play a game?

Time: 4/4/21, 9:15 PM
Description: Exception in server tick loop

java.lang.UnsatisfiedLinkError: /usr/lib/jvm/java-11-openjdk-amd64/lib/libjavajpeg.so: libjpeg.so.62: cannot open shared object file: No such file or directory
	at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
	at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2442)
	at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2498)
	at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694)
	at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2648)
	at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:830)
	at java.base/java.lang.System.loadLibrary(System.java:1870)
	at java.desktop/com.sun.imageio.plugins.jpeg.JPEGImageReader$1.run(JPEGImageReader.java:92)
	at java.desktop/com.sun.imageio.plugins.jpeg.JPEGImageReader$1.run(JPEGImageReader.java:90)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.desktop/com.sun.imageio.plugins.jpeg.JPEGImageReader.<clinit>(JPEGImageReader.java:89)
	at java.desktop/com.sun.imageio.plugins.jpeg.JPEGImageReaderSpi.createReaderInstance(JPEGImageReaderSpi.java:85)
	at java.desktop/javax.imageio.spi.ImageReaderSpi.createReaderInstance(ImageReaderSpi.java:320)
	at java.desktop/javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:532)
	at java.desktop/javax.imageio.ImageIO$ImageReaderIterator.next(ImageIO.java:516)
	at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1463)
	at java.desktop/javax.imageio.ImageIO.read(ImageIO.java:1363)
	at space.essem.image2map.Image2Map.lambda$null$1(Image2Map.java:49)
	at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:262)
	at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:176)
	at net.minecraft.class_2170.method_9249(class_2170.java:249)
	at net.minecraft.class_3244.method_14370(class_3244.java:1211)
	at net.minecraft.class_3244.method_31286(class_3244.java:1198)
	at net.minecraft.class_3244.method_12048(class_3244.java:1177)
	at net.minecraft.class_2797.method_12115(class_2797.java:36)
	at net.minecraft.class_2797.method_11054(class_2797.java:9)
	at net.minecraft.class_2600.method_11072(class_2600.java:21)
	at net.minecraft.class_3738.run(class_3738.java:18)
	at net.minecraft.class_1255.method_18859(class_1255.java:144)
	at net.minecraft.class_4093.method_18859(class_4093.java:23)
	at net.minecraft.server.MinecraftServer.method_24306(MinecraftServer.java:761)
	at net.minecraft.server.MinecraftServer.method_18859(MinecraftServer.java:155)
	at net.minecraft.class_1255.method_16075(class_1255.java:118)
	at net.minecraft.server.MinecraftServer.method_20415(MinecraftServer.java:743)
	at net.minecraft.server.MinecraftServer.method_16075(MinecraftServer.java:737)
	at net.minecraft.class_1255.method_18857(class_1255.java:127)
	at net.minecraft.server.MinecraftServer.method_16208(MinecraftServer.java:722)
	at net.minecraft.server.MinecraftServer.method_29741(MinecraftServer.java:674)
	at net.minecraft.server.MinecraftServer.method_29739(MinecraftServer.java:257)
	at java.base/java.lang.Thread.run(Thread.java:834)


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- System Details --
Details:
	Minecraft Version: 1.16.5
	Minecraft Version ID: 1.16.5
	Operating System: Linux (amd64) version 5.4.65-1-pve
	Java Version: 11.0.7, Debian
	Java VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), Debian
	Memory: 2789140384 bytes (2659 MB) / 3221225472 bytes (3072 MB) up to 3221225472 bytes (3072 MB)
	CPUs: 32
	JVM Flags: 4 total; -Xms900M -Xmx3072M -Xss2048k -XX:ParallelGCThreads=1
	Fabric Mods: 
		autoconfig1u: Auto Config v1 Updated 3.3.1
		fabric: Fabric API 0.32.5+1.16
		fabric-api-base: Fabric API Base 0.2.1+9354966b7d
		fabric-api-lookup-api-v1: Fabric API Lookup API (v1) 1.0.0+dc716ea17d
		fabric-biome-api-v1: Fabric Biome API (v1) 3.1.1+ca58154a7d
		fabric-command-api-v1: Fabric Command API (v1) 1.1.1+351679a77d
		fabric-commands-v0: Fabric Commands (v0) 0.2.2+ca58154a7d
		fabric-containers-v0: Fabric Containers (v0) 0.1.11+9354966b7d
		fabric-content-registries-v0: Fabric Content Registries (v0) 0.2.1+ca58154a7d
		fabric-crash-report-info-v1: Fabric Crash Report Info (v1) 0.1.3+ca58154a7d
		fabric-dimensions-v1: fabric-dimensions-v1 2.0.6+9354966b7d
		fabric-entity-events-v1: Fabric Entity Events (v1) 1.0.3+ca58154a7d
		fabric-events-interaction-v0: Fabric Events Interaction (v0) 0.4.2+ca58154a7d
		fabric-events-lifecycle-v0: Fabric Events Lifecycle (v0) 0.2.1+ca58154a7d
		fabric-game-rule-api-v1: Fabric Game Rule API (v1) 1.0.6+ca58154a7d
		fabric-item-api-v1: Fabric Item API (v1) 1.2.1+ca58154a7d
		fabric-item-groups-v0: Fabric Item Groups (v0) 0.2.5+351679a77d
		fabric-lifecycle-events-v1: Fabric Lifecycle Events (v1) 1.2.1+ca58154a7d
		fabric-loot-tables-v1: Fabric Loot Tables (v1) 1.0.2+ca58154a7d
		fabric-mining-levels-v0: Fabric Mining Levels (v0) 0.1.3+ca58154a7d
		fabric-networking-api-v1: Fabric Networking API (v1) 1.0.1+ca58154a7d
		fabric-networking-blockentity-v0: Fabric Networking Block Entity (v0) 0.2.8+ca58154a7d
		fabric-networking-v0: Fabric Networking (v0) 0.3.2+ca58154a7d
		fabric-object-builder-api-v1: Fabric Object Builder API (v1) 1.9.4+9354966b7d
		fabric-object-builders-v0: Fabric Object Builders (v0) 0.7.2+ca58154a7d
		fabric-particles-v1: Fabric Particles (v1) 0.2.4+ca58154a7d
		fabric-registry-sync-v0: Fabric Registry Sync (v0) 0.7.4+ca58154a7d
		fabric-rendering-data-attachment-v1: Fabric Rendering Data Attachment (v1) 0.1.5+ca58154a7d
		fabric-resource-loader-v0: Fabric Resource Loader (v0) 0.4.2+ca58154a7d
		fabric-screen-handler-api-v1: Fabric Screen Handler API (v1) 1.1.5+9354966b7d
		fabric-structure-api-v1: Fabric Structure API (v1) 1.1.4+ca58154a7d
		fabric-tag-extensions-v0: Fabric Tag Extensions (v0) 1.1.1+ca58154a7d
		fabric-tool-attribute-api-v1: Fabric Tool Attribute API (v1) 1.2.6+ca58154a7d
		fabricloader: Fabric Loader 0.11.1
		image2map: Image2Map 0.2.0
		java: OpenJDK 64-Bit Server VM 11
		minecraft: Minecraft 1.16.5
	Player Count: 1 / 8; [class_3222['[REDACTED]'/31, l='ServerLevel[world]', x=-1301.21, y=44.00, z=261.86]]
	Data Packs: vanilla, Fabric Mods
	Is Modded: Definitely; Server brand changed to 'fabric'
	Type: Dedicated Server (map_server.txt)

Other Information:

  • Java: OpenJDK 11.0.7
  • Image2Map: 0.2.0
  • Fabric Api: 0.32.5
  • Fabric loader: 0.11.1
  • Minecraft: 1.16.5

Seems that libjpeg is missing on your server, try installing it using your system's package manager.

The issue is that I can't do that. I'm using Host Unlimited for the server, and they only offer restricted FTP access (no access to the full system).

Do you think it would be possible/feasible to ship libjpeg with Image2Map?
I really don't know what to do.

Interesting. Unfortunately I'm not sure if I can bundle libjpeg, since it seems to be a dependency of some of Java's own libraries. It would also be a bit of a pain to build it for nearly every platform out there.

It is a bit concerning that libjpeg isn't on the server already, considering it's a pretty major library used with many applications. Have you tried contacting the hosting company about it?

Good proposition, will create a support ticket there.

On a side note, I was just able to work around it by using the Java 8 option instead of 11. The server provides these two options, and it seems they may focus more on supporting 8, not sure.
I will post an update comment here if I receive an answer.

Essentially, consider the problem solved from your side now.
Big thanks for helping me 🤗, and sorry for bothering you with an issue that isn't even a bug.

no worries, glad you were able to solve your issue :)