Ставить в бутылку prav/garant/7-4-1/local Дистрибутив в Windows/Правовые/Garant\ 7.4.1/741/ Падает на: fixme:ole:DllRegisterServer stub wine: Unhandled page fault on read access to 0x00000004 at address 0xb7e84021 (thread 000c), starting debugger... Unhandled exception: page fault on read access to 0x00000004 in 32-bit code (0xb7e84021). Register dump: CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b EIP:b7e84021 ESP:0032fde8 EBP:0032fe04 EFLAGS:00210246( - 00 -RIZP1) EAX:00000004 EBX:7efc8ff4 ECX:69906fbc EDX:00000000 ESI:0032fe24 EDI:0032fe24 Stack dump: 0x0032fde8: 7ef96bec 00000004 00000000 00000000 0x0032fdf8: 00000000 7ee81ff4 0032fe1c 0032fe44 0x0032fe08: 7ee1167f 0032fe24 00000004 00000000 0x0032fe18: 00000000 00000000 7efc8ff4 7ffdf000 0x0032fe28: 00000004 7ef7a837 0032fe4c 00000000 0x0032fe38: 7ee81ff4 00000002 0032fe98 0032fe74 Backtrace: =>0 0xb7e84021 strlen+0x31() in libc.so.6 (0x0032fe04) 1 0x7ee1167f FILE_name_AtoW+0x2f() in kernel32 (0x0032fe44) 2 0x7ee30f28 GetModuleHandleExA+0x68() in kernel32 (0x0032fe74) 3 0x7ee30f8c GetModuleHandleA+0x2c() in kernel32 (0x0032fea4) 4 0x004012c7 in f1setup (+0x12c7) (0x0032fef8) 5 0x7ee42b5f in kernel32 (+0x62b5f) (0x0032ffe8) 0xb7e84021 strlen+0x31 in libc.so.6: movl 0x0(%eax),%ecx Modules: Module Address Debug info Name (51 modules) PE 400000- 5be000 Export f1setup ELF 7bf00000-7bf05000 Deferred <wine-loader> ELF 7e3ab000-7e3b1000 Deferred libxfixes.so.3 ELF 7e3b1000-7e3bb000 Deferred libxcursor.so.1 ELF 7e3bb000-7e3bf000 Deferred libxcomposite.so.1 ELF 7e3bf000-7e3c7000 Deferred libxrandr.so.2 ELF 7e3c7000-7e3d1000 Deferred libxrender.so.1 ELF 7e3d1000-7e3d7000 Deferred libxxf86vm.so.1 ELF 7e3d7000-7e3db000 Deferred libxinerama.so.1 ELF 7e3db000-7e3f1000 Deferred libresolv.so.2 ELF 7e3f1000-7e3f8000 Deferred libnss_dns.so.2 ELF 7e3f8000-7e403000 Deferred libnss_nis.so.2 ELF 7e403000-7e41c000 Deferred libnsl.so.1 ELF 7e41c000-7e42a000 Deferred libnss_nisplus.so.2 ELF 7e42a000-7e44b000 Deferred imm32<elf> \-PE 7e430000-7e44b000 \ imm32 ELF 7e44b000-7e451000 Deferred libxdmcp.so.6 ELF 7e451000-7e455000 Deferred libxau.so.6 ELF 7e455000-7e46e000 Deferred libxcb.so.1 ELF 7e46e000-7e473000 Deferred libuuid.so.1 ELF 7e473000-7e48b000 Deferred libice.so.6 ELF 7e48b000-7e5a8000 Deferred libx11.so.6 ELF 7e5a8000-7e5b8000 Deferred libxext.so.6 ELF 7e5b8000-7e5c1000 Deferred libsm.so.6 ELF 7e5db000-7e677000 Deferred winex11<elf> \-PE 7e5f0000-7e677000 \ winex11 ELF 7e677000-7e68c000 Deferred keyboard.drv16.so PE 7e680000-7e68c000 Deferred keyboard.drv16 ELF 7e767000-7e7bc000 Deferred advapi32<elf> \-PE 7e770000-7e7bc000 \ advapi32 ELF 7e7bc000-7e7e3000 Deferred libexpat.so.1 ELF 7e7e3000-7e7f9000 Deferred libz.so.1 ELF 7e7f9000-7e826000 Deferred libfontconfig.so.1 ELF 7e826000-7e8ac000 Deferred libfreetype.so.6 ELF 7e8ac000-7e94c000 Deferred gdi32<elf> \-PE 7e8c0000-7e94c000 \ gdi32 ELF 7e94c000-7ea97000 Deferred user32<elf> \-PE 7e960000-7ea97000 \ user32 ELF 7ea97000-7ebd6000 Deferred libcrypto.so.7 ELF 7ebd6000-7ebe9000 Deferred libnatspec.so.0 ELF 7ebe9000-7ec55000 Deferred libwine-etersoft.so.1 ELF 7edcb000-7ef09000 Export kernel32<elf> \-PE 7ede0000-7ef09000 \ kernel32 ELF 7ef09000-7ef33000 Deferred libm.so.6 ELF 7ef33000-7f000000 Deferred ntdll<elf> \-PE 7ef50000-7f000000 \ ntdll ELF b7e00000-b7e0d000 Deferred libnss_files.so.2 ELF b7e0e000-b7e13000 Deferred libdl.so.2 ELF b7e13000-b7f6b000 Export libc.so.6 ELF b7f6b000-b7f84000 Deferred libpthread.so.0 ELF b80db000-b80f8000 Deferred ld-linux.so.2 Threads: process tid prio (all id:s are in hex) 0000000e 00000027 0 0000001f 0 00000016 0 00000015 0 00000014 0 00000010 0 0000000f 0 00000011 00000017 0 00000013 0 00000012 0 00000018 0000002b 0 00000023 0 0000001b 0 0000001a 0 00000019 0 0000001c 00000020 0 0000001e 0 0000001d 0 00000024 00000028 0 00000026 0 00000025 0 00000035 00000036 0 00000047 (D) P:\Windows\��������\Garant 7.4.1\741\LOCAL\F1Setup.exe 0000000c 0 <== Backtrace: =>0 0xb7e84021 strlen+0x31() in libc.so.6 (0x0032fe04) 1 0x7ee1167f FILE_name_AtoW+0x2f() in kernel32 (0x0032fe44) 2 0x7ee30f28 GetModuleHandleExA+0x68() in kernel32 (0x0032fe74) 3 0x7ee30f8c GetModuleHandleA+0x2c() in kernel32 (0x0032fea4) 4 0x004012c7 in f1setup (+0x12c7) (0x0032fef8) 5 0x7ee42b5f in kernel32 (+0x62b5f) (0x0032ffe8)
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
Работает