При попытке загрузки модов, например osp 1.03a, возникает сбой. Лог консоли: .............. .............. .............. -------------------------------- Loading vm file vm/ui.qvm... VM malloc return 0xb025a000 for 585280 Received signal 11, exiting... ----- CL_Shutdown ----- RE_Shutdown( 1 ) ----------------------- Ошибка происходит сразу после вызова mmap2 (строка 1084) в файле vm_x86.c во время вызова memcpy (строка 1096). Экспериментальным методом удалось запустить моды... Для этого пришлось побайтно записать в замапленную область нули. --- a/quake3/code/qcommon/vm_x86.c +++ b/quake3/code/qcommon/vm_x86.c @@ -1093,6 +1093,11 @@ void VM_Compile( vm_t *vm, vmHeader_t *header ) { vm->codeBase = malloc(compiledOfs); #endif + char e = 0; + int ii; + for (ii = 0; ii < compiledOfs; ii++) + vm->codeBase[ii] = e; + Com_Memcpy( vm->codeBase, buf, compiledOfs ); #ifdef VM_X86_MMAP Забавно, что в текущем Сизифе это работает. Причём апдейты quake3, Glibc, libgcc4.1 и SDL из Сизифа не помогают. Один и тот же бинарий на бранче работает иначе, хотя на вид это совпадение. Проблема, скорее всего, в ядре... Steps to Reproduce: 1. Готовим паки 2. Запускаем мод 3. Получаем сбой
Если просто развернуть osp в ~/.q3a/osp, запустить quake3 и попытаться применить мод osp, вываливается на "Failed loading /usr/lib/games/quake3/osp/uii386.so: /usr/lib/games/quake3/osp/uii386.so: cannot open shared object file: No such file or directory" Если подсунуть uii386.so из baseq3, мод как бы стартует: Sys_LoadDll(/home/vvk/.q3a/osp/uii386.so): succeeded ... Sys_LoadDll(ui) found **vmMain** at 0xaf11779c Sys_LoadDll(ui) succeeded! Но при попытке запуска сервера вываливается: ***Loading vm file vm/qagame.qvm... Received signal 11, exiting... Мне казалось что для osp нужен какой-то свой uii386.so, и поэтому она не работает. Или это не так?
(In reply to comment #1) Тут проблема от распаковки не решалась, да и костыль это не удобный... К тому же по вашей ошибке видно, что движок не смог загрузить следующий архив... В общем эта бага повторяется на бранче и не поворяется не Сизифе с одними и теми же бинарниками (паки, моды, сам quake3, glibc, libgcc4.1, libSDL, kernel - 2.6.18-std-smp-alt10)... Объяснить это трудно... Сборку с вышеописанным патчем можно найти здесь: http://mastersin.vfose.ru/Local/i686/SRPMS.sisyphus/ http://mastersin.vfose.ru/Local/i686/RPMS.sisyphus/ > Но при попытке запуска сервера вываливается: > ***Loading vm file vm/qagame.qvm... > Received signal 11, exiting... > > Мне казалось что для osp нужен какой-то свой uii386.so, и поэтому она не > работает. Или это не так? Нет, проблема в том, что почему-то механизм распаковки и предкомпиляции кода (Just in time compiler имени автора Quake3) на последнем этапе копирования скомпилированного кода в замапленную область памяти падает...
Исправлено в 1.34-alt7.svn1114
(In reply to comment #3) > Исправлено в 1.34-alt7.svn1114 Не совсем понятно как конкретно это исправлено... С одной стороны в бранче обновлённого пакета нет, а сдругой стороны не понятно выявлена ли проблема появления этого бага в ядре. Надеюсь это не проявится в новых ядрах серии 2.6.24... До последнего времени эту проблему можно было решить выкачав собранную версию у меня... теперь из сизифа (надеюсь по зависимостям ещё не разошлось) или установив новое ядро из сизифа... В самом сизифе исправление имеет смысл, только при работе с ядрами серии 2.6.18, ибо проявляется только на них и, соотвественно, в основном у обычных пользователей дистрибутива... К сожалению модули для 2.6.24-std-def уже не пособираешь не переехав на Сизиф из-за зависимостей. Я думаю, что вопрос об этой проблеме в ядре стоит как поставить... Так или иначе обновившись из бранча, quake3 сейчас всё равно не запустишь...
В 4.0/branch исправления не будут вноситься уже технически (заглушена очередь на сборку), поэтому прошу ошибки, актуальные для sisyphus/p7/t7, перевесить на текущие ветки или сизиф.