after digging a bit deeper, tis may or may not be a driver issue :
Starting program: /home/jg/.steam/ubuntu12_32/steam
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[2015-03-11 15:33:59] Startup - updater built Feb 18 2015 15:31:44
Installing breakpad exception handler for appid(steam)/version(1424305157)
[New Thread 0xf45c9b40 (LWP 5013)]
Looks like steam didn't shutdown cleanly, scheduling immediate update check
[New Thread 0xf3a7db40 (LWP 5014)]
Installing breakpad exception handler for appid(steam)/version(1424305157)
[2015-03-11 15:33:59] Checking for update on startup
[2015-03-11 15:33:59] Checking for available updates...
[New Thread 0xf37ffb40 (LWP 5015)]
Installing breakpad exception handler for appid(steam)/version(1424305157)
[2015-03-11 15:34:00] Download skipped: /client/steam_client_ubuntu12 version 1424305157, installed version 1424305157
[2015-03-11 15:34:00] Nothing to do
[2015-03-11 15:34:00] Verifying installation...
[2015-03-11 15:34:00] Performing checksum verification of executable files
[2015-03-11 15:34:00] Verification complete
[Thread 0xf45c9b40 (LWP 5013) exited]
Breakpoint 1, 0xf4eca576 in CloseAmdDisplay(XDisplay, XExtCodes_) () from /usr/lib/i386-linux-gnu/libatiadlxx.so
1: x/i $eip
=> 0xf4eca576 <_Z15CloseAmdDisplayP9_XDisplayP9XExtCodes+6>: mov 0x8(%ebp),%edx
(gdb) c
Continuing.
Breakpoint 1, 0xf4eca576 in CloseAmdDisplay(XDisplay, XExtCodes_) () from /usr/lib/i386-linux-gnu/libatiadlxx.so
1: x/i $eip
=> 0xf4eca576 <_Z15CloseAmdDisplayP9_XDisplayP9XExtCodes+6>: mov 0x8(%ebp),%edx
(gdb)
Continuing.
Breakpoint 1, 0xf4eca576 in CloseAmdDisplay(XDisplay, XExtCodes_) () from /usr/lib/i386-linux-gnu/libatiadlxx.so
1: x/i $eip
=> 0xf4eca576 <_Z15CloseAmdDisplayP9_XDisplayP9XExtCodes+6>: mov 0x8(%ebp),%edx
(gdb) disas
Dump of assembler code for function _Z15CloseAmdDisplayP9_XDisplayP9XExtCodes:
0xf4eca570 <+0>: push %ebp
0xf4eca571 <+1>: mov %esp,%ebp
0xf4eca573 <+3>: sub $0x8,%esp
=> 0xf4eca576 <+6>: mov 0x8(%ebp),%edx
0xf4eca579 <+9>: mov %edx,0x4(%esp)
0xf4eca57d <+13>: mov 0xf4ee6560,%edx
0xf4eca583 <+19>: mov %edx,(%esp)
0xf4eca586 <+22>: call 0xf4ef6c5c
0xf4eca58c <+28>: mov %ebp,%esp
0xf4eca58e <+30>: pop %ebp
0xf4eca58f <+31>: ret
End of assembler dump.
(gdb) stepi
0xf4eca579 in CloseAmdDisplay(XDisplay, XExtCodes) () from /usr/lib/i386-linux-gnu/libatiadlxx.so
1: x/i $eip
=> 0xf4eca579 <Z15CloseAmdDisplayP9_XDisplayP9XExtCodes+9>: mov %edx,0x4(%esp)
(gdb)
0xf4eca57d in CloseAmdDisplay(XDisplay, XExtCodes) () from /usr/lib/i386-linux-gnu/libatiadlxx.so
1: x/i $eip
=> 0xf4eca57d <Z15CloseAmdDisplayP9_XDisplayP9XExtCodes+13>: mov 0xf4ee6560,%edx
(gdb)
0xf4eca583 in CloseAmdDisplay(XDisplay, XExtCodes) () from /usr/lib/i386-linux-gnu/libatiadlxx.so
1: x/i $eip
=> 0xf4eca583 <_Z15CloseAmdDisplayP9_XDisplayP9XExtCodes+19>: mov %edx,(%esp)
(gdb)
0xf4eca586 in CloseAmdDisplay(XDisplay, XExtCodes*) () from /usr/lib/i386-linux-gnu/libatiadlxx.so
1: x/i $eip
=> 0xf4eca586 <_Z15CloseAmdDisplayP9_XDisplayP9XExtCodes+22>: call *0xf4ef6c5c
(gdb)
0x00000000 in ?? ()
1: x/i $eip
=> 0x0: <error: Cannot access memory at address 0x0>
(gdb) x 0xf4ef6c5c
0xf4ef6c5c : 0x00000000
(gdb)
smells like a NULL callback
indeed :
gdb ./.steam/ubuntu12_32/steam
GNU gdb (Debian 7.7.1+dfsg-5) 7.7.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
http://www.gnu.org/software/gdb/bugs/.
Find the GDB manual and other documentation resources online at:
http://www.gnu.org/software/gdb/documentation/.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./.steam/ubuntu12_32/steam...(no debugging symbols found)...done.
(gdb) r
Starting program: /home/jg/.steam/ubuntu12_32/steam
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[2015-03-11 15:46:03] Startup - updater built Feb 18 2015 15:31:44
Installing breakpad exception handler for appid(steam)/version(1424305157)
[New Thread 0xf45c9b40 (LWP 5101)]
Looks like steam didn't shutdown cleanly, scheduling immediate update check
[New Thread 0xf3a7db40 (LWP 5102)]
Installing breakpad exception handler for appid(steam)/version(1424305157)
[2015-03-11 15:46:03] Checking for update on startup
[2015-03-11 15:46:03] Checking for available updates...
[New Thread 0xf37ffb40 (LWP 5103)]
Installing breakpad exception handler for appid(steam)/version(1424305157)
[2015-03-11 15:46:04] Download skipped: /client/steam_client_ubuntu12 version 1424305157, installed version 1424305157
[2015-03-11 15:46:04] Nothing to do
[2015-03-11 15:46:04] Verifying installation...
[2015-03-11 15:46:04] Performing checksum verification of executable files
[2015-03-11 15:46:04] Verification complete
[Thread 0xf45c9b40 (LWP 5101) exited]
Program received signal SIGSEGV, Segmentation fault.
0x00000000 in ?? ()
(gdb) bt
#0 0x00000000 in ?? ()
#1 0xf4eca58c in CloseAmdDisplay(XDisplay, XExtCodes_) () from /usr/lib/i386-linux-gnu/libatiadlxx.so
#2 0xf7e74591 in XCloseDisplay () from /usr/lib/i386-linux-gnu/libX11.so.6
#3 0xf6ebdce0 in ?? () from /usr/X11R6/lib/modules/dri/fglrx_dri.so
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb) b CloseAmdDisplay
Breakpoint 1 at 0xf4eca576
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /home/jg/.steam/ubuntu12_32/steam
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[2015-03-11 15:46:16] Startup - updater built Feb 18 2015 15:31:44
Installing breakpad exception handler for appid(steam)/version(1424305157)
[New Thread 0xf45c9b40 (LWP 5106)]
Looks like steam didn't shutdown cleanly, scheduling immediate update check
[New Thread 0xf3a7db40 (LWP 5107)]
Installing breakpad exception handler for appid(steam)/version(1424305157)
[2015-03-11 15:46:16] Checking for update on startup
[2015-03-11 15:46:16] Checking for available updates...
[New Thread 0xf37ffb40 (LWP 5108)]
Installing breakpad exception handler for appid(steam)/version(1424305157)
[2015-03-11 15:46:17] Download skipped: /client/steam_client_ubuntu12 version 1424305157, installed version 1424305157
[2015-03-11 15:46:17] Nothing to do
[2015-03-11 15:46:17] Verifying installation...
[2015-03-11 15:46:17] Performing checksum verification of executable files
[2015-03-11 15:46:17] Verification complete
[Thread 0xf45c9b40 (LWP 5106) exited]
Breakpoint 1, 0xf4eca576 in CloseAmdDisplay(XDisplay, XExtCodes_) () from /usr/lib/i386-linux-gnu/libatiadlxx.so
(gdb) disas CloseAmdDisplay
Dump of assembler code for function _Z15CloseAmdDisplayP9_XDisplayP9XExtCodes:
0xf4eca570 <+0>: push %ebp
0xf4eca571 <+1>: mov %esp,%ebp
0xf4eca573 <+3>: sub $0x8,%esp
=> 0xf4eca576 <+6>: mov 0x8(%ebp),%edx
0xf4eca579 <+9>: mov %edx,0x4(%esp)
0xf4eca57d <+13>: mov 0xf4ee6560,%edx
0xf4eca583 <+19>: mov %edx,(%esp)
0xf4eca586 <+22>: call *0xf4ef6c5c
0xf4eca58c <+28>: mov %ebp,%esp
0xf4eca58e <+30>: pop %ebp
0xf4eca58f <+31>: ret
End of assembler dump.
(gdb) awatch 0xf4ef6c5c
Cannot watch constant value `0xf4ef6c5c'.
(gdb) awatch *0xf4ef6c5c
Hardware access (read/write) watchpoint 2: *0xf4ef6c5c
(gdb) c
Continuing.
Hardware access (read/write) watchpoint 2: *0xf4ef6c5c
Value = -134418912
0xf7fcee20 in XextRemoveDisplay () from /usr/lib/i386-linux-gnu/libXext.so.6
(gdb) disp/x *0xf4ef6c5c
1: /x *0xf4ef6c5c = 0xf7fcee20
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) n
Program not restarted.
(gdb) c
Continuing.
Breakpoint 1, 0xf4eca576 in CloseAmdDisplay(XDisplay, XExtCodes_) () from /usr/lib/i386-linux-gnu/libatiadlxx.so
1: /x *0xf4ef6c5c = 0xf7fcee20
(gdb)
Continuing.
Hardware access (read/write) watchpoint 2: *0xf4ef6c5c
Value = -134418912
0xf7fcee20 in XextRemoveDisplay () from /usr/lib/i386-linux-gnu/libXext.so.6
1: /x *0xf4ef6c5c = 0xf7fcee20
(gdb)
Continuing.
Hardware access (read/write) watchpoint 2: *0xf4ef6c5c
Old value = -134418912
New value = 0
0xf4ecd9d0 in XFunctUninit() () from /usr/lib/i386-linux-gnu/libatiadlxx.so
1: /x *0xf4ef6c5c = 0x0
(gdb) bt
#0 0xf4ecd9d0 in XFunctUninit() () from /usr/lib/i386-linux-gnu/libatiadlxx.so
#1 0xf4e61605 in Priv_Main_Control_Clear() () from /usr/lib/i386-linux-gnu/libatiadlxx.so
#2 0xf4e6ffc8 in ADL2_Main_Control_Destroy () from /usr/lib/i386-linux-gnu/libatiadlxx.so
#3 0xf4e7012e in ADL_Main_Control_Destroy () from /usr/lib/i386-linux-gnu/libatiadlxx.so
#4 0xf611e8fb in ?? () from /usr/X11R6/lib/modules/dri/fglrx_dri.so
(gdb) disas XFunctUninit
Dump of assembler code for function _Z12XFunctUninitv:
0xf4ecd930 <+0>: push %ebp
0xf4ecd931 <+1>: xor %ecx,%ecx
0xf4ecd933 <+3>: mov %esp,%ebp
0xf4ecd935 <+5>: push %ebx
0xf4ecd936 <+6>: xor %eax,%eax
0xf4ecd938 <+8>: sub $0x4,%esp
0xf4ecd93b <+11>: mov %ecx,0xf4ef6c1c
0xf4ecd941 <+17>: mov %gs:0x0,%edx
0xf4ecd948 <+24>: xor %ecx,%ecx
0xf4ecd94a <+26>: mov %ecx,0xf4ef6c24
0xf4ecd950 <+32>: mov -0x78(%edx),%ebx
0xf4ecd956 <+38>: xor %ecx,%ecx
0xf4ecd958 <+40>: mov %ecx,0xf4ef6c34
0xf4ecd95e <+46>: xor %edx,%edx
0xf4ecd960 <+48>: xor %ecx,%ecx
0xf4ecd962 <+50>: mov %edx,0xf4ef6c20
0xf4ecd968 <+56>: xor %edx,%edx
0xf4ecd96a <+58>: mov %edx,0xf4ef6c2c
0xf4ecd970 <+64>: xor %edx,%edx
0xf4ecd972 <+66>: mov %edx,0xf4ef6c30
0xf4ecd978 <+72>: xor %edx,%edx
0xf4ecd97a <+74>: mov %edx,0xf4ef6c38
0xf4ecd980 <+80>: xor %edx,%edx
0xf4ecd982 <+82>: mov %edx,0xf4ef6c40
0xf4ecd988 <+88>: xor %edx,%edx
0xf4ecd98a <+90>: mov %edx,0xf4ef6c48
0xf4ecd990 <+96>: xor %edx,%edx
0xf4ecd992 <+98>: mov %edx,0xf4ef6c50
0xf4ecd998 <+104>: xor %edx,%edx
0xf4ecd99a <+106>: mov %ecx,0xf4ef6c3c
0xf4ecd9a0 <+112>: xor %ecx,%ecx
0xf4ecd9a2 <+114>: mov %edx,0xf4ef6c58
0xf4ecd9a8 <+120>: xor %edx,%edx
0xf4ecd9aa <+122>: mov %ecx,0xf4ef6c44
0xf4ecd9b0 <+128>: xor %ecx,%ecx
0xf4ecd9b2 <+130>: mov %edx,0xf4ef6c60
0xf4ecd9b8 <+136>: xor %edx,%edx
0xf4ecd9ba <+138>: mov %ecx,0xf4ef6c54
0xf4ecd9c0 <+144>: xor %ecx,%ecx
0xf4ecd9c2 <+146>: mov %edx,0xf4ef6c68
0xf4ecd9c8 <+152>: xor %edx,%edx
0xf4ecd9ca <+154>: mov %ecx,0xf4ef6c5c
=> 0xf4ecd9d0 <+160>: xor %ecx,%ecx
0xf4ecd9d2 <+162>: mov %edx,0xf4ef6c70
0xf4ecd9d8 <+168>: xor %edx,%edx
0xf4ecd9da <+170>: mov %eax,0xf4ef6c28
0xf4ecd9df <+175>: xor %eax,%eax
0xf4ecd9e1 <+177>: mov %ecx,0xf4ef6c64
0xf4ecd9e7 <+183>: xor %ecx,%ecx
0xf4ecd9e9 <+185>: mov %edx,0xf4ef6c78
0xf4ecd9ef <+191>: xor %edx,%edx
0xf4ecd9f1 <+193>: mov %eax,0xf4ef6c4c
0xf4ecd9f6 <+198>: xor %eax,%eax
0xf4ecd9f8 <+200>: mov %ecx,0xf4ef6c74
0xf4ecd9fe <+206>: xor %ecx,%ecx
0xf4ecda00 <+208>: mov %edx,0xf4ef6c80
0xf4ecda06 <+214>: xor %edx,%edx
0xf4ecda08 <+216>: mov %eax,0xf4ef6c6c
0xf4ecda0d <+221>: mov %ecx,0xf4ef6c7c
0xf4ecda13 <+227>: mov %edx,0xf4ef6c84
0xf4ecda19 <+233>: mov 0x3c(%ebx),%eax
0xf4ecda1c <+236>: test %eax,%eax
0xf4ecda1e <+238>: jne 0xf4ecda73 <_Z12XFunctUninitv+323>
0xf4ecda20 <+240>: mov 0x40(%ebx),%eax
0xf4ecda23 <+243>: test %eax,%eax
0xf4ecda25 <+245>: jne 0xf4ecda62 <_Z12XFunctUninitv+306>
0xf4ecda27 <+247>: mov 0x44(%ebx),%eax
0xf4ecda2a <+250>: test %eax,%eax
0xf4ecda2c <+252>: jne 0xf4ecda51 <_Z12XFunctUninitv+289>
0xf4ecda2e <+254>: mov 0x48(%ebx),%eax
0xf4ecda31 <+257>: test %eax,%eax
0xf4ecda33 <+259>: jne 0xf4ecda40 <_Z12XFunctUninitv+272>
0xf4ecda35 <+261>: pop %ebx
0xf4ecda36 <+262>: pop %ebx
0xf4ecda37 <+263>: pop %ebp
0xf4ecda38 <+264>: ret
0xf4ecda39 <+265>: lea 0x0(%esi,%eiz,1),%esi
0xf4ecda40 <+272>: mov %eax,(%esp)
0xf4ecda43 <+275>: call 0xf7e09dd0
0xf4ecda48 <+280>: movl $0x0,0x48(%ebx)
0xf4ecda4f <+287>: jmp 0xf4ecda35 <_Z12XFunctUninitv+261>
0xf4ecda51 <+289>: mov %eax,(%esp)
0xf4ecda54 <+292>: call 0xf7e09dd0
0xf4ecda59 <+297>: movl $0x0,0x44(%ebx)
0xf4ecda60 <+304>: jmp 0xf4ecda2e <_Z12XFunctUninitv+254>
0xf4ecda62 <+306>: mov %eax,(%esp)
0xf4ecda65 <+309>: call 0xf7e09dd0
0xf4ecda6a <+314>: movl $0x0,0x40(%ebx)
0xf4ecda71 <+321>: jmp 0xf4ecda27 <_Z12XFunctUninitv+247>
0xf4ecda73 <+323>: mov %eax,(%esp)
---Type to continue, or q to quit---q
Quit
(gdb)
something is calling XFunctUninit while CloseAmdDisplay is still running (threading problem maybe?)
can you check it's indeed not steam launcher linked ? it only happens with steam.
if it's not the case i'll file an issue at AMD.
Sincerely
solved by binary patching libatiadlxx.so to check if the ptr target is null before calling
@Jegeva: any chance you could elaborate on that patch? I'm also having this issue.
@drivers-valve: any updates on this?
@awerush the launcher was launching but games were not launching, no real point there, reverted to opensource... if you wanna know
md5sum libatiadlxx.so.ORIG =
9cbbba4b7f67c47e9ae47e00f4a61fd6 libatiadlxx.so.ORIG
explanation of the patch:
http://i.imgur.com/upmvXgW.png
to lazy to find a way find how to publish a binary patch so here
$ xxd libatiadlxx.so > b1.hex
$ xxd libatiadlxx.so.ORIG > b2.hex
$ diff b2.hex b1.hex
34647c34647
< 0087560: 5dc3 9090 9090 9090 9090 9090 9090 9090 ]...............
---
> 0087560: 5dc3 31c9 3908 7402 ff10 89ec 5dc3 9090 ].1.9.t.....]...
34649c34649
< 0087580: 350a 0089 1424 ff15 5c3c 0b00 89ec 5dc3 5....$..\<....].
---
> 0087580: 350a 0089 1424 90b8 5c3c 0b00 ebd4 5dc3 5....$..\<....].
obvious but : CAVEAT EMPTOR, this will not work on a different version of the lib AS IS, use the excelent hte editor if you have to redo it ;)
Vendor support for fglrx has been discontinued in favor of mesa and AMDGPU-PRO.
Closing as general video driver quality from 2015 is no longer relevant.
AMDGPU-PRO
I thought this one is no longer being updated either, just AMDGPU now?
Nothing extracted yet.
see: https://steamcommunity.com/app/221410/discussions/4/617329150699649021/
box is fine, 3D accel available, non steam games running fine (sauerbrauten, openarena, etc...)
fglrx : fglrx-14.501.1003 (the one available on the AMD website)
had the issue with :
kernel 3.14, now 3.19
fglrx :
14.9+ga14.201-2
14.501.1003
fglrxinfo :
display: :0.0 screen: 0
OpenGL vendor string: Advanced Micro Devices, Inc.
OpenGL renderer string: AMD Radeon R9 200 Series
OpenGL version string: 4.4.13283 Compatibility Profile Context 14.201.1006.1002
display: :0.0 screen: 1
OpenGL vendor string: Advanced Micro Devices, Inc.
OpenGL renderer string: AMD Radeon R9 200 Series
OpenGL version string: 4.4.13283 Compatibility Profile Context 14.201.1006.1002
display: :0.0 screen: 2
OpenGL vendor string: Advanced Micro Devices, Inc.
OpenGL renderer string: AMD Radeon R9 200 Series
OpenGL version string: 4.4.13283 Compatibility Profile Context 14.201.1006.1002
Program received signal SIGSEGV, Segmentation fault.
0x00000000 in ?? ()
(gdb) bt
#0 0x00000000 in ?? ()
#1 0xf4ecc58c in CloseAmdDisplay(XDisplay, XExtCodes_) () from /usr/lib/i386-linux-gnu/libatiadlxx.so
#2 0xf7e75591 in XCloseDisplay () from /usr/lib/i386-linux-gnu/libX11.so.6
#3 0xf6ebfce0 in ?? () from /usr/X11R6/lib/modules/dri/fglrx_dri.so
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
last uploaded dump pertaining to the issue :
CrashID=bp-0277bf18-aee9-4464-8053-189cc2150310