Linux version crashes with ./libiggy_linux.so: undefined symbol: pthread_yield

  • We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.

atomopawn

Recruit
Mar 19, 2022
2
2
The linux version is built against an old version of glibc. Version 2.34 and higher of glibc removes the pthread_yield function this game needs. Instead, programs are supposed to use sched_yield(). A workaround is to compile a "shim" that will create a pthread_yield() function that calls sched_yield() and use LD_PRELOAD to load it.

I am attaching two files I've created that allow you to fix this. To use them, rename pthread_yield.c.txt to pthread_yield.c and compile it with:

gcc -m32 -shared -fPIC pthread_yield.c -o pthread_yield.so

And copy pthread_yield.so to

STEAM_FOLDER/steam/steamapps/common/AoW3/

(or whichever folder your AoW3 files are in)

Then edit AoW3Launcher.sh.txt to add an LD_PRELOAD variable set to pthread_yield.so or copy the AoW3Launcher.sh.txt file over the existing AoW3Launcher.sh file).

Hopefully the publisher will release a patch soon that fixes this issue more correctly.
 

Attachments

  • pthread_yield.c.txt
    96 bytes · Views: 0
  • AoW3Launcher.sh.txt
    1,7 KB · Views: 0
  • 2Like
Reactions:
Thanks for the post! It was quite helpful.

Just a quick note, the external function declaration should really be:
C:
extern int sched_yield(void);
One could also just remove it and uncomment the first line.
 
The fix in the OP worked exactly as advertised. THANK YOU SO MUCH for posting this! I had to go back to my windows partition to play AoW3 for awhile, now I can boot linux everytime again!
 
Thank you very much for the tip!

It's of no use for me now, because my distribution (Mageia 10 stable) keeps with glib 2.32 (rev. 1867065 from 2022/07/01), for some reason.
But I should soon be affected, I guess.

As a side note, in some other occasion, with another game, I had to manually download and install the 32 bit version of a library that is shipped only in 64 bits now by my distribution.
 
Sadly, it doesn't work for me on Gentoo with glibc-2.38.
No error when I run from the shell : sh AoW3Launcher.sh, then nothings !

edit : ok, it works for me too, but as Guest!
 
Last edited: