Summary: | Не устанавливается Гарант 7.4.1 | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Andrey Vusik <night> |
Component: | Запуск ; Отладка ; Исключения | Assignee: | Виталий Перов <vitperov> |
Status: | CLOSED FIXED | QA Contact: | Денис Баранов <baraka> |
Severity: | critical | ||
Priority: | P2 | CC: | delayer, goga, kirill, kondratyuk, lav, misha, sergeyyy2004 |
Version: | 1.0.12 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | 13774, 13766, 13729, 13797, 13963 | Связано с: | |
Дата напоминания: | |||
Bug Depends on: | 5475 | ||
Bug Blocks: | 5333, 5472 | ||
Deadline: | 2010-04-27 |
Description
Andrey Vusik
2010-03-24 17:56:32 MSK
GetModuleHandleA вызывается с неправильным указателем: Backtrace: =>0 0xb7d29021 strlen+0x31() in libc.so.6 (0x0032fdf4) 1 0x7edceecc FILE_name_AtoW+0x24(name=*** invalid address 0x4 ***, alloc=0) [/home/amorozov/Projects/wine-eter-1.0.12/dlls/kernel32/file.c:250] in kernel32 (0x0032fe34) 2 0x7edf445a GetModuleHandleExA+0x53(flags=2, name=*** invalid address 0x4 ***, module=0x32fe88) [/home/amorozov/Projects/wine-eter-1.0.12/dlls/kernel32/module.c:492] in kernel32 (0x0032fe64) 3 0x7edf4678 GetModuleHandleA+0x2c(module=*** invalid address 0x4 ***) [/home/amorozov/Projects/wine-eter-1.0.12/dlls/kernel32/module.c:560] in kernel32 (0x0032fe94) 4 0x004012c7 in f1setup (+0x12c7) (0x0032fee8) 5 0x7ee06c1c start_process+0x156(arg=(nil)) [/home/amorozov/Projects/wine-eter-1.0.12/dlls/kernel32/process.c:923] in kernel32 (0x0032ffe8) Если запускать с WINEDEBUG=+relay, выводится сообщение "Подходящий язык установки не может быть выбран". Я ошибся, используется *(ptr + 12) + 4 Устанавливается через *.msi в папке setup Но запуск всех *.exe (включая последующую установку данных) заканчивается Can't attach process 0076: error 5 Кстати, можно проверять на последней версии Гаранта 7.4.1-18 При добавлении fixme на kernel32.dll:start_process() программа успешно запускается. Получаем: <wine@cellar bottle prav/garant/7-4-1/local>$ ww F1LocalSetupRus_ru-ru.exe fixme:module:GetModuleHandleA module = 0x7e9dcef2 -> 'gdi32' ----------------------------- fixme:process:start_process 000d:Starting process L"C:\\windows\\system32\\etermsg.exe" (entryproc=0x7ea3a5f4) fixme:process:start_process 000b:Starting process L"C:\\windows\\system32\\wineboot.exe" (entryproc=0x7ea32b64) fixme:process:start_process 000f:Starting process L"C:\\windows\\system32\\services.exe" (entryproc=0x7ea391fc) fixme:module:GetModuleHandleA module = 0x8f810ef2 -> 'gdi32' ----------------------------- fixme:process:start_process 0012:Starting process L"C:\\windows\\system32\\winedevice.exe" (entryproc=0x8fa1a42c) fixme:module:GetModuleHandleA module = 0x8f818ef2 -> 'gdi32' ----------------------------- fixme:process:start_process 0018:Starting process L"C:\\windows\\system32\\winedevice.exe" (entryproc=0x8fa2242c) fixme:module:GetModuleHandleA module = 0x8f810ef2 -> 'gdi32' ----------------------------- fixme:process:start_process 001c:Starting process L"C:\\windows\\system32\\winedevice.exe" (entryproc=0x8fa1a42c) fixme:module:GetModuleHandleA module = 0x8f810ef2 -> 'gdi32' ----------------------------- fixme:module:GetModuleHandleA module = 0x8f810ef2 -> 'gdi32' ----------------------------- fixme:process:start_process 0022:Starting process L"C:\\windows\\system32\\winedevice.exe" (entryproc=0x8fa1a42c) fixme:process:start_process 0025:Starting process L"C:\\windows\\system32\\winedevice.exe" (entryproc=0x8fa1a42c) fixme:module:GetModuleHandleA module = 0x8f810ef2 -> 'gdi32' ----------------------------- fixme:module:GetModuleHandleA module = 0x7e6f8ef2 -> 'gdi32' ----------------------------- fixme:process:start_process 002a:Starting process L"C:\\windows\\system32\\winedevice.exe" (entryproc=0x8fa1a42c) fixme:module:GetModuleHandleA module = 0x7ea24ef2 -> 'gdi32' ----------------------------- fixme:process:start_process 0009:Starting process L"C:\\741\\LOCAL\\setup\\F1LocalSetupRus_ru-ru.exe" (entryproc=0x401004) fixme:module:GetModuleHandleA module = 0x7ee2afe9 -> 't_process' ----------------------------- fixme:module:GetModuleHandleA module = 0x376bb0 -> 'user32' ----------------------------- fixme:module:GetModuleHandleA module = 0x376bb0 -> 'advapi32' ----------------------------- fixme:module:GetModuleHandleA module = 0x0 -> 'Invalid' ----------------------------- fixme:module:GetModuleHandleA eterhack: invalid pointer. Return 0 fixme:module:GetModuleHandleA module = 0x376bb0 -> 'kernel32.dll' ----------------------------- fixme:module:GetModuleHandleA module = 0x41256c -> 'KERNEL32.DLL' ----------------------------- fixme:module:GetModuleHandleA module = 0x41256c -> 'KERNEL32.DLL' ----------------------------- Если в start_process убрать вывод всех сообщений, то даже при отладке по каналу relay программа падает. При этом можно точно отследить все функции, вызываемые перед падением fixme:module:GetModuleHandleA module = 0x7ea1cef2 -> 'gdi32' ----------------------------- 003c:Call PE DLL (proc=0x7e3b5078,module=0x7e3a0000 L"imm32.dll",reason=PROCESS_ATTACH,res=(nil)) 003c:Call user32.RegisterWindowMessageA(7e3b5a6b "MSIMEService") ret=7e3adbd6 003c:Ret user32.RegisterWindowMessageA() retval=0000c000 ret=7e3adbd6 003c:Call user32.RegisterWindowMessageA(7e3b5a78 "MSIMEReconvertOptions") ret=7e3adbed 003c:Ret user32.RegisterWindowMessageA() retval=0000c001 ret=7e3adbed 003c:Call user32.RegisterWindowMessageA(7e3b5a8e "MSIMEMouseOperation") ret=7e3adc04 003c:Ret user32.RegisterWindowMessageA() retval=0000c002 ret=7e3adc04 003c:Call user32.RegisterWindowMessageA(7e3b5aa2 "MSIMEReconvertRequest") ret=7e3adc1b 003c:Ret user32.RegisterWindowMessageA() retval=0000c003 ret=7e3adc1b 003c:Call user32.RegisterWindowMessageA(7e3b5ab8 "MSIMEReconvert") ret=7e3adc32 003c:Ret user32.RegisterWindowMessageA() retval=0000c004 ret=7e3adc32 003c:Call user32.RegisterWindowMessageA(7e3b5ac7 "MSIMEQueryPosition") ret=7e3adc49 003c:Ret user32.RegisterWindowMessageA() retval=0000c005 ret=7e3adc49 003c:Call user32.RegisterWindowMessageA(7e3b5ada "MSIMEDocumentFeed") ret=7e3adc60 003c:Ret user32.RegisterWindowMessageA() retval=0000c006 ret=7e3adc60 003c:Call KERNEL32.TlsAlloc() ret=7e3add01 fixme:process:TlsAlloc CALL 003c:Ret KERNEL32.TlsAlloc() retval=00000000 ret=7e3add01 003c:Ret PE DLL (proc=0x7e3b5078,module=0x7e3a0000 L"imm32.dll",reason=PROCESS_ATTACH,res=(nil)) retval=1 003c:Call PE DLL (proc=0x7e5d0d9c,module=0x7e550000 L"winex11.drv",reason=PROCESS_ATTACH,res=(nil)) fixme:process:TlsAlloc CALL 003c:Ret PE DLL (proc=0x7e5d0d9c,module=0x7e550000 L"winex11.drv",reason=PROCESS_ATTACH,res=(nil)) retval=1 003c:Ret PE DLL (proc=0x7ea08edc,module=0x7e950000 L"user32.dll",reason=PROCESS_ATTACH,res=0x1) retval=1 003c:Call KERNEL32.GetModuleHandleA(00000004) ret=004012c7 fixme:module:GetModuleHandleA module = 0x4 -> 'Invalid' ----------------------------- Так, как задача срочная, предлагаю сделать временный хак, а правильное решение проблемы отложить. Достаточно просто выводить какое-нибудь сообщение в kernel32.dll:start_process() для того, чтобы программа заработала. > Достаточно просто выводить какое-нибудь
> сообщение в kernel32.dll:start_process() для того, чтобы
> программа заработала.
Не уверен, что достаточно. Это что-то вроде плавающего бага, который будет на разных железках вылезать - в зависимости от количества процессоров, их скорости, памяти и т.п. Разве что снизить вероятность появления?
Заметил, что при добавлении FIXME бага исчезает. При добавлении printf - остаётся Отправил письмо в Гарант. *** Bug 5450 has been marked as a duplicate of this bug. *** Ждем фикса от Гаранта? Или будет сборка с костылем fixme? Интересные дела... Только что звонила девочка из "Гаранта", с которой мы общаемся по поводу этого самого "Гаранта", и сказала, что у нее у одного из клиентов "тоже линукс, и там все встало и заработало"... Нужно срочно делать Гарант, 1мая скоро. (In reply to comment #24) > Интересные дела... Только что звонила > девочка из "Гаранта", с которой мы общаемся > по поводу этого самого "Гаранта", и сказала, > что у нее у одного из клиентов "тоже линукс, > и там все встало и заработало"... > А вы уверены, что версия именно 7.4.1? Не уверен ;) "О программе" в моем случае говорит следующее: 7.04.0.239 А некая "следующая" версия оболочки, на которую должно бы обновиться, не запускается, и ее версию я точно сказать не могу. Создал новую бутылку prav/garant/7-4-1/local2 Проверил установку - всё работает. (Установка данных - отдельная бага) Гарант какой то патч прислал? Или сами что-то поправили/залатали? (In reply to comment #34) > Гарант какой то патч прислал? Или сами > что-то поправили/залатали? > Сами поправили А когда пользователем будет доступен этот патч? Принято. WINE@Etersoft 1.0.12 eter5.6/eter8 Работает |