Steam for Linux > Dyskusje ogólne > Szczegóły tematu
axeolin 23 Lis, 2012 - 9:35
Some progress with Catalyst 12.11 beta 8 drivers
As reported by a few already the beta 8 drivers SIGSEGV steam.

I ran steam with gdb to see if I could skip past the errant code and get it to work.

I noticed the crash happened in a X11 function called 'XQueryExtension' because a returned parameter, which should be a function pointer, has the value 31 and causes a page zero seg fault.

Earlier in the stack trace I see the driver is calling ADL_ApplicationProfiles_System_Reload()

Which, I tested and saw is not called by the previous beta driver.

So, I set a breakpoint at the function and just used gdb's return command so none of that code ran.

And that worked. The steam window popped up, logged in and then told me I wasn't in the beta. Ya boo :)

So, those with gdb knowledge and an ati card might have some luck running TF2, if you do the same, set a breakpoint on this function and when it's hit, just do 'return'. Of course, you might need to detatch GDB at some point, otherwise any performance gain may well be lost.

But presumably this shows that Application profiles are the issue. Perhaps we need one for this new driver and they didn't include it? Or perhaps we could copy something from our windows installs of the driver to stop the segfault happening?

I'm going to try to get TF2 running now.


Wyświetlanie 1-5 z 5 komentarzy
< >
LOLCAT 23 Lis, 2012 - 9:52 
Could it be possible to disassemble the binary and find the correct address, then edit it in a hex editor? If the function call could be replaced with nops or jmps to a right address, it would work fine, at least in theory.

PS: Application profiles coming to linux? This sounds good, even if they don't work at all yet.
Ostatnio edytowany przez: LOLCAT; 23 Lis, 2012 - 9:52
axeolin 23 Lis, 2012 - 11:20 
Could it be possible to disassemble the binary and find the correct address, then edit it in a hex editor? If the function call could be replaced with nops or jmps to a right address, it would work fine, at least in theory.

Yep, that would work too.

I got TF2 to run. In fact, once steam is running TF2 runs without needing to use gdb to skip anything.

Performance seems a mixed bag.

I've joined servers and got the same 20fps stuttering with the old driver. I've joined others and the game has had nigh on windows performance.

Similarly running a training session with bots had reasonable performance.

I experienced a few more crashes, although given the kludge I used to get it to run, it's as likely I caused it as the game did.

There seems to be a lot of shader compilation errors though, perhaps this is why the bot matches work better? (Because the bots aren't using new fancy pants weapons and effects)

Anyway, if anyone is interested, the steps I took to get steam to start with beta 8 were

gdb steam
> set args steam://open/games
>break ADL_ApplicationProfiles_System_Reload
> r
(then it'll stop at the break point)
>return
say y when prompted
>cont
(then it'll stop at the breakpoint again) (cf Norvig don't repeat yourself)
>return
say y
>cont
then you should be in steam and good to go

Starting TF2 from Steam works
axeolin 23 Lis, 2012 - 13:05 
Some screenshots to show the differences

Here's a bot match (11 bots)
http://steamcommunity.com/sharedfiles/filedetails/?id=109764603

Reasonable performance and as you can see a lot of the missing ch rac e s and l tt r s are now there :)

performance looks better than it is in the screenshot. In a 12v12 pub server there are quite a lot of slowdowns

Compared with earlier on the previous driver though, a big win :-

http://cloud.steampowered.com/ugc/918994853374699804/5177B7BC5CDC2144FF66EED8BA2747A896536FD8/
Kano 23 Lis, 2012 - 16:57 
Nice find, maybe you can just disable the hl2_linux profile in /etc/ati/atiogl.xml to let it run without changing the driver and using gdb, but mostlikely it runs slower then. It seems to be active for wine as well when you look at the diff.
sh amd-driver-installer-catalyst-12.11-beta-x86.x86_64.run --extract beta
sh amd-driver-installer-catalyst-12.11-beta8-x86.x86_64.run --extract beta8
diff -Nru beta/common/etc/ati beta8/common/etc/ati
axeolin 23 Lis, 2012 - 21:14 
Nice find, maybe you can just disable the hl2_linux profile in /etc/ati/atiogl.xml to let it run without changing the driver and using gdb, but mostlikely it runs slower then. It seems to be active for wine as well when you look at the diff.
sh amd-driver-installer-catalyst-12.11-beta-x86.x86_64.run --extract beta
sh amd-driver-installer-catalyst-12.11-beta8-x86.x86_64.run --extract beta8
diff -Nru beta/common/etc/ati beta8/common/etc/ati

Yeah, I've since discovered that the first call to ADL_ApplicationProfiles_System_Reload actually succeeds if you let it happen - although I haven't noticed any great differences either way. It's only the 2nd call that seg faults.

That suggests my speculation that ADL_ApplicationProfiles_System_Reload itself is at fault was probably flawed. It may well just be a coding bug or data that's not zeroed out when it should be.

But I hadn't really thought to look at any of the driver files or config. I was just using buildpkg and installing old then new - so you've given me another direction to look in.
Wyświetlanie 1-5 z 5 komentarzy
< >
Na stronę: 15 30 50
Data napisania: 23 Lis, 2012 - 9:35
Posty: 5