Kaitain
Active Member
I've had a happy afternoon playing Civilization V.  Sadly, it didn't work out of the box, flashing the screen for a mere moment, then bailing out.  Launching Steam from the console, I saw the following:
	
	
	
		
No problem, I thought, it should be as simple as forcing Steam to use the supplied libraries, rather than the system libraries:
	
	
	
		
This didn't work. It complained about being unable to find my opengl drivers. So in true "sledgehammer-to-crack-a-nut" style, just delete the steam-provided libraries that are causing me problems, as a normal user:
	
	
	
		
... and now I'm back to:
	
	
	
		
A little google-fu later, I find a bug report on Arch linux boards that suggests that 32bit compatibility is broken if libxcb is compiled with -O2 optimisation. Interestingly, this affects Fedora as well, and might have been part of Gizmo's trouble with WebEx, which depends on having a working 32bit libxcb.
In Gentoo, as root:
	
	
	
		
Give libxcb new cflags:
	
	
	
		
 (Note these elaborate CFLAGs are taken from Gentoo's Ryzen wiki)
Rebuild libxcb (took about 30s) and everything works!
Using /etc/portage/env/(stuff) is not new, but is new to me as I've never had cause to use the feature before...
				
			
		Code:
	
	Civ5XP[5289] general protection ip:f73f32c9 sp:ee29fb14 error:0 in libxcb.so.1.1.0[f73e8000+2a000]
	No problem, I thought, it should be as simple as forcing Steam to use the supplied libraries, rather than the system libraries:
		Code:
	
	STEAM_RUNTIME_PREFER_HOST_LIBRARIES=0 steam steam://rungameid/8930
	This didn't work. It complained about being unable to find my opengl drivers. So in true "sledgehammer-to-crack-a-nut" style, just delete the steam-provided libraries that are causing me problems, as a normal user:
		Code:
	
	 find ~/.local/share/Steam/ \( -name "libgcc_s.so*" -o -name "libstdc++.so*" -o -name "libxcb.so*" -o -name "libgpg-error.so*" \) -print -delete
	... and now I'm back to:
		Code:
	
	Civ5XP[5289] general protection ip:f73f32c9 sp:ee29fb14 error:0 in libxcb.so.1.1.0[f73e8000+2a000]
	A little google-fu later, I find a bug report on Arch linux boards that suggests that 32bit compatibility is broken if libxcb is compiled with -O2 optimisation. Interestingly, this affects Fedora as well, and might have been part of Gizmo's trouble with WebEx, which depends on having a working 32bit libxcb.
In Gentoo, as root:
		Code:
	
	 mkdir -p /etc/portage/env/x11-libs
nano -w /etc/portage/env/x11-libs/libxcb
	
		Code:
	
	CFLAGS="-O1 -march=bdver4 -mno-fma4 -mno-tbm -mno-xop -mno-lwp -mclzero -madx -mrdseed -mmwaitx -msha -mxsavec -mxsaves -mclflushopt -mpopcnt -pipe"
CXXFLAGS="${CFLAGS}"
	Rebuild libxcb (took about 30s) and everything works!
Using /etc/portage/env/(stuff) is not new, but is new to me as I've never had cause to use the feature before...