Hey there,
ATI again. I updated SFML2 after a while and discovered some trouble in sf::Window/sf::RenderWindow. When calling the destructor (implicitly or explicitly), programs will crash with Segmentation Fault under ATI.
I wrote a short and very simple program to test the behavior:
# include <SFML/Window.hpp>
int main() {
sf::Window App(sf::VideoMode(800, 600), "iCrash");
return 0;
}
This leads to the following output:
XIO: fatal IO error 11 (Resource temporarily unavailable) on X server "���"
after 115 requests (114 known processed) with 0 events remaining.
Segmentation fault
The call stack is as follows:
#0 0x7ffff653c518 XextFindDisplay() (/usr/lib/libXext.so.6:??)
#1 0x7ffff653bf85 ??() (/usr/lib/libXext.so.6:??)
#2 0x7ffff653c13c ??() (/usr/lib/libXext.so.6:??)
#3 0x7ffff6965e72 XCloseDisplay() (/usr/lib/libX11.so.6:??)
#4 0x7ffff335df6b ADL_Main_Control_Destroy() (/usr/lib/fglrx/libatiadlxx.so:??)
#5 0x7ffff50efa96 ??() (/usr/lib/fglrx/dri/fglrx_dri.so:??)
#6 0x7ffff51e5048 ??() (/usr/lib/fglrx/dri/fglrx_dri.so:??)
#7 0x7ffff3f1d5b5 ??() (/usr/lib/fglrx/dri/fglrx_dri.so:??)
#8 0x7ffff4a64d77 ??() (/usr/lib/fglrx/dri/fglrx_dri.so:??)
#9 0x7ffff4a6e7f1 ??() (/usr/lib/fglrx/dri/fglrx_dri.so:??)
#10 0x7ffff53b7844 ??() (/usr/lib/fglrx/dri/fglrx_dri.so:??)
#11 0x7ffff7e37909 ??() (/usr/lib/fglrx/libGL.so.1:??)
#12 0x7ffff7e3794a ??() (/usr/lib/fglrx/libGL.so.1:??)
#13 0x7ffff696d2d5 _XFreeExtData() (/usr/lib/libX11.so.6:??)
#14 0x7ffff697a90d _XFreeDisplayStructure() (/usr/lib/libX11.so.6:??)
#15 0x7ffff6965eaf XCloseDisplay() (/usr/lib/libX11.so.6:??)
#16 0x7ffff79c8ed1 sf::priv::GlxContext::~GlxContext() () (/usr/lib/libsfml-window.so.2.0:??)
#17 0x7ffff6ed58c0 __cxa_finalize() (/lib/libc.so.6:??)
#18 0x7ffff79c4ef6 __do_global_dtors_aux() (/usr/lib/libsfml-window.so.2.0:??)
#19 ( 0x0000000000000000 in ??() (??:??)
This consequently means that one cannot recreate a window, which is very bad (for example when switching from windowed to full screen mode).
Furthermore, another strange problem occurs when simply linking against sfml-window and/or sfml-graphics (additional to sfml-system): a simple program as
int main() {
return 0;
}
will never return.
This really seems to be ATI related, because everything works fine on a NVIDIA-powered PC.
Best regards,
Felix