jagrosh / MusicBot

🎶 A Discord music bot that's easy to set up and run yourself!
https://jmusicbot.com
Apache License 2.0
5.37k stars 2.57k forks source link

[Bug Report] Java Error when changing Volume #742

Closed MarlonMagDich closed 3 years ago

MarlonMagDich commented 3 years ago

Describe the bug Whenever I change the Volume of the Bot and start to play something, it stops and I get a big Error in the Console.

To Reproduce Steps to reproduce the behavior:

  1. Change Volume
  2. Start playing something

Expected behavior The Bot will stop playing, it will stay in the channel, but will give a big error in the console.

Screenshots https://ibb.co/G9LZXpB

Debug Info

System Properties:
  java.version = 16.0.2
  java.vm.name = OpenJDK 64-Bit Server VM
  java.vm.specification.version = 16
  java.runtime.name = OpenJDK Runtime Environment
  java.runtime.version = 16.0.2+7-67
  java.specification.version = 16
  os.arch = aarch64
  os.name = Linux

JMusicBot Information:
  Version = 0.3.4
  Owner = 328476666437566464
  Prefix = $
  AltPrefix = null
  MaxSeconds = 0
  NPImages = true
  SongInStatus = false
  StayInChannel = true
  UseEval = false
  UpdateAlerts = true

Dependency Information:
  JDA Version = 4.2.1_253
  JDA-Utilities Version = 3.0.5
  Lavaplayer Version = 1.3.75

Runtime Information:
  Total Memory = 77
  Used Memory = 31

Discord Information:
  ID = 880130005198340126
  Guilds = 1
  Users = 7
Sanduhr32 commented 3 years ago

GLIBC 2.29 not found

Have you tried installing it? Formerly known as libc6-2.29 You also only sent the tail of the stacktrace, tho it would be better if you copy pasted it as a whole text blob wrapped inside of ``` at the beginning & ending of it (like the debug info).

MichailiK commented 3 years ago

You seem to be missing glibc 2.29. Changing volume requires modifying the audio*, and requires glibc in JMusicBot's case

* Music bots just pass the audio packets from YouTube to Discord, which is easy & very efficient. This doesn't work when changing volume though & requires more processing, which is why volume commands are a premium feature in most public bots.

Edit: I just saw @Sanduhr32 has already responded, apologies!

MarlonMagDich commented 3 years ago

GLIBC 2.29 not found

Have you tried installing it? Formerly known as libc6-2.29 You also only sent the tail of the stacktrace, tho it would be better if you copy pasted it as a whole text blob wrapped inside of ``` at the beginning & ending of it (like the debug info).

Thanks for your answers, how can I view the full text? Im connected with my Raspberry Pi through ssh. I didnt try to install it, I also didnt find a way to install it online, could you please tell me how to install it.

Sanduhr32 commented 3 years ago

sudo apt update && sudo apt install libc6 -y should work

How do you run the jar file?

MarlonMagDich commented 3 years ago

sudo apt update && sudo apt install libc6 -y should work

How do you run the jar file?

I am running the jar file, with running the start.sh file in which i typed "screen -S MusikBot java -jar -Dnogui=true JMusicBot-0.3.4.jar", which opens the file in screen.

The "sudo apt update && sudo apt install libc6 -y" gives the output:

Hit:1 http://deb.debian.org/debian buster InRelease
Hit:2 http://deb.debian.org/debian-security buster/updates InRelease
Hit:3 http://deb.debian.org/debian buster-updates InRelease
Hit:4 http://archive.raspberrypi.org/debian buster InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
2 packages can be upgraded. Run 'apt list --upgradable' to see them.
Reading package lists... Done
Building dependency tree
Reading state information... Done
libc6 is already the newest version (2.28-10).
The following packages were automatically installed and are no longer required:
  python-colorzero rpi-eeprom-images
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
MarlonMagDich commented 3 years ago

I also get an Error when trying to play an .m3u livestream, but I dont know if it is the exact one.

Sanduhr32 commented 3 years ago
libc6 is already the newest version (2.28-10).

Interesting, I have 2.32 of libc6 installed on my RPI.

MarlonMagDich commented 3 years ago
libc6 is already the newest version (2.28-10).

Interesting, I have 2.32 of libc6 installed on my RPI.

I am using the 64 bit version because of my home assistant, maybe thats the reason. https://www.raspberrypi.org/forums/viewtopic.php?t=275370

Sanduhr32 commented 3 years ago

1) You use screen, please inform yourself how to properly use screen regarding accessing the terminal multiplexer scroll buffer.

2) even if you run a 64bit OS, it still is natively capable of running 32bit binaries (if needed). Otherwise you may have to look into self-compiling binaries if you run in-beta operating systems such as 64bit raspberrypi OS (previously Raspbian).

I also run 64bit, tho I run debian directly instead of raspberrypi OS

MichailiK commented 3 years ago

Going to assume this issue has been fixed or abandoned. If I'm mistaken, simply reply and I'll re-open this.

Checker8763 commented 3 years ago

I also get the error when changing the volume: arch: amd64 java: 18 runnning inside of docker image: openjdk:18-alpine3.13

I haven't tried installing libc becasue It would need a custom image

The error:

[22:35:45] [INFO] [Startup]: Loaded config from /bot/config.txt
[22:35:46] [INFO] [JDA]: Login Successful!
[22:35:46] [INFO] [WebSocketClient]: Connected to WebSocket
[22:35:46] [INFO] [JDA]: Finished Loading!
[22:36:37] [INFO] [NativeLibraryLoader]: Native library libmpg123-0: loading with filter com.sedmelluq.discord.lavaplayer.natives.ConnectorNativeLibLoader$$Lambda$278/0x0000000800eee9e0@1f6337b4
[22:36:37] [INFO] [NativeLibraryLoader]: Native library connector: loading with filter null
[22:36:37] [ERROR] [NativeLibraryLoader]: Native library connector: loading failed.
java.lang.UnsatisfiedLinkError: /tmp/lava-jni-natives/1631745397037/libconnector.so: Error loading shared library libstdc++.so.6: No such file or directory (needed by /tmp/lava-jni-natives/1631745397037/libconnector.so)
        at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
        at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:392)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:231)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:173)
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2389)
        at java.base/java.lang.Runtime.load0(Runtime.java:755)
        at java.base/java.lang.System.load(System.java:1953)
        at com.sedmelluq.lava.common.natives.NativeLibraryLoader.loadFromFile(NativeLibraryLoader.java:118)
        at com.sedmelluq.lava.common.natives.NativeLibraryLoader.loadInternal(NativeLibraryLoader.java:110)
        at com.sedmelluq.lava.common.natives.NativeLibraryLoader.loadWithFailureCheck(NativeLibraryLoader.java:84)
        at com.sedmelluq.lava.common.natives.NativeLibraryLoader.load(NativeLibraryLoader.java:69)
        at com.sedmelluq.discord.lavaplayer.natives.ConnectorNativeLibLoader.loadConnectorLibrary(ConnectorNativeLibLoader.java:21)
        at com.sedmelluq.discord.lavaplayer.natives.opus.OpusDecoderLibrary.getInstance(OpusDecoderLibrary.java:13)
        at com.sedmelluq.discord.lavaplayer.natives.opus.OpusDecoder.<init>(OpusDecoder.java:20)
        at com.sedmelluq.discord.lavaplayer.container.common.OpusPacketRouter.initialiseDecoder(OpusPacketRouter.java:193)
        at com.sedmelluq.discord.lavaplayer.container.common.OpusPacketRouter.checkDecoderNecessity(OpusPacketRouter.java:177)
        at com.sedmelluq.discord.lavaplayer.container.common.OpusPacketRouter.process(OpusPacketRouter.java:93)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaOpusTrackConsumer.consume(MatroskaOpusTrackConsumer.java:46)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.processFrameInBlock(MatroskaStreamingFile.java:371)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseClusterSimpleBlock(MatroskaStreamingFile.java:335)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseNextCluster(MatroskaStreamingFile.java:320)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.provideFrames(MatroskaStreamingFile.java:296)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.lambda$process$0(MatroskaAudioTrack.java:39)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:275)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:249)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.process(MatroskaAudioTrack.java:38)
        at com.sedmelluq.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25)
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.processStatic(YoutubeAudioTrack.java:57)
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.process(YoutubeAudioTrack.java:49)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:104)
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$1(DefaultAudioPlayerManager.java:348)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:833)
[22:36:37] [ERROR] [LocalAudioTrackExecutor]: Error in playback of ySLc8gZ3oEc
com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Something went wrong when decoding the track.
        at com.sedmelluq.discord.lavaplayer.tools.ExceptionTools.wrapUnfriendlyExceptions(ExceptionTools.java:44)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:293)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:249)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.process(MatroskaAudioTrack.java:38)
        at com.sedmelluq.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25)
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.processStatic(YoutubeAudioTrack.java:57)
        at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.process(YoutubeAudioTrack.java:49)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:104)
        at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$1(DefaultAudioPlayerManager.java:348)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:833)
        Suppressed: com.sedmelluq.discord.lavaplayer.tools.exception.EnvironmentInformation:
  lavaplayer.version: 1.3.78
  os.arch: amd64
  os.name: Linux
  os.version: 4.19.0-13-amd64
  java.vendor: Oracle Corporation
  java.version: 18-ea
  java.runtime.version: 18-ea+11
  java.vm.version: 18-ea+11
Caused by: java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: /tmp/lava-jni-natives/1631745397037/libconnector.so: Error loading shared library libstdc++.so.6: No such file or directory (needed by /tmp/lava-jni-natives/1631745397037/libconnector.so)
        at com.sedmelluq.lava.common.natives.NativeLibraryLoader.loadWithFailureCheck(NativeLibraryLoader.java:88)
        at com.sedmelluq.lava.common.natives.NativeLibraryLoader.load(NativeLibraryLoader.java:69)
        at com.sedmelluq.discord.lavaplayer.natives.ConnectorNativeLibLoader.loadConnectorLibrary(ConnectorNativeLibLoader.java:21)
        at com.sedmelluq.discord.lavaplayer.natives.opus.OpusDecoderLibrary.getInstance(OpusDecoderLibrary.java:13)
        at com.sedmelluq.discord.lavaplayer.natives.opus.OpusDecoder.<init>(OpusDecoder.java:20)
        at com.sedmelluq.discord.lavaplayer.container.common.OpusPacketRouter.initialiseDecoder(OpusPacketRouter.java:193)
        at com.sedmelluq.discord.lavaplayer.container.common.OpusPacketRouter.checkDecoderNecessity(OpusPacketRouter.java:177)
        at com.sedmelluq.discord.lavaplayer.container.common.OpusPacketRouter.process(OpusPacketRouter.java:93)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaOpusTrackConsumer.consume(MatroskaOpusTrackConsumer.java:46)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.processFrameInBlock(MatroskaStreamingFile.java:371)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseClusterSimpleBlock(MatroskaStreamingFile.java:335)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseNextCluster(MatroskaStreamingFile.java:320)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.provideFrames(MatroskaStreamingFile.java:296)
        at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.lambda$process$0(MatroskaAudioTrack.java:39)
        at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:275)
        ... 10 common frames omitted
Caused by: java.lang.UnsatisfiedLinkError: /tmp/lava-jni-natives/1631745397037/libconnector.so: Error loading shared library libstdc++.so.6: No such file or directory (needed by /tmp/lava-jni-natives/1631745397037/libconnector.so)
        at java.base/jdk.internal.loader.NativeLibraries.load(Native Method)
        at java.base/jdk.internal.loader.NativeLibraries$NativeLibraryImpl.open(NativeLibraries.java:392)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:231)
        at java.base/jdk.internal.loader.NativeLibraries.loadLibrary(NativeLibraries.java:173)
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2389)
        at java.base/java.lang.Runtime.load0(Runtime.java:755)
        at java.base/java.lang.System.load(System.java:1953)
        at com.sedmelluq.lava.common.natives.NativeLibraryLoader.loadFromFile(NativeLibraryLoader.java:118)
        at com.sedmelluq.lava.common.natives.NativeLibraryLoader.loadInternal(NativeLibraryLoader.java:110)
        at com.sedmelluq.lava.common.natives.NativeLibraryLoader.loadWithFailureCheck(NativeLibraryLoader.java:84)
        ... 24 common frames omitted
^C[22:40:51] [INFO] [Startup]: Loaded config from /bot/config.txt
[22:40:52] [INFO] [JDA]: Login Successful!
[22:40:52] [INFO] [WebSocketClient]: Connected to WebSocket
[22:40:52] [INFO] [JDA]: Finished Loading!
MichailiK commented 3 years ago

In your case, you're missing libstdc++.so.6. Using Docker images for JMusicBot is currently not well supported. Though there are a few pull requests for Docker images, one of which may be supported soon.

Checker8763 commented 3 years ago

I have a fix when using docker images: the alpine base image doesn't natively ship with libc6, but the debian images does. So I just switched the base image to be a openjdk:18-slim-buster which uses debian buster slimmed down. But now the volume change work! (because the library is included there)

If u want u can message me any time, I would help create a docker image for this bot.