Пытаюсь запустить базу WinNER (http://baza-winner.ru/w5setup.html) под вашей открытой реализацией Wine. Однако оно не запускается. Последние что оно говорит в консоль перед падением: fixme:ole:TLB_ReadTypeLib Header type magic 0x00505a4d not supported. err:ole:TLB_ReadTypeLib Loading of typelib L"C:\\WinNER5\\cup5\\cup.bin" failed with error 0 fixme:msxml:domdoc_get_url Полный лог сообщений в консоли, сообщение об ошибке из окошка, и скриншот, лежат тут: http://lj.shaplov.ru/2009/winner+wine/
sohranil v /var/ftp/pvt/Windows/DB/
Posle ustanovki IE problema v: ERR: ExpandFileNameEx: directory /C: not exists
трейс перед падением по каналу shell: trace:shell:UrlUnescapeW (L"file:///C:/WinNER5/cup5/cup.xml", (nil), 0x33df04, 0x00100000) trace:shell:UrlUnescapeW result L"file:///C:/WinNER5/cup5/cup.xml" trace:shell:UrlCanonicalizeW result L"file:///C:/WinNER5/cup5/cup.xml"
на функцию ExpandFileNameEx завёл отдельную багу #4086
При отладке по каналу relay. Последние строки перед падением: 0022:Call KERNEL32.LoadLibraryExA(0033fa9b "C:\\WinNER5\\cup5\\Vclx50.Ru",00000000,00000002) ret=400087a2 0022:Ret KERNEL32.LoadLibraryExA() retval=00000000 ret=400087a2 0022:Ret PE DLL (proc=0x4030b0a8,module=0x402f0000 L"Vclx50.bpl",reason=PROCESS_ATTACH,res=0x1) retval=ffffffff 0022:Call PE DLL (proc=0x7de33c10,module=0x7ddd0000 L"opengl32.dll",reason=PROCESS_ATTACH,res=0x1) 0022:Call KERNEL32.DisableThreadLibraryCalls(7ddd0000) ret=7de33bf4 0022:Ret KERNEL32.DisableThreadLibraryCalls() retval=00000001 ret=7de33bf4 0022:Call user32.GetDesktopWindow() ret=7de338aa 0022:Ret user32.GetDesktopWindow() retval=00070082 ret=7de338aa 0022:Call KERNEL32.GetModuleHandleA(7de4ef23 "winex11.drv") ret=7de338b8 0022:Ret KERNEL32.GetModuleHandleA() retval=7d8d0000 ret=7de338b8 0022:Call KERNEL32.GetModuleHandleA(7de4ef2f "gdi32.dll") ret=7de338cc 0022:Ret KERNEL32.GetModuleHandleA() retval=7e860000 ret=7de338cc 0022:Call KERNEL32.GetProcAddress(7d8d0000,7de4ef78 "wine_tsx11_lock") ret=7de33946 0022:Ret KERNEL32.GetProcAddress() retval=7d943797 ret=7de33946 0022:Call KERNEL32.GetProcAddress(7d8d0000,7de4ef88 "wine_tsx11_unlock") ret=7de33968 0022:Ret KERNEL32.GetProcAddress() retval=7d9437bf ret=7de33968 0022:Call KERNEL32.GetProcAddress(7e860000,7de4ef9a "wglGetProcAddress") ret=7de3398a 0022:Ret KERNEL32.GetProcAddress() retval=7e86f294 ret=7de3398a 0022:Call gdi32.wglGetProcAddress(7de4efac "wglGetIntegerv") ret=7de339a4 X Error of failed request: BadRequest (invalid request code or no such operation) Major opcode of failed request: 134 (DRI2) Minor opcode of failed request: 1 (DRI2Connect) Serial number of failed request: 658 Current serial number in output stream: 658
Разобрался. Ошибка возникает при вызове кода: else ret = dc->funcs->pwglGetProcAddress(func); находящегося в функции wglGetProcAddress (gdi32.dll) Возврат после этой команды уже не происходит. Если убрать данную сточку, то появляется графическое окно программы через функцию wglGetProcAddress программа пытается запросить адрес OpenGL функции func: 'wglGetIntegerv' Похожая проблема описывается в: http://www.winehq.org/pipermail/wine-patches/2006-November/032384.html
При комментировании следующих строк (по совету автора патча) в функции process_attach (opengl32/wgl.c) wine_wgl.p_wglGetIntegerv = (void *) wine_wgl.p_wglGetProcAddress("wglGetIntegerv"); wine_wgl.p_wglFinish = (void *)wine_wgl.p_wglGetProcAddress("wglFinish"); wine_wgl.p_wglFlush = (void *)wine_wgl.p_wglGetProcAddress("wglFlush"); программа идёт дальше, и выдаёт графическое сообщение об ошибке: EAccessViolation: Access violation at address 4007A7A8 in module 'Vcl50.bpl'. Read of address 00000038. в консоле: fixme:ole:TLB_ReadTypeLib Header type magic 0x00505a4d not supported. err:ole:TLB_ReadTypeLib Loading of typelib L"C:\\WinNER5\\cup5\\cup.bin" failed with error 0
Нет интереса в поддержке у разработчика. Осенью анонсировано решение для Linux.