имею код:
7 SDL_Window *window = NULL;
8 SDL_Surface *screenSurface = NULL;
9 SDL_Surface *picture = NULL;
...
43 void shutdown(void) {
44 SDL_FreeSurface(picture);
45 picture = NULL;
46 SDL_DestroyWindow(window);
47 window = NULL;
48 SDL_Quit();
49 }
50
51 int main(int argc, char* args[]) {
...
55 shutdown();
56 return 0;
57 }
Вкратце, весь код отрабатывает безупречно, но при завершении работы программы происходит segfault, когда вызывается SDL_Quit. При отладке gdb показывает, что дело в libX11.so:
X11_VideoQuit (_this=<optimized out>)
at /home/rustam/src/SDL2-2.0.2/src/video/x11/SDL_x11video.c:651
651 if (data->im) {
(gdb)
652 X11_XCloseIM(data->im);
(gdb)
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff6bbbd67 in ?? ()
from /usr/lib/x86_64-linux-gnu/libX11.so.6
Занятно... погуглил на эту тему и вот эту статью: http://www.remlab.net/op/xlib.shtml
Хочется понять, это я неправильно завершаю программу или Xlib вставляет палки в колеса. Неприятно, когда сегфолты на пустом месте.
Кстати, некоторое время назад этого не происходило, с SDL 1.2 вообще никогда не сталкивался
Буду рад советам