OpenArena: lightning gun beam not visible with glibc 2.37 (x86_64) (bug)

My system: Kaby Lake Intel NUC (Intel Core i5 7260U / Intel Iris Plus 640 iGPU).

I noticed a very strange bug. At first I thought it was because of the mesa update, but it turned out to be glibc 2.37. This applies to both the old OpenArena client from 2012 (v0.8.8, installed from AUR) as well as the current ioquake3 configured to run OpenArena.

Using glibc 2.37-2 the lightning beam visual effect is completely missing, while using 2.36-7 everything is fine. To fix this I simply unpacked glibc-2.36-7-x86_64.pkg.tar.zst and ran:

export LD_LIBRARY_PATH=/path_to_unpacked_glibc/usr/lib/:$LD_LIBRARY_PATH
/opt/openarena/openarena.x86_64

This restored the missing visuals. It is also possible to run the 32 bit version of OA and even with version 2.37 it will work. Running the x86_64 version of the binary with LIBGL_ALWAYS_SOFTWARE=1 has no effect, the beam is still missing.

1 Like

I’m not sure what to reply here, you figured it out and fixed it. Maybe reclassify your thread if you don’t want to ask for support, because to me this is no support request here.

I wouldn’t really call it a fix, maybe a workaround at best. I think this should be resolved on a distribution scale and somehow fixed permanently. I haven’t tested this on other distros, so I reported it here. I only use Manjaro. Currently, due to glibc 2.37, the software behaves differently not only between different versions but also when compiled for different platforms (x86 and x86-64). Currently x86-64 is broken. I wonder what other software might have quirks and bugs because of the new glibc? It is very possible that it is the source of even more problems in other programs.

I don’t think OpenArena has had an update for a long time, so maybe the source is just not updated to work with newer glibc.

Yes, OpenArena hasn’t received an official update since 2012. However, it is possible to run OA with an updated ioquake3 engine that uses SDL2.

All you need is openarena and ioquake3-git from the AUR, then execute:

/opt/quake3/ioquake3 +set fs_basepath "/opt/openarena" +set com_homepath ".openarena" +set com_basegame "baseoa" +set com_legacyprotocol 71 +set sv_master1 dpmaster.deathmask.net +set com_hunkMegs 256 +set com_zoneMegs 64 +com_soundMegs 32 +set cl_renderer opengl1 +set r_mode -2 +set cg_fov 115

This always worked perfectly fine. Since the distribution started using glibc 2.37 both versions of the game engine, very old and the newest ioquake3 from git, exhibit the same bug.

To quickly test this on x86-64 (and other platforms) you can start the game and pull down the console by pressing the ~ key and use the following commands:

/devmap dm4ish
/give all

The lightning gun is bound to the 5 key by default. I didn’t notice it before but part of the machine gun model is missing when using glibc 2.37 on x86-64 platform! So there are more visual issues.

I still have the impression that glibc is to blame, since the same version in combination with the 32 bit version of the game engine works fine, but I may not have enough knowledge to draw a conclusion.

Well, glibc updates might happen much earlier in Arch-based distribution than Fedora or Ubuntu. 2.37 will land in Ubuntu 23.04 and Fedora 38. Then more people might notice issues like you did. OpenArena is an open source game and by the given fact that it got almost no updates, it maybe in some sort of maintenance mode. Sure you may sideload the glibc binary files as you had shown on the first post of yours however expecting any sort of support to fix it from our end is not given. Most packages we source 1:1 from Arch Linux and Arch mostly only compiles and keeps the package as long as it works kinda.

Graphical glitches can happen with some graphic cards and sometimes may not happen with others. Nviidia for example may use different libraries than Intel or AMD. Did you check the upstream projects if any bug reports get fixed in any sorts?

If there is no interest in the game anymore it might be hard to expect some sort of support and solution for it.

  • I tried compiling glibc from git but it failed so I don’t know if this has been fixed upstream.
  • The same bug also occurs when software 3D rendering is forced, so we can rule out an Intel iGPU driver bug. I also tried a modified Quake3e engine (an alternative to ioquake3) that can use Vulkan. Unfortunately, the same error still occurs with the lightning gun and the machine gun.
  • I’d like to see someone confirm that this also happens on an AMD CPU. Currently, I could only confirm this on a single Intel CPU with x86-64 game engine binaries. I’ve also tried toggling CPU vulnerability mitigations on and off via mitigations=off kernel parameter.
  • Maybe this needs to be reported to glibc developers? Unless I’m having some completely isolated problem that no one else can confirm.

I recompiled glibc multiple times to determine when this bug first appeared and the commit linked below caused this issue. Same problem with openSUSE Tumbleweed, I checked using a live USB stick. I think all CPUs having AVX2 may have the same issue with the latest glibc (2.37). One of these optimized C functions is not working properly:

x86: Optimize and shrink st{r|p}{n}{cat|cpy}-avx2 functions

I don’t have an account to report this to the glibc developers.

2 Likes

First of all, thanks for sharing that solution, I’ve been struggling with it couple of weeks and now it works again :slight_smile:

I’m not an expert, so would you advise how to make it more permanent? Now it requires that exporting part and running OA in terminal. Would that be somehow possible to make that done each time system boots and using just OA icon to run the game?

BTW, I’ve checked that both Manjaro and EndeavourOS, same behavior.