I’m trying to get HQPlayer up and running on my server but it segfaults without any useful logs or anything.
Here’s the Dockerfile I’m using to build Docker container:
And here’s the only log:
CUDA devices: 0
Signalyst HQPlayer Embedded v5.10.0
Copyright (C) 1998-2024 Jussi Laako / Signalyst. All rights reserved.
Segmentation fault (core dumped)
But I’m not sure if it will work under Docker without some battle. Could be some udev hardware access failing or similar. I assume you are running it in Ubuntu 24.04 LTS environment?
Well, the Dockerfile is based on other HQPlayer 5 docker works, just upgraded the version so idk why they included ROCm. (I do have AMD GPU on that machine so it could be useful.)
And for the host system, it’s bog standard RHEL 9. (that’s the reason I’m trying to use Docker, since HQPlayer doesn’t have support for RHEL sadly.) I’d also guess udev stuff but I can’t confirm it since there’s no logs to prove it.
I have disabled the ROCm support long ago, because I got so many complains with the extra trouble it caused to everyone even if they didn’t have AMD GPU. And because AMD supports only very limited set of GPU models, mostly the most high-end professional/datacenter cards (and it is changing all the time).
Lowest supported kernel version is 6.1, RHEL is usually quite a bit behind in this respect too.
Oh, 6.1 minimum is quite harsh. And yes, RHEL currently ships 5.14 even for RHEL 9. I wish it would support at least 5.x LTSes, but I guess you have the reason behind it. Anyways, I will try with ELRepo mainline kernel and see how that goes.
EDIT: same issue even with mainline kernel, so the issue isn’t related to kernel.
Found the underlying issue: if HQPlayer can’t read /dev/bus/usb, it segfaults. I found this out by attaching strace to hqplayerd. The solution was to pass through /dev/bus/usb and it runs fine. (At least on ELRepo mainline kernel.) Problem solved!
ALSA kernel API changed at 6.1, and HQPlayer is using the new through corresponding new alsa-lib. So older kernels may give strange or non-functional audio output results. Of course this doesn’t matter if you use NAA for output.