Итак, теперь более основательно продебажил с другой стороны. Не со стороны ядра, а со стороны самой SDL1. И результат, надо сказать, несколько отличается от того, что предполагалось.
strace показывает, что сегфолт происходит в районе вызова FBIOPUT_VSCREENINFO. Такое в SDL1 есть и при тестировании видеорежимов. Однако, критичным оказался неожиданный кусок video/fbcon/SDL_fbvideo.c.
Находится он в функции FB_SetVideoMode() и в оригинале выглядит так:
if ( !shadow_fb &&
ioctl(console_fd, FBIOPUT_VSCREENINFO, &vinfo) < 0 ) {
vinfo.yres_virtual = height;
if ( ioctl(console_fd, FBIOPUT_VSCREENINFO, &vinfo) < 0 ) {
SDL_SetError("Couldn't set console screen info");
return(NULL);
}
}
if ( !shadow_fb &&
ioctl(console_fd, FBIOPUT_VSCREENINFO, &vinfo) < 0 ) {
vinfo.yres_virtual = height;
/*if ( ioctl(console_fd, FBIOPUT_VSCREENINFO, &vinfo) < 0 ) {
SDL_SetError("Couldn't set console screen info");
return(NULL);
}*/
}
Патч: http://saahriktu.org/downloads/patches/make_sdl1.2.15_works_with_framebuffer_...