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

Отработанное время:
Продуктивное время:
Bug 14163 - Ошибочный код возврата при вызове msinfo32.exe   Make a simular bug
Summary: Ошибочный код возврата при вызове msinfo32.exe
Status: CLOSED FIXED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: OLE / DDE / RPC (show other bugs)
Version: unspecified
Hardware: PC Linux
: P4 minor
Target Milestone: ---
Assignee: Dmitry Timoshkov
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 1036 14171
  Show dependency treegraph
 
In work:
Reported: 2019-10-05 15:13 MSK by Vitaly Lipatov
Modified: 2020-04-12 19:29 MSK (History)
0 users

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


Attachments
скрипт вызова msinfo32.exe (209 bytes, application/x-wine-extension-vbs)
2019-10-05 15:13 MSK, Vitaly Lipatov
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Vitaly Lipatov 2019-10-05 15:13:07 MSK
Created attachment 3930 [details]
скрипт вызова msinfo32.exe

При запуске скрипта в Windows появляется окно msinfo32, после закрытия которого появляется MsgBox с сообщением, что код возврата 0.

При запуске в wine 4.17 появляется окно msinfo32, одновременно с которым появляется окно MsgBox с сообщением, что код возврата 259.


$ wine start msinfo1251.vbs 
000b:fixme:winediag:start_process Wine Staging 4.17 is a testing version containing experimental patches.
000b:fixme:winediag:start_process Please mention your exact version when filing bug reports on winehq.org.
0009:fixme:exec:SHELL_execute flags ignored: 0x00000100
[lav@lav test]$ 002b:fixme:vbscript:VBScript_SetScriptState unimplemented SCRIPTSTATE_INITIALIZED
002b:fixme:exec:SHELL_execute flags ignored: 0x00000100
002d:fixme:msinfo:wmain stub: L"MSINFO32.EXE"
Comment 1 Dmitry Timoshkov 2019-10-07 06:28:28 MSK
Источник проблемы в dlls/vbscript. После выполнения 'winetricks -q wsh57'
поведение меняется на описанное в первом комментарии как это происходит
в Windows.
Comment 2 Dmitry Timoshkov 2019-10-07 08:13:12 MSK
(In reply to Dmitry Timoshkov from comment #1)
> Источник проблемы в dlls/vbscript. После выполнения 'winetricks -q wsh57'
> поведение меняется на описанное в первом комментарии как это происходит
> в Windows.

Исследование проблемы показало, что ее источник в другом месте. Анализ
текста скрипта показал, что для выполнения msinfo32.exe используется метод
WscriptShell.Run(), и поиск в исходниках Wine привел меня в dlls/wshom.ocx.
Метод Run() реализован в dlls/wshom.ocx/shell.c вызовом ShellExecute(),
однако в случае с получением аргумента 'wait' ожидания завершения процесса
не происходит, а сразу получается его код завершения. Добавление ожидания
завершения процесса с помощью WaitForSingleObject(info.hProcess, INFINITE)
решило проблему с получением правильного кода возврата скриптом.

Отправил патч с исправлением для принятия в winehq.
Comment 3 Dmitry Timoshkov 2019-10-08 04:28:47 MSK
(In reply to Dmitry Timoshkov from comment #2)
> Исследование проблемы показало, что ее источник в другом месте. Анализ
> текста скрипта показал, что для выполнения msinfo32.exe используется метод
> WscriptShell.Run(), и поиск в исходниках Wine привел меня в dlls/wshom.ocx.
> Метод Run() реализован в dlls/wshom.ocx/shell.c вызовом ShellExecute(),
> однако в случае с получением аргумента 'wait' ожидания завершения процесса
> не происходит, а сразу получается его код завершения. Добавление ожидания
> завершения процесса с помощью WaitForSingleObject(info.hProcess, INFINITE)
> решило проблему с получением правильного кода возврата скриптом.
> 
> Отправил патч с исправлением для принятия в winehq.

Патч принят. Отмечаю эту задачу как решенную.
Comment 4 Vitaly Lipatov 2020-04-12 19:29:28 MSK
Принято.