mumble-voip / mumble

Mumble is an open-source, low-latency, high quality voice chat software.
https://www.mumble.info
Other
6.26k stars 1.11k forks source link

Mumble overlay does not work #5932

Open 3JlOy-PYCCKUi opened 1 year ago

3JlOy-PYCCKUi commented 1 year ago

Description

There is an error, related to LD_PRELOAD, when trying to run the overlay. My distro is Arch Linux, mumble installed from official repositories.

Steps to reproduce

  1. Try to start mumble overlay

Mumble version

1.4.287

Mumble component

Client

OS

Linux

Reproducible?

Yes

Additional information

No response

Relevant log output

$ LANG=C.UTF-8 mumble-overlay glxgears
set
set
Unable to find symbol malloc. Aborting.
/usr/bin/mumble-overlay: line 69:  5583 Aborted                 LD_PRELOAD="${MUMBLE_PRELOAD} ${LD_PRELOAD}" "${@}"

Screenshots

No response

3JlOy-PYCCKUi commented 1 year ago

Overlay does not work with other programs either:

Minetest

2022-10-17 19:15:08: [Main]: Automatically selecting world at [/home/USERNAME/.minetest/worlds/testworldname]
2022-10-17 19:15:08: ERROR[Main]: Audio: Global Initialization: Failed to open device
/usr/bin/mumble-overlay: line 69: 16217 Segmentation fault      LD_PRELOAD="${MUMBLE_PRELOAD} ${LD_PRELOAD}" "${@}"

Gzdoom

gzdoom: symbol lookup error: /usr/lib64/mumble/libmumbleoverlay.x86_64.so: undefined symbol: glPopClientAttrib

Xeyes

xeyes: symbol lookup error: /usr/lib64/mumble/libmumbleoverlay.x86_64.so: undefined symbol: glPopClientAttrib

I couldn't find any program at all with which I was able to run overlay

Krzmbrzl commented 1 year ago

@davidebeatrici any idea?

Krzmbrzl commented 1 year ago

@3JlOy-PYCCKUi could you try running the overlay + application through gdb, so we can get a backtrace of the crash?

3JlOy-PYCCKUi commented 1 year ago

@3JlOy-PYCCKUi could you try running the overlay + application through gdb, so we can get a backtrace of the crash?

I can, but i don't know how

like mumble-overlay gdb xeyes? i get error: gdb: symbol lookup error: /usr/lib64/mumble/libmumbleoverlay.x86_64.so: undefined symbol: glPopClientAttrib

if i try gdb --args mumble-overlay xeyes i get: "/usr/bin/mumble-overlay": not in executable format: file format not recognized

Krzmbrzl commented 1 year ago

Ah yes, right. mumble-overlay is only a wrapper script... :facepalm:

radioactiveman commented 1 year ago

Have you installed lib32-glibc? It's an opt-dependency for Mumble and is needed for mumble-overlay.

https://archlinux.org/packages/community/x86_64/mumble/

Krzmbrzl commented 1 year ago

@3JlOy-PYCCKUi some things that come to my mind: The overlay not finding glPopClientAttrib most likely means that the target program was not linked against OpenGL, which is a requirement for the overlay to work.

What goes on in the minetest case, I don't know. But for your original problem it might bw that the program uses a custom memory allocator instead of malloc, which would explain why that symbol can't be found...

Krzmbrzl commented 1 year ago

Oops, I accidentally deleted the comment of OP confirming that lib32-glibc is indeed installed.

3JlOy-PYCCKUi commented 1 year ago

https://github.com/mumble-voip/mumble/pull/5949 partially solves the problem by applying the patch from this pull-request, I was able to run minetest with the overlay, but everything else still does not work, also I tested the overlay with games from steam (via proton and native), also does not work

Krzmbrzl commented 1 year ago

Afaik steam games use Vulkan, which is not supported by our overlay.

For those games that still don't work, are the error messages as before?

3JlOy-PYCCKUi commented 1 year ago

glxgears is working too gzdoom, xeyes still don't work, error is the same

Krzmbrzl commented 1 year ago

gzdoom and xeyes probably don't use OpenGL and therefore it is expected that they don't work

Green-Sky commented 1 year ago

vulkan layer when?

Krzmbrzl commented 1 year ago

When someone finds time and motivation to implement it :P There is a dedicated ticket somewhere here on GitHub - it's rather old already though (iirc) :thinking:

cedarmax commented 1 year ago

Is there any way to just make the Mumble overlay always present, regardless of a game being open? I have the same issue.

Krzmbrzl commented 1 year ago

I don't think so. The overlay hooks into the graphics call of the game to do its rendering, so you have to have a game running for it to work.

Green-Sky commented 1 year ago

I don't think so. The overlay hooks into the graphics call of the game to do its rendering, so you have to have a game running for it to work.

except for vulkan, which could, if implemented, be installed as a systemwide layer.

cedarmax commented 1 year ago

I don't think so. The overlay hooks into the graphics call of the game to do its rendering, so you have to have a game running for it to work.

It is suggested here that this is possible: https://github.com/mumble-voip/mumble/issues/1273#issuecomment-46081763 On Windows it is possible to have the overlay always present. I'm trying to get the overlay to work with TF2 but the issue according to others seems to be that mumble is 64 bits, steam is 64 bits, but TF2 is 32 bits. Not that the overlay works in any other game, anyways.