Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 807 - Установка Fine Reader 9.0 падает   Make a simular bug
Summary: Установка Fine Reader 9.0 падает
Status: CLOSED FIXED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: Установка программ / MSI (show other bugs)
Version: 1.0.7
Hardware: PC Linux
: P4 normal
Target Milestone: ---
Assignee: Svetlana Zhukova
QA Contact: Svetlana Zhukova
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 1037 1838 2666 3000 3244 5618 8900
  Show dependency treegraph
 
In work:
Reported: 2007-10-22 19:35 MSD by Sergey Lebedev
Modified: 2024-03-20 23:42 MSK (History)
7 users (show)

See Also:
Заявки RT: 13614
Связано с:
Дата напоминания:


Attachments
Зарегестированный сервис на винде (3.61 KB, text/plain)
2010-11-18 03:58 MSK, Anton Rudnev
Details
Дерево действий установки (14.76 KB, text/plain)
2010-11-18 03:58 MSK, Anton Rudnev
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Sergey Lebedev 2007-10-22 19:35:02 MSD
winexp Setup.exe
При попытке установить FineReader 9.0, на этапе "Установка новых служб"

fixme:msi:ITERATE_CreateShortcuts poorly handled shortcut format, advertised shortcut
err:menubuilder:InvokeShellLinker failed to fork and exec wineshelllink
fixme:shell:DllCanUnloadNow stub
fixme:shell:DllCanUnloadNow stub
fixme:msi:ITERATE_InstallService Dependency list unhandled!
fixme:msi:ACTION_CustomAction msidbCustomActionTypeNoImpersonate not handled
wine: Unhandled exception 0x000006ba at address 0x7b841270 (thread 0025), starting debugger...
WineDbg starting on pid 000c
Unhandled exception: 0x000006ba in 32-bit code (0x7b8412f2).
Register dump:
 CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b
 EIP:7b8412f2 ESP:7befe150 EBP:7befe1b4 EFLAGS:00000246(   - 00      - IZP1)
 EAX:7b82be31 EBX:7b8ad87c ECX:00000000 EDX:00000000
 ESI:000000b0 EDI:7befe2c0
Stack dump:
0x7befe150:  7befe188 b7dfd4da b7e0cdfe b7f0881c
0x7befe160:  000006ba 00000000 00000000 7b841270
0x7befe170:  00000000 7befe1d4 7eae421f 7befe39c
0x7befe180:  0021ff28 00000002 b7e0cea2 7eaff940
0x7befe190:  7befe22c 00110000 7eafa370 00948740
0x7befe1a0:  00000010 0021ff28 000000b0 00000000
Backtrace:
=>1 0x7b8412f2 RaiseException+0x82() in kernel32 (0x7befe1b4)
  2 0x7eaeba95 RpcRaiseException+0x35() in rpcrt4 (0x7befe1d4)
  3 0x7eac9f18 NdrSendReceive+0x118() in rpcrt4 (0x7befe204)
  4 0x7eadc294 NdrClientCall2+0x1214() in rpcrt4 (0x7befe3e4)
  5 0x100fefd4 in msi583.tmp (+0xfefd4) (0x00c66794)
  6 0x00610063 (0x006f006c)
  7 0x00000000 (0x00000000)
0x7b8412f2 RaiseException+0x82 in kernel32: movl        0xfffffffc(%ebp),%ebx


Fine Reader взят с  http://www.abbyy.ru/download/?param=138972
Comment 1 Анатолий Лютин 2007-10-23 16:24:09 MSD
Если поставить iexplore, то установка проходит.
Проблема в том, что после установки fr9 не работает - когда запускаешь его - молчит. Не виснет, а как будто выполнился уже.
Comment 2 Анатолий Лютин 2008-05-21 19:54:04 MSD
конец июля, минимум.
Comment 3 Анатолий Лютин 2008-07-10 15:14:10 MSD
Не занимаюсь.
Comment 4 Константин Кондратюк 2008-07-21 06:58:44 MSD
Сейчас:

fixme:msi:ITERATE_InstallService Dependency list unhandled!
fixme:ntdll:NtLockFile I/O completion on lock not implemented yet
fixme:ntdll:NtLockFile I/O completion on lock not implemented yet
fixme:ntdll:NtLockFile I/O completion on lock not implemented yet
wine: Unhandled exception 0x000006ba at address 0x7b8428e0 (thread 0033), starting debugger...
<...>
Backtrace:
=>1 0x7b842962 RaiseException+0x82() in kernel32 (0x7e09fd64)
  2 0x7e787365 RpcRaiseException+0x35() in rpcrt4 (0x7e09fd84)
  3 0x7e75bc7a in rpcrt4 (+0xbc7a) (0x7e09fdb4)
  4 0x7e773781 NdrClientCall2+0x361() in rpcrt4 (0x7e0a03d4)
  5 0x100fefd4 in msi7b34.tmp (+0xfefd4) (0x00a56794)
Comment 5 Константин Кондратюк 2008-07-22 16:06:54 MSD
В текущем ww получаю ко всему ещё и:

err:rpc:I_RpcReceive we got fault packet with status 0x3e6
err:msi:ITERATE_InstallService Failed to create service L"ABBYY.Licensing.FineReader.Professional.9.0": 998
Comment 6 Константин Кондратюк 2008-07-24 18:12:29 MSD
winexp в новой сборке (с новым окружением)

fixme:msi:ITERATE_CreateShortcuts poorly handled shortcut format, advertised shortcut
err:msi:ITERATE_InstallService Failed to open the SC Manager!
fixme:ntdll:NtLockFile I/O completion on lock not implemented yet
fixme:ntdll:NtLockFile I/O completion on lock not implemented yet
fixme:ntdll:NtLockFile I/O completion on lock not implemented yet
wine: Unhandled exception 0x000006ba at address 0x7b842960 (thread 0032), starting debugger...
Comment 7 Константин Кондратюк 2008-07-24 19:15:33 MSD
Backtrace:
=>1 0x7b84319a RaiseException+0x82(code=0x6ba, flags=0x0, nbargs=0x0, args=0x0) [/srv/kondratyuk/Projects/wine/dlls/kernel32/except.c:84] in kernel32 (0x7e195df4)
  2 0x7ea6a783 RpcRaiseException+0x22(exception=0x6ba) [/srv/kondratyuk/Projects/wine/dlls/rpcrt4/rpcrt4_main.c:185] in rpcrt4 (0x7e195e24)
  3 0x7ea3dab3 NdrGetBuffer+0x99(stubmsg=0x7e196284, buflen=0xb0, handle=0x74ffa0) [/srv/kondratyuk/Projects/wine/dlls/rpcrt4/ndr_clientserver.c:175] in rpcrt4 (0x7e195e54)
  4 0x7ea55982 NdrClientCall2+0x918(pStubDesc=0x10150bc8, pFormat=0x101508c6) [/srv/kondratyuk/Projects/wine/dlls/rpcrt4/ndr_stubless.c:766] in rpcrt4 (0x7e196504)
Comment 8 Самбилов Володя 2008-11-30 14:35:27 MSK
программа не запускается.
сборка:
libwine-1.0.9-alt0.M41.36
libwine-gl-1.0.9-alt0.M41.36
wine-etersoft-sql-1.0.9-alt14
wine-1.0.9-alt0.M41.36
Comment 9 Самбилов Володя 2008-11-30 15:15:32 MSK
в конце установки:
Register dump:
 CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b
 EIP:7b842cf2 ESP:7e0c7d00 EBP:7e0c7d64 EFLAGS:00000246(   - 00      - IZP1)
 EAX:7b82c8c5 EBX:7b8b3c1c ECX:00000000 EDX:00000000
 ESI:7e0c8208 EDI:00165e70
Stack dump:
0x7e0c7d00:  7e0c7d44 0081ecee 7e9bafa4 000006df
0x7e0c7d10:  000006ba 00000000 00000000 7b842c70
0x7e0c7d20:  00000000 00000002 7e9bafa4 7e0c8394
0x7e0c7d30:  000006ba 7e0c7d54 7e9aaa46 00110000
0x7e0c7d40:  00000000 00875ab0 7e9bafa4 7e0c8394
0x7e0c7d50:  00000000 7e0c7d84 7e9a01ad 00875ab0
Backtrace:
=>1 0x7b842cf2 RaiseException+0x82() in kernel32 (0x7e0c7d64)
  2 0x7e9aa705 RpcRaiseException+0x35() in rpcrt4 (0x7e0c7d84)
  3 0x7e97ce8a in rpcrt4 (+0xce8a) (0x7e0c7db4)
  4 0x7e9964b1 NdrClientCall2+0x361() in rpcrt4 (0x7e0c83d4)
  5 0x100fefd4 in msi439a.tmp (+0xfefd4) (0x00b66794)
  6 0x006c006c (0x00650063)
  7 0x6f004d02 (0x45535500)
  8 0x00000000 (0x00000000)

Backtrace:
=>1 0x7b842cf2 RaiseException+0x82() in kernel32 (0x7e0c7d64)
  2 0x7e9aa705 RpcRaiseException+0x35() in rpcrt4 (0x7e0c7d84)
  3 0x7e97ce8a in rpcrt4 (+0xce8a) (0x7e0c7db4)
  4 0x7e9964b1 NdrClientCall2+0x361() in rpcrt4 (0x7e0c83d4)
  5 0x100fefd4 in msi439a.tmp (+0xfefd4) (0x00b66794)
  6 0x006c006c (0x00650063)
  7 0x6f004d02 (0x45535500)
  8 0x00000000 (0x00000000)
err:rpc:RpcRaiseException handler continued execution

Comment 10 Vitaly Lipatov 2008-11-30 16:26:55 MSK
Backtrace: вставил два раза зачем-то.
И приведённая информация повторяет комментарий 7,
так что лучше было сразу написать, что падает с той же ошибкой, что и прежде, и всё.
Comment 11 Anton Rudnev 2008-11-30 18:18:29 MSK
Ошибка происходит не в том же самом потоке, что и поток установки. Но в потоке установки строго точно отрабатывается точка, которую показывает этот бэктрейс:

=>1 0x7ee206d9 ITERATE_InstallService+0x47b(rec=0x73ba70, param=0x15abf8) [/srv/mibori/Projects/wine/dlls/msi/action.c:4647] in msi (0x0033f7e8)
  2 0x7ee5d50a MSI_IterateRecords+0x98(view=0x7374e0, count=(nil), func=0x7ee2025e, param=0x15abf8) [/srv/mibori/Projects/wine/dlls/msi/msiquery.c:190] in msi (0x0033f818)
  3 0x7ee20785 ACTION_InstallServices+0x67(package=0x15abf8) [/srv/mibori/Projects/wine/dlls/msi/action.c:4669] in msi (0x0033f848)
  4 0x7ee24c11 ACTION_HandleStandardAction+0x161(package=0x15abf8, action=0x72a718, rc=0x33f8c0, force=1) [/srv/mibori/Projects/wine/dlls/msi/action.c:6457] in msi (0x0033f888)
  5 0x7ee172ee ACTION_PerformAction+0x91(package=0x15abf8, action=0x72a718, script=0, force=1) [/srv/mibori/Projects/wine/dlls/msi/action.c:1032] in msi (0x0033f8c8)
  6 0x7ee18e37 execute_script+0x17a(package=0x15abf8, script=0) [/srv/mibori/Projects/wine/dlls/msi/action.c:1671] in msi (0x0033f928)
  7 0x7ee1f73d ACTION_InstallExecute+0x19(package=0x15abf8) [/srv/mibori/Projects/wine/dlls/msi/action.c:4214] in msi (0x0033f938)
  8 0x7ee1f98c ACTION_InstallFinalize+0x3a(package=0x15abf8) [/srv/mibori/Projects/wine/dlls/msi/action.c:4295] in msi (0x0033f968)
  9 0x7ee24c11 ACTION_HandleStandardAction+0x161(package=0x15abf8, action=0x194ea8, rc=0x33f9e0, force=0) [/srv/mibori/Projects/wine/dlls/msi/action.c:6457] in msi (0x0033f9a8)
  10 0x7ee172ee ACTION_PerformAction+0x91(package=0x15abf8, action=0x194ea8, script=4294967295, force=0) [/srv/mibori/Projects/wine/dlls/msi/action.c:1032] in msi (0x0033f9e8)
  11 0x7ee16dec ITERATE_Actions+0x16a(row=0x16e920, param=0x33fa9c) [/srv/mibori/Projects/wine/dlls/msi/action.c:863] in msi (0x0033fa48)
  12 0x7ee5d50a MSI_IterateRecords+0x98(view=0x1023468, count=(nil), func=0x7ee16c82, param=0x33fa9c) [/srv/mibori/Projects/wine/dlls/msi/msiquery.c:190] in msi (0x0033fa78)
  13 0x7ee1711b ACTION_ProcessExecSequence+0x18c(package=0x15abf8, UIran=0) [/srv/mibori/Projects/wine/dlls/msi/action.c:961] in msi (0x0033fac8)
  14 0x7ee1feec ACTION_ExecuteAction+0x2e(package=0x15abf8) [/srv/mibori/Projects/wine/dlls/msi/action.c:4471] in msi (0x0033fae8)
  15 0x7ee24c11 ACTION_HandleStandardAction+0x161(package=0x15abf8, action=0x161e58, rc=0x33fb60, force=1) [/srv/mibori/Projects/wine/dlls/msi/action.c:6457] in msi (0x0033fb28)
  16 0x7ee17428 ACTION_PerformUIAction+0x99(package=0x15abf8, action=0x161e58, script=4294967295) [/srv/mibori/Projects/wine/dlls/msi/action.c:1053] in msi (0x0033fb68)
  17 0x7ee16dc3 ITERATE_Actions+0x141(row=0x1668a8, param=0x33fc1c) [/srv/mibori/Projects/wine/dlls/msi/action.c:861] in msi (0x0033fbc8)
  18 0x7ee5d50a MSI_IterateRecords+0x98(view=0x68a440, count=(nil), func=0x7ee16c82, param=0x33fc1c) [/srv/mibori/Projects/wine/dlls/msi/msiquery.c:190] in msi (0x0033fbf8)
  19 0x7ee171ec ACTION_ProcessUISequence+0xb4(package=0x15abf8) [/srv/mibori/Projects/wine/dlls/msi/action.c:991] in msi (0x0033fc38)
  20 0x7ee16916 MSI_InstallPackage+0x23e(package=0x15abf8, szPackagePath=0x12d306, szCommandLine=0x12d4d8) [/srv/mibori/Projects/wine/dlls/msi/action.c:747] in msi (0x0033fc78)
  21 0x7ee54ece MsiInstallProductW+0xb7(szPackagePath=0x12d306, szCommandLine=0x12d4d8) [/srv/mibori/Projects/wine/dlls/msi/msi.c:241] in msi (0x0033fcb8)
  22 0x7eecf03d WinMain+0x167b(hInstance=0x7eec0000, hPrevInstance=(nil), lpCmdLine="/I "C:\temp\FR90PE\ABBYY FineReader 9.0 Professional Edition.msi"  TRANSFORMS="C:\temp\FR90PE\1049.mst" /Liwrmo!vepacu "C:\windows\temp\ABBYY FineReader 9.0 Professional Edition.log"", nCmdShow=1) [/srv/mibori/Projects/wine/programs/msiexec/msiexec.c:935] in msiexec (0x0033fe38)
  23 0x7eecf912 main+0x10a() [/srv/mibori/Projects/wine/dlls/winecrt0/exe_main.c:48] in msiexec (0x0033feb8)
  24 0x7eecf7ee __wine_spec_exe_entry+0x6e(peb=0x7ffdf000) [/srv/mibori/Projects/wine/dlls/winecrt0/exe_entry.c:36] in msiexec (0x0033fef8)
  25 0x7b88068d start_process+0xe4(arg=(nil)) [/srv/mibori/Projects/wine/dlls/kernel32/process.c:912] in kernel32 (0x0033ffe8)
  26 0xb7e57cc7 wine_switch_to_stack+0x17() in libwine.so.1 (0x00000000)

после этого вызова вызывается исключение в потоке, который запускается в самом начале установки.

Исключение это вызывается искусственно следующим кодом:
status = I_RpcGetBuffer(stubmsg->RpcMsg);
if (status != RPC_S_OK)
  RpcRaiseException(status); // и выпадаем в бэктрейс

исследования в глубину приводят к тому, что ошибочный status возвращается потому, что в структуре RpcBinding поле BOOL server; ложно. Кто и почему ее ставит в ложное состояние (или не инициализирует), пока найти не удаётся.
Comment 12 Anton Rudnev 2008-12-03 14:21:15 MSK
> ошибочный status возвращается потому, что в
> структуре RpcBinding поле BOOL server; ложно.

оказалось, что это не совсем правильно.

Код формирующий неверный status оказался в rpc_transport.c в функции rpcrt4_conn_open_pipe(char *pname, BOOL wait) где pname = \\.\pipe\lrpc\ABBYY FineReader Professional 9.0 Licensing Service , wait = TRUE 

if (!wait || !WaitNamedPipeA(pname, NMPWAIT_WAIT_FOREVER)) {
 err = GetLastError();
 WARN("connection failed, error=%x\n", err);
 return RPC_S_SERVER_UNAVAILABLE;
}

ложным оказывается WaitNamedPipeA, по той причине, что именованный канал \\.\pipe\lrpc\ABBYY FineReader Professional 9.0 Licensing Service не создан.

RPC_S_SERVER_UNAVAILABLE соответствует значению status, из-за которого вызывается RpcRaiseException

Перед использованием WaitNamedPipeA, именованный канал должен быть создан через CreateNamedPipe, но этого вызова с именно таким именем вообще не происходит.

Где он должен происходить пока не понятно.
Логично было предположить, что он происходит в msi-потоке (поэтому исследую функции из бэктрейса msi-потока, приведеенного в предыдущем комментарии). Но другие (системные, не относящиеся к FineRider) именованные каналы (на которых rpcrt4_conn_open_pipe отрабатывается правильно), создаются не на стороне msi
Comment 13 Anton Rudnev 2008-12-03 16:23:44 MSK
> Код формирующий неверный status оказался в
> rpc_transport.c в функции rpcrt4_conn_open_pipe(char *pname, BOOL wait)
> где pname = \\.\pipe\lrpc\ABBYY FineReader Professional 9.0 Licensing
> Service , wait = TRUE 

Бэктрейс rpc-потока этой точки

=>1 0x7b845320 RaiseException+0x84(code=1722, flags=0, nbargs=0, args=(nil)) [/srv/mibori/Projects/wine/dlls/kernel32/except.c:84] in kernel32 (0x7df83b94)
  2 0x7e9113c5 RpcRaiseException+0x35(exception=1722) [/srv/mibori/Projects/wine/dlls/rpcrt4/rpcrt4_main.c:184] in rpcrt4 (0x7df83bc4)
  3 0x7e90d0ab rpcrt4_conn_open_pipe+0xca(Connection=0x695408, pname="\\.\pipe\lrpc\ABBYY FineReader Professional 9.0 Licensing Service", wait=1) [/srv/mibori/Projects/wine/dlls/rpcrt4/rpc_transport.c:186] in rpcrt4 (0x7df83c34)
  4 0x7e90d44f rpcrt4_ncalrpc_open+0x94(Connection=0x695408) [/srv/mibori/Projects/wine/dlls/rpcrt4/rpc_transport.c:259] in rpcrt4 (0x7df83c64)
  5 0x7e91084b RPCRT4_OpenClientConnection+0xa6(Connection=0x695408) [/srv/mibori/Projects/wine/dlls/rpcrt4/rpc_transport.c:1492] in rpcrt4 (0x7df83c94)
  6 0x7e8fd333 RpcAssoc_GetClientConnection+0xe2(assoc=0x72a4f0, InterfaceId=0x1015086c, TransferSyntax=0x10150880, AuthInfo=(nil), QOS=(nil), Connection=0x7df83d88) [/srv/mibori/Projects/wine/dlls/rpcrt4/rpc_assoc.c:402] in rpcrt4 (0x7df83ce4)
  7 0x7e8fec91 RPCRT4_OpenBinding+0xb2(Binding=0x124ec8, Connection=0x7df83d88, TransferSyntax=0x10150880, InterfaceId=0x1015086c) [/srv/mibori/Projects/wine/dlls/rpcrt4/rpc_binding.c:282] in rpcrt4 (0x7df83d34)
  8 0x7e908495 I_RpcNegotiateTransferSyntax+0x20a(pMsg=0x7df843ec) [/srv/mibori/Projects/wine/dlls/rpcrt4/rpc_message.c:1035] in rpcrt4 (0x7df83d94)
  9 0x7e908680 I_RpcGetBuffer+0x1a2(pMsg=0x7df843ec) [/srv/mibori/Projects/wine/dlls/rpcrt4/rpc_message.c:1097] in rpcrt4 (0x7df83de4)
  10 0x7e8de2e1 NdrGetBuffer+0x92(stubmsg=0x7df84260, buflen=176, handle=0x124ec8) [/srv/mibori/Projects/wine/dlls/rpcrt4/ndr_clientserver.c:171] in rpcrt4 (0x7df83e24)
  11 0x7e8f9fbf NdrClientCall2+0x972(pStubDesc=0x10150bc8, pFormat="") [/srv/mibori/Projects/wine/dlls/rpcrt4/ndr_stubless.c:770] in rpcrt4 (0x7df844e4)
  12 0x100fefd4 in msi3e73.tmp (+0xfefd4) (0x00c56794)
  13 0x006c006c (0x00650063)
  14 0x59005900 (0x42004200)
  15 0x00000000 (0x00000000)

падение с бэктрейсом через RpcRaiseException там работает не всегда.
падение там через запись по нулевому указателю там не работает, но дает интересный результат с точки зрения msi-потока:

mib ret I_RpcGetBuffer(33f620) -> 0
-- тут падение
err:ntdll:RtlpWaitForCriticalSection section 0x110698 "?" wait timed out in thread 001b, blocked by 0020, retrying (60 sec)
err:ntdll:RtlpWaitForCriticalSection section 0x110698 "?" wait timed out in thread 001b, blocked by 0020, retrying (60 sec)
err:msi:ITERATE_StartService Failed to open service L"ABBYY.Licensing.FineReader.Professional.9.0"
mib call I_RpcGetBuffer(33f640)
mib call I_RpcNegotiateTransferSyntax(33f640)
mib call RPCRT4_OpenBinding(...)
mib call RpcAssoc_GetClientConnection(...)
mib ret RPCRT4_OpenBinding(...) -> 0
mib ret I_RpcNegotiateTransferSyntax(33f640) -> 0 (ending)
mib I_RpcGetBuffer: !bind->server true
mib ret I_RpcGetBuffer(33f640) -> 0
err:ntdll:RtlpWaitForCriticalSection section 0x110698 "?" wait timed out in thread 001b, blocked by 0020, retrying (60 sec)

несмотря на незакрытую критическую секцию, после падения msi-потоке пытается запустится ITERATE_StartService. Можно, как вариант, упасть в этом вызове.
Comment 14 Anton Rudnev 2008-12-03 18:17:40 MSK
> несмотря на незакрытую критическую секцию,
> после падения msi-потоке пытается
> запустится ITERATE_StartService. Можно, как вариант,
> упасть в этом вызове.

падение msi-потока в ITERATE_StartService при падении rpc-потока при присваивании по нулевому указтелю

=>1 0x7ee20872 ITERATE_StartService+0x45(rec=0x73f328, param=0x1411e0) [/srv/mibori/Projects/wine/dlls/msi/action.c:4725] in msi (0x0033f7e8)
  2 0x7ee5d4a6 MSI_IterateRecords+0x98(view=0x831ce0, count=(nil), func=0x7ee2082d, param=0x1411e0) [/srv/mibori/Projects/wine/dlls/msi/msiquery.c:190] in msi (0x0033f818)
  3 0x7ee20b6c ACTION_StartServices+0x67(package=0x1411e0) [/srv/mibori/Projects/wine/dlls/msi/action.c:4787] in msi (0x0033f848)
  4 0x7ee24bae ACTION_HandleStandardAction+0x161(package=0x1411e0, action=0x17a538, rc=0x33f8c0, force=1) [/srv/mibori/Projects/wine/dlls/msi/action.c:6458] in msi (0x0033f888)
  5 0x7ee172ee ACTION_PerformAction+0x91(package=0x1411e0, action=0x17a538, script=0, force=1) [/srv/mibori/Projects/wine/dlls/msi/action.c:1032] in msi (0x0033f8c8)
  6 0x7ee18e37 execute_script+0x17a(package=0x1411e0, script=0) [/srv/mibori/Projects/wine/dlls/msi/action.c:1671] in msi (0x0033f928)
  7 0x7ee1f6da ACTION_InstallExecute+0x19(package=0x1411e0) [/srv/mibori/Projects/wine/dlls/msi/action.c:4214] in msi (0x0033f938)
  8 0x7ee1f929 ACTION_InstallFinalize+0x3a(package=0x1411e0) [/srv/mibori/Projects/wine/dlls/msi/action.c:4295] in msi (0x0033f968)
  9 0x7ee24bae ACTION_HandleStandardAction+0x161(package=0x1411e0, action=0x17cc50, rc=0x33f9e0, force=0) [/srv/mibori/Projects/wine/dlls/msi/action.c:6458] in msi (0x0033f9a8)
  10 0x7ee172ee ACTION_PerformAction+0x91(package=0x1411e0, action=0x17cc50, script=4294967295, force=0) [/srv/mibori/Projects/wine/dlls/msi/action.c:1032] in msi (0x0033f9e8)
  11 0x7ee16dec ITERATE_Actions+0x16a(row=0x698078, param=0x33fa9c) [/srv/mibori/Projects/wine/dlls/msi/action.c:863] in msi (0x0033fa48)
  12 0x7ee5d4a6 MSI_IterateRecords+0x98(view=0x14fe08, count=(nil), func=0x7ee16c82, param=0x33fa9c) [/srv/mibori/Projects/wine/dlls/msi/msiquery.c:190] in msi (0x0033fa78)
  13 0x7ee1711b ACTION_ProcessExecSequence+0x18c(package=0x1411e0, UIran=0) [/srv/mibori/Projects/wine/dlls/msi/action.c:961] in msi (0x0033fac8)
  14 0x7ee1fe89 ACTION_ExecuteAction+0x2e(package=0x1411e0) [/srv/mibori/Projects/wine/dlls/msi/action.c:4471] in msi (0x0033fae8)
  15 0x7ee24bae ACTION_HandleStandardAction+0x161(package=0x1411e0, action=0x148440, rc=0x33fb60, force=1) [/srv/mibori/Projects/wine/dlls/msi/action.c:6458] in msi (0x0033fb28)
  16 0x7ee17428 ACTION_PerformUIAction+0x99(package=0x1411e0, action=0x148440, script=4294967295) [/srv/mibori/Projects/wine/dlls/msi/action.c:1053] in msi (0x0033fb68)
  17 0x7ee16dc3 ITERATE_Actions+0x141(row=0x14ce90, param=0x33fc1c) [/srv/mibori/Projects/wine/dlls/msi/action.c:861] in msi (0x0033fbc8)
  18 0x7ee5d4a6 MSI_IterateRecords+0x98(view=0x68a440, count=(nil), func=0x7ee16c82, param=0x33fc1c) [/srv/mibori/Projects/wine/dlls/msi/msiquery.c:190] in msi (0x0033fbf8)
  19 0x7ee171ec ACTION_ProcessUISequence+0xb4(package=0x1411e0) [/srv/mibori/Projects/wine/dlls/msi/action.c:991] in msi (0x0033fc38)
  20 0x7ee16916 MSI_InstallPackage+0x23e(package=0x1411e0, szPackagePath=0x126d86, szCommandLine=0x12a500) [/srv/mibori/Projects/wine/dlls/msi/action.c:747] in msi (0x0033fc78)
  21 0x7ee54e6a MsiInstallProductW+0xb7(szPackagePath=0x126d86, szCommandLine=0x12a500) [/srv/mibori/Projects/wine/dlls/msi/msi.c:241] in msi (0x0033fcb8)
  22 0x7eecf03d WinMain+0x167b(hInstance=0x7eec0000, hPrevInstance=(nil), lpCmdLine="/I "C:\temp\FR90PE\ABBYY FineReader 9.0 Professional Edition.msi"  TRANSFORMS="C:\temp\FR90PE\1049.mst" /Liwrmo!vepacu "C:\windows\temp\ABBYY FineReader 9.0 Professional Edition.log"", nCmdShow=1) [/srv/mibori/Projects/wine/programs/msiexec/msiexec.c:935] in msiexec (0x0033fe38)
  23 0x7eecf912 main+0x10a() [/srv/mibori/Projects/wine/dlls/winecrt0/exe_main.c:48] in msiexec (0x0033feb8)
  24 0x7eecf7ee __wine_spec_exe_entry+0x6e(peb=0x7ffdf000) [/srv/mibori/Projects/wine/dlls/winecrt0/exe_entry.c:36] in msiexec (0x0033fef8)
  25 0x7b88068d start_process+0xe4(arg=(nil)) [/srv/mibori/Projects/wine/dlls/kernel32/process.c:912] in kernel32 (0x0033ffe8)
  26 0xb7e76cc7 wine_switch_to_stack+0x17() in libwine.so.1 (0x00000000) 

Это уже совершенно другое действие (вероятно идущее после установки сервиса)
Comment 15 Anton Rudnev 2008-12-04 21:52:20 MSK
раскопки msi-потока привели к однозначной причине того, почему не создается именованный канал, последующее обращение к которому приводит к исключению.

В функции ITERATE_InstallService имеется попытка создать сервис через CreateServiceW. CreateServiceW возвращает нуль вместо хэндла сервиса. В ней вызов svcctl_CreateServiceW падает, но закрыт try ... except и таким образом, в msi потоке ничего об ошибке не видно. Стоит только убрать try ... except  мы получаем следующий бэктрейс, где видна связь msi и rpc:

=>1 0x7b845320 RaiseException+0x84(code=1783, flags=0, nbargs=0, args=(nil)) [/srv/mibori/Projects/wine/dlls/kernel32/except.c:84] in kernel32 (0x0033f3f8)
  2 0x7e92547d RpcRaiseException+0x35(exception=1783) [/srv/mibori/Projects/wine/dlls/rpcrt4/rpcrt4_main.c:184] in rpcrt4 (0x0033f428)
  3 0x7e8f88c2 safe_buffer_increment+0x55(pStubMsg=0x33f550, size=4) [/srv/mibori/Projects/wine/dlls/rpcrt4/ndr_marshall.c:659] in rpcrt4 (0x0033f438)
  4 0x7e8f8990 NdrPointerUnmarshall+0xb8(pStubMsg=0x33f550, ppMemory=0x33f694, pFormat="\, fMustAlloc=0) [/srv/mibori/Projects/wine/dlls/rpcrt4/ndr_marshall.c:1506] in rpcrt4 (0x0033f478)
  5 0x7ec686cc svcctl_CreateServiceW+0x75b(hSCManager=0x73b348, lpServiceName=0x73b5d0, lpDisplayName=0x73b630, dwDesiredAccess=268435456, dwServiceType=16, dwStartType=2, dwErrorControl=0, lpBinaryPathName=0x1913b0, lpLoadOrderGroup=(nil), lpdwTagId=(nil), lpDependencies=0x0, dwDependenciesSize=0, lpServiceStartName=(nil), lpPassword=0x0, dwPasswordSize=0, phService=0x73b384) [/srv/mibori/Projects/wine/dlls/advapi32/svcctl_c.c:1259] in advapi32 (0x0033f668)
  6 0x7ec626a8 CreateServiceW+0x28a(hSCManager=0x73b298, lpServiceName=0x73b5d0, lpDisplayName=0x73b630, dwDesiredAccess=268435456, dwServiceType=16, dwStartType=2, dwErrorControl=0, lpBinaryPathName=0x1913b0, lpLoadOrderGroup=(nil), lpdwTagId=(nil), lpDependencies=(nil), lpServiceStartName=(nil), lpPassword=(nil)) [/srv/mibori/Projects/wine/dlls/advapi32/service.c:1184] in advapi32 (0x0033f6f8)
  7 0x7ee205da ITERATE_InstallService+0x3df(rec=0x73b060, param=0x15ac08) [/srv/mibori/Projects/wine/dlls/msi/action.c:4633] in msi (0x0033f7e8)
  8 0x7ee5d48a MSI_IterateRecords+0x98(view=0x737770, count=(nil), func=0x7ee201fb, param=0x15ac08) [/srv/mibori/Projects/wine/dlls/msi/msiquery.c:190] in msi (0x0033f818)
  9 0x7ee20704 ACTION_InstallServices+0x67(package=0x15ac08) [/srv/mibori/Projects/wine/dlls/msi/action.c:4662] in msi (0x0033f848)
  10 0x7ee24b90 ACTION_HandleStandardAction+0x161(package=0x15ac08, action=0x196db0, rc=0x33f8c0, force=1) [/srv/mibori/Projects/wine/dlls/msi/action.c:6451] in msi (0x0033f888)
  11 0x7ee172ee ACTION_PerformAction+0x91(package=0x15ac08, action=0x196db0, script=0, force=1) [/srv/mibori/Projects/wine/dlls/msi/action.c:1032] in msi (0x0033f8c8)
  12 0x7ee18e37 execute_script+0x17a(package=0x15ac08, script=0) [/srv/mibori/Projects/wine/dlls/msi/action.c:1671] in msi (0x0033f928)
  13 0x7ee1f6da ACTION_InstallExecute+0x19(package=0x15ac08) [/srv/mibori/Projects/wine/dlls/msi/action.c:4214] in msi (0x0033f938)
  14 0x7ee1f929 ACTION_InstallFinalize+0x3a(package=0x15ac08) [/srv/mibori/Projects/wine/dlls/msi/action.c:4295] in msi (0x0033f968)
  15 0x7ee24b90 ACTION_HandleStandardAction+0x161(package=0x15ac08, action=0x194f08, rc=0x33f9e0, force=0) [/srv/mibori/Projects/wine/dlls/msi/action.c:6451] in msi (0x0033f9a8)
  16 0x7ee172ee ACTION_PerformAction+0x91(package=0x15ac08, action=0x194f08, script=4294967295, force=0) [/srv/mibori/Projects/wine/dlls/msi/action.c:1032] in msi (0x0033f9e8)
  17 0x7ee16dec ITERATE_Actions+0x16a(row=0x681540, param=0x33fa9c) [/srv/mibori/Projects/wine/dlls/msi/action.c:863] in msi (0x0033fa48)
  18 0x7ee5d48a MSI_IterateRecords+0x98(view=0x177558, count=(nil), func=0x7ee16c82, param=0x33fa9c) [/srv/mibori/Projects/wine/dlls/msi/msiquery.c:190] in msi (0x0033fa78)
  19 0x7ee1711b ACTION_ProcessExecSequence+0x18c(package=0x15ac08, UIran=0) [/srv/mibori/Projects/wine/dlls/msi/action.c:961] in msi (0x0033fac8)
  20 0x7ee1fe89 ACTION_ExecuteAction+0x2e(package=0x15ac08) [/srv/mibori/Projects/wine/dlls/msi/action.c:4471] in msi (0x0033fae8)
  21 0x7ee24b90 ACTION_HandleStandardAction+0x161(package=0x15ac08, action=0x161e68, rc=0x33fb60, force=1) [/srv/mibori/Projects/wine/dlls/msi/action.c:6451] in msi (0x0033fb28)
  22 0x7ee17428 ACTION_PerformUIAction+0x99(package=0x15ac08, action=0x161e68, script=4294967295) [/srv/mibori/Projects/wine/dlls/msi/action.c:1053] in msi (0x0033fb68)
  23 0x7ee16dc3 ITERATE_Actions+0x141(row=0x1668b8, param=0x33fc1c) [/srv/mibori/Projects/wine/dlls/msi/action.c:861] in msi (0x0033fbc8)
  24 0x7ee5d48a MSI_IterateRecords+0x98(view=0x68a440, count=(nil), func=0x7ee16c82, param=0x33fc1c) [/srv/mibori/Projects/wine/dlls/msi/msiquery.c:190] in msi (0x0033fbf8)
  25 0x7ee171ec ACTION_ProcessUISequence+0xb4(package=0x15ac08) [/srv/mibori/Projects/wine/dlls/msi/action.c:991] in msi (0x0033fc38)
  26 0x7ee16916 MSI_InstallPackage+0x23e(package=0x15ac08, szPackagePath=0x12d316, szCommandLine=0x12d4e8) [/srv/mibori/Projects/wine/dlls/msi/action.c:747] in msi (0x0033fc78)
  27 0x7ee54e4e MsiInstallProductW+0xb7(szPackagePath=0x12d316, szCommandLine=0x12d4e8) [/srv/mibori/Projects/wine/dlls/msi/msi.c:241] in msi (0x0033fcb8)
  28 0x7eecf03d WinMain+0x167b(hInstance=0x7eec0000, hPrevInstance=(nil), lpCmdLine="/I "C:\temp\FR90PE\ABBYY FineReader 9.0 Professional Edition.msi"  TRANSFORMS="C:\temp\FR90PE\1049.mst" /Liwrmo!vepacu "C:\windows\temp\ABBYY FineReader 9.0 Professional Edition.log"", nCmdShow=1) [/srv/mibori/Projects/wine/programs/msiexec/msiexec.c:935] in msiexec (0x0033fe38)
  29 0x7eecf912 main+0x10a() [/srv/mibori/Projects/wine/dlls/winecrt0/exe_main.c:48] in msiexec (0x0033feb8)
  30 0x7eecf7ee __wine_spec_exe_entry+0x6e(peb=0x7ffdf000) [/srv/mibori/Projects/wine/dlls/winecrt0/exe_entry.c:36] in msiexec (0x0033fef8)
  31 0x7b88068d start_process+0xe4(arg=(nil)) [/srv/mibori/Projects/wine/dlls/kernel32/process.c:912] in kernel32 (0x0033ffe8)
  32 0xb7e51cc7 wine_switch_to_stack+0x17() in libwine.so.1 (0x00000000)

раскопки в глубину обнаруживают в функции scmdatabase_find_service_by_displayname исключение в момент выполнения strcmpiW при обходе списка сервисов db->services на втором элементе списка. Кажется этот список неправильно заполняется из таблиц msi несколькими уровнями выше (ниже по бэктрейсу). Это, вероятно, и есть истинная причина ошибки.
Comment 16 Anton Rudnev 2008-12-05 19:57:43 MSK
(In reply to comment #15)
> раскопки msi-потока привели к однозначной
> причине того, почему не создается
> именованный канал, последующее обращение к
> которому приводит к исключению.
> 
> В функции ITERATE_InstallService имеется попытка
> создать сервис через CreateServiceW. CreateServiceW
> возвращает нуль вместо хэндла сервиса. В
> ней вызов svcctl_CreateServiceW падает, но закрыт try ...
> except и таким образом, в msi потоке ничего об
> ошибке не видно. Стоит только убрать try ...
> except  мы получаем следующий бэктрейс, где
> видна связь msi и rpc:
  
> раскопки в глубину обнаруживают в функции
> scmdatabase_find_service_by_displayname исключение в момент
> выполнения strcmpiW при обходе списка сервисов
> db->services на втором элементе списка. Кажется
> этот список неправильно заполняется из
> таблиц msi несколькими уровнями выше (ниже
> по бэктрейсу). Это, вероятно, и есть
> истинная причина ошибки.
> 

оказывается, что этот список не из msi базы

также сервис не должен там находится на момент возникновения исключения (он позже туда добавляется). И если решить проблему исключения, то успещно.

Проблема выпадения strcmpiW решил. Добавив проверку на нуль.
Сервисы имеющие нуль в DisplayName это SNTNLUSB и eusk3usb (т. е. сваливалось на них).

Решение пока не удается протестировать т. к. CreateServiceW выдает каждый разный результат. Также после решения отказываются работать дебагмессаджи из wine/programs/services/services.c
Пока не разобрался почему. Есть подозрение, что во всем виноват запуск сервиса, который происходит после его добавления.
Comment 17 Vitaly Lipatov 2008-12-05 20:34:37 MSK
(In reply to comment #16)
> Проблема выпадения strcmpiW решил. Добавив
> проверку на нуль.
> Сервисы имеющие нуль в DisplayName это SNTNLUSB и
> eusk3usb (т. е. сваливалось на них).
С Сашей посоветовался о причинах и полном устранении проблемы?
Comment 18 Anton Rudnev 2008-12-08 14:57:38 MSK
(In reply to comment #17)
> (In reply to comment #16)
> > Проблема выпадения strcmpiW решил. Добавив
> > проверку на нуль.
> > Сервисы имеющие нуль в DisplayName это SNTNLUSB и
> > eusk3usb (т. е. сваливалось на них).
> С Сашей посоветовался о причинах и полном
> устранении проблемы?

да. Он говорит, что нуль там в пределах нормы.
Comment 19 Anton Rudnev 2008-12-08 16:59:55 MSK
делаю у себя локально.
результат такой же неоднозначный.

из того что выяснено:
0. запускаем установку, проходит копирование, начинается установка сервисов
1. сервис ABBYY.Licensing.FineReader.Professional.9.0 устанавливается успешно, о чем свидетельствует строчка mib ret CreateServiceW(A) -> 83cae8 (normal)
2. далее процесс установки падает с тем же бэктрейсом, возникает при отсутствии именованного канала. Значит установленный сервис не запускается
3. смотрю в реестр, вижу

[System\\CurrentControlSet\\Services\\ABBYY.Licensing.FineReader.Professional.9.0] 1228741502
"DisplayName"="ABBYY FineReader 9.0 Licensing Service"
"ErrorControl"=dword:00000000
"ImagePath"="C:\\Program Files\\ABBYY FineReader 9.0\\NetworkLicenseServer.exe"
"ObjectName"="LocalSystem"
"Start"=dword:00000002
"Type"=dword:00000010

файл NetworkLicenseServer.exe где нужно.

4. Запускаю setup.exe снова. Сразу вижу лог
[mibori@builder FR90PE]$ wwxp setup.exe
mibori call service_create(L"ABBYY.Licensing.FineReader.Professional.9.0", ...)
mibori ret service_create(L"ABBYY.Licensing.FineReader.Professional.9.0", ...) -> ERROR_SUCCESS
mibori call service_create(L"BITS", ...)
mibori ret service_create(L"BITS", ...) -> ERROR_SUCCESS
mibori call service_create(L"eusk3usb", ...)
mibori ret service_create(L"eusk3usb", ...) -> ERROR_SUCCESS
...

mib CreateNamedPipeW(L"\\\\.\\pipe\\svcctl", 0x000003, 0x000006, 255, 5840, 5840, 5000, (nil))
mibori thread d -> Create Thread 44 #0
mib CreateNamedPipeW(L"\\\\.\\pipe\\net\\NtControlPipe0", 0x000003, 00000000, 1, 256, 256, 10000, (nil))

на этом всё заканчивается

при этом возникает MessageBox-сообщение о неправильности командной строки.
Т. е. и в первом и во втором случае он пытается запустить сервис, но не может.

5. в третий раз запускаем установку.
Установка завершается опять же падением сервиса.
Но на этот раз создание сервиса завершается неудачей 
mib ret CreateServiceW(A) -> NULL (err != ERROR_SUCCESS)
т. к. он уже создан

6. понятно, что проблема в запуске сервиса.
попробую отследить с какими параметрами запускается NetworkLicenseServer.exe в винде


дебаглог третьего запуска от второго отличаются тем, что в нем нет трейс-строк из wine/programs/services/services.c
это очень мешает. пока не знаю как побороть
Comment 20 Александр Пликус 2008-12-09 08:41:17 MSK
можно оценить объем трудозатрат, который еще необходим?
Comment 21 Anton Rudnev 2008-12-09 14:46:06 MSK
(In reply to comment #20)
> можно оценить объем трудозатрат, который
> еще необходим?
> 

максимум два дня.
после чего думаю, стоит отложить багу и заняться более приоритетным.
Comment 22 Anton Rudnev 2008-12-09 20:45:16 MSK
сделал так, чтобы сервис запускался.
именованный канал по прежнему не создается.

завтра опишу, что сделал подробнее.
Comment 23 Anton Rudnev 2008-12-10 13:39:53 MSK
Created attachment 963 [details]
Зарегестированный сервис на винде

Что получается после CreateServiceW на винде.

Юникодное ImagePath это
"C:\Program Files\ABBYY FineReader 9.0\NetworkLicenseServer.exe" -service
Comment 24 Anton Rudnev 2008-12-10 13:51:01 MSK
приложение просматривается в браузере с кодировкой UTF-16 LE

См. wine-овский ветку реестра в комментарии http://bugs.etersoft.ru/show_bug.cgi?id=807#c19

Запуск процесса сервиса у нас происходит без параметра -service
Из-за того, что MSI не правильно регистрирует его в системе. А как следует -- неправильное значение ImagePath

патч сейчас будет.
Comment 25 Anton Rudnev 2008-12-10 15:32:41 MSK
http://lists.etersoft.ru/pipermail/wine-patches/2008-December/000138.html

описание этого аргумента и то, что он должен содержать аргумент, по ссылке http://msdn.microsoft.com/en-us/library/ms682450(VS.85).aspx
Comment 26 Anton Rudnev 2008-12-10 15:49:32 MSK
Функция CreateServiceW закрывает вызов svcctl_CreateServiceW через try...except
когда svcctl_CreateServiceW падает с сегфолтом, никак это заметить невозможно.
в результате сервис молча не создается.

try...except оставляем, а сообщение о падении добавляем.

патч: http://lists.etersoft.ru/pipermail/wine-patches/2008-December/000139.html

Comment 27 Anton Rudnev 2008-12-10 16:40:45 MSK
и, наконец, падение svcctl_CreateServiceW связяно с тем, что в функции scmdatabase_find_service_by_displayname нет проверки свойства DisplayName сервиса на нуль перед сравнением.

патч: http://lists.etersoft.ru/pipermail/wine-patches/2008-December/000140.html

в виндовском реестре и правда есть зарегистрированные сервисы с не указанным DisplayName
Comment 28 Anton Rudnev 2008-12-10 16:46:21 MSK
однако, несмотря на то, что сервис запускается, именованный канал не создается

разбираюсь почему.
Comment 29 Anton Rudnev 2008-12-10 18:33:16 MSK
вся последовательность вызовов, приводящая к созданию канала, начиная от msi, кончая, собственно созданием выглядит так (стрелочка -- вложенный вызов)

ITERATE_StartService -> StartServiceW -> TRY { svcctl_StartServiceW -> service_start -> CreateNamedPipeW }

то же самое должно происходить и в случае запуска сервиса не из msi

ищу на чем затыкается...
Comment 30 Anton Rudnev 2008-12-12 19:25:37 MSK
Итак, падение проявляется между standart-действиями InstallServices и StartServices из-за того, что именованный канал не создается.

Между этими действиями появляется custom-действие со странным именем [LICENSES=C:\\windows\\profiles\\All Users\\Application Data\\ABBYY\\FineReader\\9.00\\Licenses\\;SOURCEDIR=C:\... (не полное название), которое вызывает функцию InstallOnMachineAndRegistration в InstallTools.dll. которая, вызываясь, вызывает внутри NdrClientCall2 (и то, что мы видем в изначальном бэктрейсе), и искусственно падает из-за отсутствия открытого канала \\.\pipe\lrpc\ABBYY FineReader Professional 9.0 Licensing Service. В чем собственно и бага.

название сервиса, очевидно представляет из себя набор переменных окружения. Однако при установки на винде, запущенный процесс сервиса NetworkLicenseServer.exe не имеет с этим окружением ничего общего. Также, без процесса установки этот сервис запустить не удается.

Запуск действия InstallServices сопровождается успешным созданием канала \\\\.\\pipe\\svcctl . Пока я не знаю, для чего он создается. Но возможно он создается по ошибке, и вместо него должен создаваться \\.\pipe\lrpc\ABBYY FineReader Professional 9.0 Licensing Servicе. Канал \\\\.\\pipe\\svcctl создается несколько по другой схеме, чем при выполнении StartServiceW.

Запуск сервиса в действии InstallServices пока не удается -- сервис падает.
Comment 31 Anton Rudnev 2008-12-14 18:35:58 MSK
В сервисе InstallServices удалось, кроме того, что создавать сервис, еще его корректно запускать (при этом канал создается).

После успешного исполнения действия InstallServices, действие [LICENSES=C:\\windows\\profiles\\All Users\\Application
Data\\ABBYY\\FineReader\\9.00\\Licenses\\;SOURCEDIR=C:\... еще раз отдельно создает канал (что странно), за тем падает. Причина падения пока не ясна и отличается от причины падения возникающей при отсутствии канала.

Пока я это падение не буду рассматривать.

Есть два решения на чуть более высоком уровне, которые, возможно, могут помочь:

1) исключить действие [LICENSES=C:\\windows\\profiles\\All Users\\Application
Data\\ABBYY\\FineReader\\9.00\\Licenses\\;SOURCEDIR=C:\... из процесса установки полностью

2) поменять последовательность действий местами:
сейчас:
-> InstallServices -> [LICENSES... -> StartServices ->
поменять на:
-> InstallServices -> StartServices -> [LICENSES... ->

так, чтобы действие [LICENSES... стартовало, когда StartServices отработало 
Comment 32 Anton Rudnev 2008-12-15 15:46:48 MSK
> 1) исключить действие [LICENSES=C:\\windows\\profiles\\All
> Users\\Application
> Data\\ABBYY\\FineReader\\9.00\\Licenses\\;SOURCEDIR=C:\... из
> процесса установки полностью

если это сделать, то установка проходит успешно.

далее FineReader.exe не запускается
вылетая с тем же бэктрейсом, что и когда я делал запуск сервиса в действии его установки (см. предыдущий комментарий).

теперь попробую поменять местами действия...

Comment 33 Anton Rudnev 2008-12-15 21:23:09 MSK
> 2) поменять последовательность действий
> местами:
> сейчас:
> -> InstallServices -> [LICENSES... -> StartServices ->
> поменять на:
> -> InstallServices -> StartServices -> [LICENSES... ->
> 
> так, чтобы действие [LICENSES... стартовало,
> когда StartServices отработало

это сделать не получается.

во-первых потому, что действия [LICENSES... нет существует

во-вторых каждое действие, которое выполняется последовательно в цикле, имеет численное значение, которое указывает что за чем будет выполнятся (запрос идет с ORDER BY ...)

в третьих эти два действия выполняются на разных уровнях вложенности (не водном цикле).

Обнаружил, что [LICENSES... -- это поддействие действия IT_InstallOnMachine, в котором выполняется скрипт, а строка "[LICENSES..." интерпретируется как имя действия, возможно, неправильно. На это указывает 12-ая строчка бэктрейса в комментарии http://bugs.etersoft.ru/show_bug.cgi?id=807#c15 и непосредственное падение в действии "[LICENSES".

Нужно посмотреть, что на самом деле должна выполнять функция execute_script, вместо того, чтобы вызывать действие с именем элемента из скрипта.
Comment 34 Anton Rudnev 2008-12-16 16:34:13 MSK
для связи с 3098, как сейчас воспроизводится бага:

<wine@cellar bottle fr/eterbug-807>$ wwxp setup.exe
fixme:msi:msi_unimplemented_action_stub MigrateFeatureStates -> 1 ignored L"Upgrade" table values
err:msi:msi_dialog_create_controls no handler for element type L"Billboard"
fixme:msi:ACTION_HandleStandardAction unhandled standard action L"SetODBCFolders"
fixme:msi:msi_unimplemented_action_stub MigrateFeatureStates -> 1 ignored L"Upgrade" table values
fixme:msi:msi_unimplemented_action_stub RemoveExistingProducts -> 1 ignored L"Upgrade" table values
fixme:ntdll:NtLockFile I/O completion on lock not implemented yet
fixme:msi:ACTION_CustomAction Rollback only action... rollbacks not supported yet
fixme:msi:ACTION_CustomAction Rollback only action... rollbacks not supported yet
fixme:msi:ACTION_CustomAction Rollback only action... rollbacks not supported yet
fixme:msi:ACTION_CustomAction Rollback only action... rollbacks not supported yet
fixme:msi:ACTION_CustomAction Rollback only action... rollbacks not supported yet
fixme:msi:ACTION_CustomAction Rollback only action... rollbacks not supported yet
fixme:msi:ACTION_CustomAction Rollback only action... rollbacks not supported yet
fixme:msi:msi_unimplemented_action_stub DeleteServices -> 1 ignored L"ServiceControl" table values
fixme:msi:msi_unimplemented_action_stub RemoveShortcuts -> 16 ignored L"Shortcut" table values
fixme:msi:msi_unimplemented_action_stub RemoveFolders -> 8 ignored L"CreateFolder" table values
fixme:msi:ITERATE_CreateShortcuts poorly handled shortcut format, advertised shortcut
fixme:msi:ITERATE_CreateShortcuts poorly handled shortcut format, advertised shortcut
fixme:msi:ITERATE_CreateShortcuts poorly handled shortcut format, advertised shortcut
fixme:msi:ITERATE_CreateShortcuts poorly handled shortcut format, advertised shortcut
fixme:msi:ITERATE_CreateShortcuts poorly handled shortcut format, advertised shortcut
fixme:msi:ITERATE_CreateShortcuts poorly handled shortcut format, advertised shortcut
fixme:msi:ITERATE_CreateShortcuts poorly handled shortcut format, advertised shortcut
fixme:msi:ITERATE_CreateShortcuts poorly handled shortcut format, advertised shortcut
fixme:msi:ITERATE_InstallService Dependency list unhandled!
wine: Unhandled exception 0x000006ba at address 0x7b84545c (thread 0045), starting debugger...
err:rpc:RpcRaiseException handler continued execution
<wine@cellar bottle fr/eterbug-807>$ err:menubuilder:InvokeShellLinker failed to build the menu
err:menubuilder:InvokeShellLinker failed to build the menu
err:menubuilder:InvokeShellLinker failed to build the menu
err:menubuilder:InvokeShellLinker failed to build the menu
err:menubuilder:InvokeShellLinker failed to build the menu
err:menubuilder:InvokeShellLinker failed to build the menu
err:menubuilder:InvokeShellLinker failed to build the menu
err:menubuilder:InvokeShellLinker failed to build the menu
err:menubuilder:InvokeShellLinker failed to build the menu
Comment 35 Anton Rudnev 2008-12-16 17:22:50 MSK
Created attachment 971 [details]
Дерево действий установки

(для сравнения с деревом http://bugs.etersoft.ru/show_bug.cgi?id=3098#c3)
Comment 36 Anton Rudnev 2009-01-12 14:10:06 MSK
с решением для 3098 установка при "установки служб" всё равно падает с ошибкой:

...
fixme:msi:ITERATE_InstallService Dependency list unhandled!
call CreateServiceW(...)
ret CreateServiceW(...) -> 713370
wine: Unhandled exception 0x000006ba at address 0x7b8454a4 (thread 0044), starting debugger...
err:rpc:RpcRaiseException handler continued execution

P.S.: если установка зависает на начальном этапе, не отрисовываясь, нужно приложиь патч из 2234.
Comment 37 Anton Rudnev 2009-01-12 19:57:56 MSK
ничего конкретного пока сказать не могу -- пока в процессе анализа.

оказалось, что проблема с действием [a=b;c=d;...] существует, как в этой баге так и в 3098. Просто в 3098 это не так важно (и не приводит на данный момент к падению).

если внимательно присмотреться к содержимому msi-таблиц, то формы [a=b;c=d;...] не существует
вместо нее есть a=[b];c=[d];...

в конкретном случае из LICENSES=[LICENSES];SOURCEDIR=[SOURCEDIR]... в таблице CustomAction получается такая фигня:

L"[LICENSES=C:\\windows\\profiles\\All Users\\Application Data\\ABBYY\\FineReader\\9.00\\Licenses\\;SOURCEDIR=C:\\FR90PE\\;MAIN_SUBFOLDER=ABBYY FineReader 9.0;LIC_SERVER_NAME=;INSTALLDIR=C:\\Program Files\\ABBYY FineReader 9.0\\;ProductLanguage=1033;LIC_CONFIGXML=<Rollback file=\"C:\\windows\\temp\\ABB"...

которая в конечном итоге передается в ACTION_CustomAction, где и обрабатывается не правильно. Пока не понятно, либо это действие передается в ACTION_CustomAction по ошибке на более высоком уровне, либо логика ACTION_CustomAction неправильно ее обрабатывает. Анализ кода ACTION_CustomAction, склоняет мысли к первому варианту...
Comment 38 Anton Rudnev 2009-01-13 19:34:38 MSK
в процессе исследования: нужно распознать где строчка 

L"[LICENSES=C:\\windows\\profiles\\All Users\\Application Data\\ABBYY\\FineReader\\9.00\\Licenses\\;SOURCEDIR=C:\\FR90PE\\;MAIN_SUBFOLDER=ABBYY FineReader 9.0;LIC_SERVER_NAME=;INSTALLDIR=C:\\Program Files\\ABBYY FineReader 9.0\\;ProductLanguage=1033;LIC_CONFIGXML=<Rollback file=\"C:\\windows\\temp\\ABB"...

засовывается в список в качестве действия.


список этот хранится в package->script->Actions[0][i] где i = 0 .. package->script->ActionCount[0]

От ACTION_PerformAction падением узнал бэктрейс функций, одна из которых это делает:

0 ACTION_PerformAction
1 execute_script 
2 ACTION_InstallExecute
3 ACTION_InstallFinalize
4 ACTION_HandleStandardAction
5 ACTION_PerformAction
6 ITERATE_Actions
7 MSI_IterateRecords      <------
8 ACTION_ProcessExecSequence
9 ACTION_ExecuteAction
10 ACTION_HandleStandardAction
11 ACTION_PerformUIAction
12 ITERATE_Actions
13 MSI_IterateRecords
14 ACTION_ProcessUISequence
15 MSI_InstallPackage
16 MsiInstallProductW

проанализировал код функций и протрейсил вплоть до 8-ого вызова, от точки падения. На данный момент думаю, что список меняется на седьмом вызове (вызове MSI_IterateRecords).
Я пока не знаю как это происходит (из каких таблиц и каким способом).

Сложность отладки заключается в косвенной рекурсии некоторых функций (ACTION_PerformAction, ACTION_HandleStandartAction, ITERATE_Actions, MSI_IterateRecords), т. к. при выводе дебаг-сообщений в консоль участвуют не только нижележащие вызовы (которые надо анализировать), но и вышележащие, что при выводе значений списков строк, сильно загромождает лог.
Comment 39 Anton Rudnev 2009-01-14 19:13:27 MSK
---------- 1 ------------
Итак с точки зрения MSI, в конце установки происходит стандартное действие InstallFinalize
Смысл этого действия сводится к тому, чтобы выполнить некоторый список других действий, который назовём "скриптом"
Список на момент выполнения InstallFinalize находится package->script->Actions[0][i], i = 0..package->script->ActionCount[0]
package это текущий MSIPACKAGE

Вот его содержимое (без двух зведочек впереди):
                 ** L"AllocateRegistrySpace"
                 ** L"ProcessComponents"
                 ** L"UnpublishComponents"
                 ** L"MsiUnpublishAssemblies"
                 ** L"UnpublishFeatures"
                 ** L"StopServices"
                 ** L"DeleteServices"
                 ** L"UnregisterComPlus"
                 ** L"SelfUnregModules"
                 ** L"UnregisterTypeLibraries"
                 ** L"RemoveODBC"
                 ** L"UnregisterFonts"
                 ** L"RemoveRegistryValues"
                 ** L"UnregisterClassInfo"
                 ** L"UnregisterExtensionInfo"
                 ** L"UnregisterProgIdInfo"
                 ** L"UnregisterMIMEInfo"
                 ** L"RemoveIniValues"
                 ** L"RemoveShortcuts"
                 ** L"RemoveEnvironmentStrings"
                 ** L"RemoveDuplicateFiles"
                 ** L"RemoveFiles"
                 ** L"RemoveFolders"
                 ** L"CreateFolders"
                 ** L"MoveFiles"
                 ** L"InstallFiles"
                 ** L"PatchFiles"
                 ** L"DuplicateFiles"
                 ** L"BindImage"
                 ** L"CreateShortcuts"
                 ** L"RegisterClassInfo"
                 ** L"RegisterExtensionInfo"
                 ** L"RegisterProgIdInfo"
                 ** L"RegisterMIMEInfo"
                 ** L"WriteIniValues"
                 ** L"WriteEnvironmentStrings"
                 ** L"RegisterFonts"
                 ** L"InstallODBC"
                 ** L"RegisterTypeLibraries"
                 ** L"RegisterComPlus"
                 ** L"InstallServices"
                 ** L"[LICENSES=C:\\windows\\profiles\\All Users\\Application Data\\ABBYY\\FineReader\\9.00\\Licenses\\;SOURCEDIR=C:\\FR90PE\\;MAIN_SUBFOLDER=ABBYY FineReader 9.0;LIC_SERVER_NAME=;INSTALLDIR=C:\\Program Files\\ABBYY FineReader 9.0\\;ProductLanguage=1033;LIC_CONFIGXML=<Rollback file=\"C:\\windows\\temp\\ABB"...
                 ** L"StartServices"
                 ** L"SelfRegModules"
                 ** L"WriteRegistryValues"
                 ** L"Launch_TrigrammsInstallerExe"L"[LICENSES=C:...
                 ** L"Launch_Registrator_InstallFR"
                 ** L"Launch_Registrator_Excel"
                 ** L"Launch_Registrator_Explorer"
                 ** L"Launch_Registrator_Outlook"
                 ** L"Launch_Registrator_Word"
                 ** L"RegisterUser"
                 ** L"RegisterProduct"
                 ** L"PublishComponents"
                 ** L"MsiPublishAssemblies"
                 ** L"PublishFeatures"
                 ** L"PublishProduct"

действия из списка выполняются последовательно, один за другим:L"[LICENSES=C:...
после L"InstallServices", выполняется L"[LICENSES=C:..., которое и приводит к краху.
смысл этого действия на самом деле заключается в том, чтобы занести значения некоторых свойств в MSI таблицу.
Делается это в функции ACTION_CustomAction функцией set_deferred_action_props.
Но в реальности ошибка в том, что после того как значения свойств проинициализированы, ошибочно выполняется некоторый вызов из dll, который по сути не должен происходить.
Патч, который я делаю будет решать именно эту проблему.


-------------- 2 -------------
Также существует другая мысль по поводу ошибки.
Связана она с тем, почему среди действий с обычными именами, появляется действие с таким необычным именем.

Так вот в процессе установки, прежде,
чем будет выполнен прогон по этому списку с последовательным выполнением каждого из перечисленных действий,
этот список должен быть сформирован.

Формируется он не в одной функции, а последовательно: опять же чуть ранее InstallFinalize выполняется последовательность
 разных действий, и каждое из них добавляет в вышеупомянутый список новое имя действия (чтобы потом в InstallFinalize выполнить их все последовательно).
Действие, которое запускается раньше InstallFinalize, и которое заносит в список действие L"[LICENSES... зовут IT_InstallOnMachine.
Добавляет оно туда строчку L"[LICENSES... опять же в функции ACTION_CustomAction, через функцию schedule_action в участке кода:
else
{
  TRACE("Deferring Action!\n");
  MESSAGE("\tTRACE Deferring Action!\n");
  schedule_action(package, INSTALL_SCRIPT, deferred);
}
//в deferred как раз и формируется строчка L"[LICENSES=C:...

мысль состоит в том, что это может быть неправильно.



--------- debug ---------------
если придется  отлаживать и ту и другую ситуацию в будущем, то вот такие советы:
Во-первых: ключевая функция у нас будет ACTION_CustomAction.
Во-вторых:
 1) там где список выполняется, действие будет action = L"[LICENSES... , чтобы обнаружить это действие первым символом должен включать action[0] == '['
 2) там где строчка L"[LICENSES... только заносится в список, нам нужно обнаруживать выполнение действия IT_InstallOnMachine
соответсвенно делаем:
static const WCHAR szIT_InstallOnMachine[] = {'I','T','_','I','n','s','t','a','l','l','O','n','M','a','c','h','i','n','e',0};
if(strcmpW(action, szIT_InstallOnMachine) == 0)
        MESSAGE("...
так мы можем отследить действие по занесению нового действия

В треьих: если бэктрейс не выводится, то просто нужно перезапустить инсталляцию, без восстановления бутылки.
В четвёртых: вот что происходит, чтобы понимать общую картинку:

...
{выполняются разные действия}
{каждое из них кидает в список script имя отложенного действия}
{среди них есть IT_InstallOnMachine, которое добавляет L"[LICENSES=C:... в список script}
...
{начинает выполнятся действие InstallFinalize, она выполняет последовательно действия из списка script}
    {из списка выполняется L"AllocateRegistrySpace"}
    {из списка выполняется L"ProcessComponents"}
    ... и т. д. по сформированному ранее списку
    {из списка выполняется L"InstallServices"}
    {из списка выполняется L"[LICENSES=...}
        ошибка!!!!!!


--------- 3 ---------------
возможно проблема никак не связяна с msi вообще
а находится в dll-функции, которая должна всё-таки вызываться, когда выполняется L"[LICENSES=... В пользу этого говорит то, что FineReader не запускается.
Comment 40 Anton Rudnev 2009-01-14 19:34:56 MSK
http://lists.etersoft.ru/pipermail/wine-patches/2009-January/000195.html

после применения патча, установка завершается успешно.
Comment 41 Александр Морозов 2009-11-16 14:05:46 MSK
Патч, исправляющий данный баг, приводит к появлению проблем с MS Office XP (баг #2658).
Comment 42 Виталий Перов 2010-10-25 13:58:01 MSD
Откатил патч:

commit d0735ff01db8ee86b9cf08be4ba750e33f903c73
Author: Anton Rudnev <mibori@builder.office.etersoft.ru>
Date:   Wed Dec 10 15:07:14 2008 +0300

    msi: eterbug-807, fix CreateServiceW(...,LPCWSTR lpBinaryPathName , ...) invalid service argumen

В версии winehq появились похожие изменения. Надо бы проверить нужен ли ещё этот патч.
Comment 43 Svetlana Zhukova 2011-09-05 15:46:56 MSK
wine@eterhack bottle bugs/7475
WINE@Etersoft version 1.3.27-eter1.7
Установка происходит нормально.
Comment 44 Svetlana Zhukova 2011-09-05 15:48:09 MSK
Abby FineReader 9.0
Comment 45 Александр Морозов 2011-12-20 21:56:19 MSK
Откатил патч "msi: fix deferred execution custom actions behaviour in ACTION_CustomAction(...). Eterbug 807.", т.к. он вызывает проблемы с установкой Гаранта: http://bugs.etersoft.ru/show_bug.cgi?id=7625#c9
Comment 46 Svetlana Zhukova 2011-12-21 09:50:54 MSK
Раз уж бага на мне,то:
Подтверждаю, Fine Reader 9.0 падает 
1.3.35/2.0.0-eter1.2/2
eterhack bottle bugs/807
Comment 47 Vitaly Lipatov 2013-07-29 10:33:00 MSK
Давайте ещё раз проверим, на 2.1
Comment 49 Олег Шевченко 2024-03-20 23:42:08 MSK
Задача неактуальна, как и не актуален релиз 2.1