Simple Voice Chat

Simple Voice Chat

337k Downloads

Native Opus Update Breaks GLIBC compatibility with Debian buster and Ubuntu Bionic and other distros

theofficialgman opened this issue ยท 12 comments

commented

Bug description
The update native opus libraries included in the jar at the same time as commit: ef0a76d is built on a newer version of glibc than the older distros support. Up until now they worked without issue.

Log files

[23:58:10] [VoiceChatAuthenticationThread/INFO]: Trying to authenticate voice connection
[23:58:10] [VoiceChatPacketProcessingThread/INFO]: Successfully authenticated player redactedmyid
[23:58:10] [VoiceChatConnectionThread/INFO]: Server acknowledged authentication
[23:58:10] [Thread-17/ERROR]: Uncaught exception in thread "Thread-17"
java.lang.UnsatisfiedLinkError: /lib/aarch64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /home/user/.cache/JNA/temp/jna8289526526838919566.tmp)
	at com.sun.jna.Native.open(Native Method) ~[jna-5.10.0.jar:5.10.0 (b0)]
	at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:277) ~[jna-5.10.0.jar:5.10.0 (b0)]
	at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:461) ~[jna-5.10.0.jar:5.10.0 (b0)]
	at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:403) ~[jna-5.10.0.jar:5.10.0 (b0)]
	at de.maxhenkel.voicechat.opus4j.Opus.<clinit>(Opus.java:16) ~[voicechat-fabric-1.18.2-2.2.33.jar:?]
	at de.maxhenkel.voicechat.plugins.impl.opus.OpusManager.isOpusCompatible(OpusManager.java:70) ~[voicechat-fabric-1.18.2-2.2.33.jar:?]
	at de.maxhenkel.voicechat.voice.common.Utils.lambda$createSafe$0(Utils.java:206) ~[voicechat-fabric-1.18.2-2.2.33.jar:?]
	at java.lang.Thread.run(Thread.java:833) [?:?]
commented

Please provide the full logs like described in the bug template.

commented

I have already fully described the issue, but I will provide the full gamelog as requested. You need to acquire or build your opus binaries on ubuntu bionic (or another suitable system with older glibc)

https://paste.ee/p/gbeJ6

like I already said, the previous version of opus provided only required GLIBC_2.17. you can run an objdump -T libopus.so | grep "GLIBC" and see for yourself

commented

If the natives fail to load, our Java implementation of Opus should be used.

commented

thats the full log
latest.log is just a subset of that file
https://paste.ee/p/B1QzC

where have you acquired your native binaries from? are you building them yourself?

commented

Does the game crash after that error or does it just continue working?

commented

Does the game crash after that error or does it just continue working?

it doesn't crash. The microphone tests continue to work. I guess its using openal as a fallback then?

commented

As I said it is using our java Opus implementation. This is completely intended to happen if natives for that platform don't exist or are incompatible as in your case.

commented

@henkelmax could you please inform me where you have acquired your natives for opus? building on a compatible system like before in your previous releases should be a non-issue.

commented

We always did

interesting... I guess it was at a different repo then? since this one was only created 4 days ago.
anyway I'll leave this up to you, thanks

commented

We build the natives ourselves (https://github.com/mjwells2002/libopus-bin)
@mjwells2002 will try to compile against an older libc version.
But generally its completely fine if the natives fail, as there always is a fallback.

commented

ah, I see, you swapped to using github actions for builds now.

can you try using ubuntu-18.04 in your actions and see if it still succeeds?

commented

ah, I see, you swapped to using github actions for builds now.

We always did

can you try using ubuntu-18.04 in your actions and see if it still succeeds?

That's the plan