Bug 1604

Summary: верси 1.0.9 при выполнениий wine --update вываливается в дебаг
Product: WINE@Etersoft Reporter: Alexeev Alexey <alexeev>
Component: ОбщееAssignee: Виталий Перов <vitperov>
Status: CLOSED FIXED QA Contact:
Severity: normal    
Priority: P5 CC: kondratyuk, lav, sergling, vitperov
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 1537, 1659, 2357, 4604    

Description Alexeev Alexey 2008-04-05 19:46:28 MSD
верси 1.0.9 при выполнениий wine --update вываливается в дебаг

guest@multi:~ > wine --update
Updating... Using WINEPREFIX=/home/guest/.wine
Creating default file tree...
Copying prepared tree from '/usr/bin/../share/wine/skel' ...
WINE@Etersoft 1.0 Network (1.0.9), registration number is EEEE-C0DE.
Legality check is available on the page http://sales.etersoft.ru/product/.

Initialize registry and environments...
err:service:RPC_MainLoop RpcServerUseProtseq failed with error 1703
err:wineboot:start_services_process Unexpected termination of services.exe - exit code 1703
err:mshtml:register_server typelib registration failed: 80029c4a
fixme:ntdll:server_ioctl_file Unsupported ioctl 110018 (device=11 access=0 func=6 method=0)
wine: Unhandled exception 0x000006ba at address 0x7edfca90 (thread 0009), starting debugger...
Unhandled exception: 0x000006ba in 32-bit code (0x7edfcb12).
Register dump:
 CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b
 EIP:7edfcb12 ESP:0032d5a4 EBP:0032d608 EFLAGS:00200246(   - 00      - IZP1)
 EAX:7ede6cd9 EBX:7ee6aff4 ECX:00000000 EDX:00000000
 ESI:0032d654 EDI:0032d654
Stack dump:
0x0032d5a4:  7011aba5 00184040 00183edc 00183f28
0x0032d5b4:  000006ba 00000000 00000000 7edfca90
0x0032d5c4:  00000000 000006ba 00183f54 0032d60c
0x0032d5d4:  70117c79 00183f54 0032d610 00000000
0x0032d5e4:  00183edc 7ea65ff4 701177dc 0032d60c
0x0032d5f4:  7ea65e40 0032d654 0032d730 7ea65ff4
Backtrace:
=>1 0x7edfcb12 RaiseException+0x82() in kernel32 (0x0032d608)
err:dbghelp:pe_load_dbg_file -Unable to peruse .DBG file "rpcrt4.dbg" ("")
  2 0x7010a6d7 in rpcrt4 (+0xa6d7) (0x0032d768)
  3 0x7ea57a81 OpenSCManagerW+0x61() in advapi32 (0x0032d7a8)
  4 0x7e13d3b0 in qmgr (+0xd3b0) (0x0032d828)
  5 0x7e65222c in setupapi (+0x2222c) (0x0032f908)
  6 0x7e651565 in setupapi (+0x21565) (0x0032fb18)
  7 0x7e65171e SetupInstallFromInfSectionW+0x8e() in setupapi (0x0032fb58)
  8 0x7e653ddd InstallHinfSectionW+0x28d() in setupapi (0x0032fdd8)
  9 0x7ec5fce4 main+0x414() in rundll32 (0x0032fed8)
  10 0x7ec6044b in rundll32 (+0x1044b) (0x0032ff08)
  11 0x7ee2da67 in kernel32 (+0x5da67) (0x0032ffe8)
  12 0xb7eacc87 (0x00000000)
0x7edfcb12 RaiseException+0x82 in kernel32: movl        0xfffffffc(%ebp),%ebx
Modules:
Module  Address                 Debug info      Name (86 modules)
PE      10000000-10007000       Deferred        rpcltc1
PE      65340000-653d2000       Deferred        oleaut32
PE      65f00000-65fc2000       Deferred        ole32
PE      70100000-70153000       Export          rpcrt4
ELF     7bf00000-7bf04000       Deferred        <wine-loader>
ELF     7df6f000-7dfae000       Deferred        urlmon<elf>
  \-PE  7df80000-7dfae000       \               urlmon
ELF     7dfae000-7e0b8000       Deferred        shell32<elf>
  \-PE  7dfc0000-7e0b8000       \               shell32
ELF     7e0b8000-7e0da000       Deferred        mpr<elf>
  \-PE  7e0c0000-7e0da000       \               mpr
ELF     7e0da000-7e128000       Deferred        wininet<elf>
  \-PE  7e0e0000-7e128000       \               wininet
ELF     7e128000-7e144000       Export          qmgr<elf>
  \-PE  7e130000-7e144000       \               qmgr
ELF     7e144000-7e177000       Deferred        uxtheme<elf>
  \-PE  7e150000-7e177000       \               uxtheme
ELF     7e177000-7e1d0000       Deferred        shlwapi<elf>
  \-PE  7e180000-7e1d0000       \               shlwapi
ELF     7e1d0000-7e28f000       Deferred        comctl32<elf>
  \-PE  7e1e0000-7e28f000       \               comctl32
ELF     7e28f000-7e2b7000       Deferred        msvfw32<elf>
  \-PE  7e2a0000-7e2b7000       \               msvfw32
ELF     7e2b7000-7e2cc000       Deferred        midimap<elf>
  \-PE  7e2c0000-7e2cc000       \               midimap
ELF     7e2cc000-7e2e4000       Deferred        msacm32<elf>
  \-PE  7e2d0000-7e2e4000       \               msacm32
ELF     7e319000-7e3d5000       Deferred        libasound.so.2
ELF     7e3e9000-7e41f000       Deferred        winealsa<elf>
  \-PE  7e3f0000-7e41f000       \               winealsa
ELF     7e438000-7e482000       Deferred        dsound<elf>
  \-PE  7e440000-7e482000       \               dsound
ELF     7e482000-7e4e7000       Deferred        quartz<elf>
  \-PE  7e490000-7e4e7000       \               quartz
ELF     7e4e7000-7e506000       Deferred        advpack<elf>
  \-PE  7e4f0000-7e506000       \               advpack
ELF     7e506000-7e595000       Deferred        winmm<elf>
  \-PE  7e510000-7e595000       \               winmm
ELF     7e595000-7e5bc000       Deferred        msacm32<elf>
  \-PE  7e5a0000-7e5bc000       \               msacm32
ELF     7e5f7000-7e60c000       Deferred        lz32<elf>
  \-PE  7e600000-7e60c000       \               lz32
ELF     7e60c000-7e626000       Deferred        version<elf>
  \-PE  7e610000-7e626000       \               version
ELF     7e626000-7e68c000       Export          setupapi<elf>
  \-PE  7e630000-7e68c000       \               setupapi
ELF     7e68c000-7e6ab000       Deferred        imm32<elf>
  \-PE  7e690000-7e6ab000       \               imm32
ELF     7e6d8000-7e6de000       Deferred        libxfixes.so.3
ELF     7e6de000-7e6e8000       Deferred        libxcursor.so.1
ELF     7e6e8000-7e6ef000       Deferred        libxrandr.so.2
ELF     7e6ef000-7e6f8000       Deferred        libxrender.so.1
ELF     7e6f8000-7e6fc000       Deferred        libxinerama.so.1
ELF     7e6fc000-7e715000       Deferred        libxcb.so.1
ELF     7e715000-7e718000       Deferred        libxcb-xlib.so.0
ELF     7e718000-7e71c000       Deferred        libxau.so.6
ELF     7e71c000-7e837000       Deferred        libx11.so.6
ELF     7e837000-7e846000       Deferred        libxext.so.6
ELF     7e846000-7e85f000       Deferred        libice.so.6
ELF     7e85f000-7e868000       Deferred        libsm.so.6
ELF     7e871000-7e875000       Deferred        koi8-r.so
ELF     7e87c000-7e90e000       Deferred        winex11<elf>
  \-PE  7e890000-7e90e000       \               winex11
ELF     7e94c000-7e96d000       Deferred        libexpat.so.1
ELF     7e96d000-7e999000       Deferred        libfontconfig.so.1
ELF     7e999000-7e9ac000       Deferred        libz.so.1
ELF     7e9ac000-7ea1b000       Deferred        libfreetype.so.6
ELF     7ea1b000-7ea6b000       Export          advapi32<elf>
  \-PE  7ea30000-7ea6b000       \               advapi32
ELF     7ea6b000-7eb06000       Deferred        gdi32<elf>
  \-PE  7ea80000-7eb06000       \               gdi32
ELF     7eb06000-7ec4e000       Deferred        user32<elf>
  \-PE  7eb20000-7ec4e000       \               user32
ELF     7ec4e000-7ec63000       Export          rundll32<elf>
  \-PE  7ec50000-7ec63000       \               rundll32
ELF     7ec63000-7ec85000       Deferred        libwine-etersoft.so.1
ELF     7edb8000-7eee5000       Export          kernel32<elf>
  \-PE  7edd0000-7eee5000       \               kernel32
ELF     7ef1a000-7ef3f000       Deferred        libm.so.6
ELF     7ef3f000-7f000000       Deferred        ntdll<elf>
  \-PE  7ef50000-7f000000       \               ntdll
ELF     b7d50000-b7d56000       Deferred        libxxf86vm.so.1
ELF     b7d57000-b7d5b000       Deferred        libdl.so.2
ELF     b7d5b000-b7e8e000       Deferred        libc.so.6
ELF     b7e8e000-b7ea5000       Deferred        libpthread.so.0
ELF     b7fcf000-b7feb000       Deferred        ld-linux.so.2
Threads:
process  tid      prio (all id:s are in hex)
00000008 (D) c:\windows\system32\rundll32.exe
        00000009    0 <==
00000010
        00000011    0
Backtrace:
=>1 0x7edfcb12 RaiseException+0x82() in kernel32 (0x0032d608)
  2 0x7010a6d7 in rpcrt4 (+0xa6d7) (0x0032d768)
  3 0x7ea57a81 OpenSCManagerW+0x61() in advapi32 (0x0032d7a8)
  4 0x7e13d3b0 in qmgr (+0xd3b0) (0x0032d828)
  5 0x7e65222c in setupapi (+0x2222c) (0x0032f908)
  6 0x7e651565 in setupapi (+0x21565) (0x0032fb18)
  7 0x7e65171e SetupInstallFromInfSectionW+0x8e() in setupapi (0x0032fb58)
  8 0x7e653ddd InstallHinfSectionW+0x28d() in setupapi (0x0032fdd8)
  9 0x7ec5fce4 main+0x414() in rundll32 (0x0032fed8)
  10 0x7ec6044b in rundll32 (+0x1044b) (0x0032ff08)
  11 0x7ee2da67 in kernel32 (+0x5da67) (0x0032ffe8)
  12 0xb7eacc87 (0x00000000)
err:service:RPC_MainLoop RpcServerUseProtseq failed with error 1703
err:wineboot:start_services_process Unexpected termination of services.exe - exit code 1703
err:service:RPC_MainLoop RpcServerUseProtseq failed with error 1703
err:wineboot:start_services_process Unexpected termination of services.exe - exit code 1703
err:service:RPC_MainLoop RpcServerUseProtseq failed with error 1703
err:wineboot:start_services_process Unexpected termination of services.exe - exit code 1703
Building local environment...
Communication dlls installing...
MSI installing...
fixme:mscoree:GetCORSystemDirectory (0x7e5b27c0, 260, 0x7e5b29c8): stub!
Successfully registered DLL /home/guest/.wine/dosdevices/c:/windows/system32/msxml3.dll
Successfully registered DLL /home/guest/.wine/dosdevices/c:/windows/system32/msxml4.dll
Successfully registered DLL /home/guest/.wine/dosdevices/c:/windows/system32/vbscript.dll
Successfully registered DLL /home/guest/.wine/dosdevices/c:/windows/system32/jscript.dll
guest@multi:~/wine_c/Program Files/1cv81/bin> wine 1cv8.exe
err:service:RPC_MainLoop RpcServerUseProtseq failed with error 1703
err:wineboot:start_services_process Unexpected termination of services.exe - exit code 1703
fixme:heap:HeapSetInformation 0xcd0000 0 0x32fb7c 4
fixme:gdi:ExtCreatePen Hatches not implemented
fixme:system:SystemParametersInfoW Unimplemented action: 95 (SPI_GETSNAPTODEFBUTTON)
fixme:system:SystemParametersInfoW Unimplemented action: 95 (SPI_GETSNAPTODEFBUTTON)
fixme:system:SystemParametersInfoW Unimplemented action: 95 (SPI_GETSNAPTODEFBUTTON)
Comment 1 Vitaly Lipatov 2008-04-09 18:44:08 MSD
Да, подтверждаю. Это происходит при выполнении
rundll32.exe setupapi.dll,InstallHinfSection DefaultInstall 128 wine.inf
Comment 2 Виталий Перов 2008-04-09 18:49:17 MSD
похожая ошибка возникала при установке indeo5
через ww. 
Тоже выдавала:
fixme:ntdll:server_ioctl_file Unsupported ioctl 110018 (device=11 access=0
func=6 method=0)
На все 100% не уверен, что там было именно
device=11, func=6, но вроде как-раз такие значения там и были.

Решалось это запуском программы устновки
через winexp
Comment 3 Vitaly Lipatov 2008-04-09 18:55:42 MSD
Да, но Indeo тут ни при чём.
Comment 4 Константин Кондратюк 2008-04-10 08:19:18 MSD
Похоже, что вылеты в дебаггер при тестировании многих программ в последнее время - следствие этой ошибки. В том числе и программ из "школьного" проекта.
Comment 5 Виталий Перов 2008-04-10 21:44:58 MSD
падает при вызове NdrGetBuffer() из svcctl_OpenSCManagerW()
Comment 6 Виталий Перов 2008-04-10 22:30:49 MSD
NdrGetBuffer() находится в rpcrt4.dll. По умолчанию она используется сторонняя.
Если поставить встроенную, дебагер больше не вызывается
Comment 7 Константин Кондратюк 2008-04-15 09:00:48 MSD
*** Bug 1698 has been marked as a duplicate of this bug. ***
Comment 8 Виталий Перов 2008-04-17 20:54:57 MSD
а проблема в том, что комманда 
_Handle = MACHINE_HANDLEW_bind(MachineName);
возвращает ноль

Проблемы тут 2:
1)если MACHINE_HANDLEW_bind() возвращает 0, значит где-то внутри ошибка.
2)если она всё же возвращает 0, то это должно корректно обрабатываться.
Comment 9 Виталий Перов 2008-04-17 21:53:36 MSD
Нет, ошибка в другом месте.
_Handle имеет не нулевое значение, но почему-то
отладочная конструкция
FIXME("_StubMsg=%p, _StubMsg.BufferLength=%d  _Handle=%d\n", _StubMsg, _StubMsg.BufferLength, _Handle);
выводит, что _Handle=0: 
fixme:service:svcctl_OpenSCManagerW _StubMsg=0x32d790, _StubMsg.BufferLength=168  _Handle=0

Странно как-то
Comment 10 Виталий Перов 2008-04-17 21:58:18 MSD
на первый взгляд, функции NdrGetBuffer() передаются вполне корректные значения
Comment 11 Виталий Перов 2008-04-18 17:47:43 MSD
По-моему ошибка не в Wine, а как-раз в Виндовой дллке:
http://support.microsoft.com/kb/835575
Comment 12 Виталий Перов 2008-04-18 18:15:59 MSD
замена rpcrt4.dll на более новую (взята с ХР), ничего не меняет.

Вообще в http://support.microsoft.com/kb/835575 функция NdrGetBuffer() при вылете в дебаг вызывается из  Dsproxy.dll и, если я правильно понял, то они предлагают для решения проблемы загрузить новую  Dsproxy.dll.

Т.е всё дело в неправильном вызове NdrGetBuffer()
Comment 13 Виталий Перов 2008-04-18 18:41:38 MSD
А вообще ошибка возникает даже в стандартных тестах для advapi32.dll ещё даже до первого теста.
Cкорее всего ошибка в последних изменениях
Comment 14 Виталий Перов 2008-04-21 20:21:01 MSD
До ошибки в rpcrt4.dll вызывается WaitNamedPipeW() c параметрами name = L"\\\\\\pipe\\svcctl" nTimeOut = 0x00000000
Эта функция возвращает FALSE. После чего идёт 4 освобождения памяти, и вылет в дебаг
Comment 15 Виталий Перов 2008-04-21 20:37:46 MSD
WaitNamedPipeW() вызывает NtFsControlFile() которая возвращает код ошибки.
NtFsControlFile() вызывает server_ioctl_file(), а она в свою очередь показывает ошибку:
fixme:ntdll:server_ioctl_file Unsupported ioctl 110018 (device=11 access=0 func=6 method=0)
Comment 16 Виталий Перов 2008-04-21 21:27:54 MSD
в "чистом" wine (запуск через wwo) данной ошибки не возникает.
Скорее всего виноват какой-то наш патч.
Comment 17 Виталий Перов 2008-04-22 13:51:53 MSD
при вызове NtFsControlFile(), в качестве параметра code передаётся FSCTL_PIPE_WAIT , которая формируется:
#define FSCTL_PIPE_WAIT                 CTL_CODE(FILE_DEVICE_NAMED_PIPE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
причём константы:
FILE_DEVICE_NAMED_PIPE = 11
METHOD_BUFFERED = 0
FILE_ANY_ACCESS  = 0.

Из дебага видно, что функция server_ioctl_file() распаковывает эти значения нормально, но правильными их не признаёт:
fixme:ntdll:server_ioctl_file Unsupported ioctl 110018 (device=11 access=0
func=6 method=0)
Comment 18 Виталий Перов 2008-04-22 16:39:43 MSD
Если использовать встроенную rpcrt4.dll, то функция уже другая:
ioctl 110008 (device=11 access=0 func=2 method=0)
, что соответствует комманде FSCTL_PIPE_LISTEN
Comment 19 Виталий Перов 2008-04-22 16:48:36 MSD
Ошибка не в том, что мы вызываем непоодерживаемый ioctl, а скорее в параметрах.
Если заменить функцию 8 на функцию 2 (которая точно ноддерживатеся), то опять получаем
fixme:ntdll:server_ioctl_file Unsupported ioctl 110008 (device=11 access=0 func=2 method=0)
Comment 20 Виталий Перов 2008-04-22 17:44:39 MSD
Функция server_ioctl_file()
обращается к wineserver
status = STATUS_NOT_SUPPORTED получается следующим образом:

(status = wine_server_call( req ))
далее
ret = wait_reply( req );
далее
read_reply_data( &req->u.reply, sizeof(req->u.reply) );
эта функция успешно записывает ответ сервера в буфер:
ret = read( ntdll_get_thread_data()->reply_fd, buffer, size )
и возвращается.
а далее wait_reply() возвращает какое-то значение внутри полученного ответа:
return req->u.reply.reply_header.error; 
которое и считается как ошибка



 
Comment 21 Виталий Перов 2008-04-24 20:22:54 MSD
возможно (но маловераятно), что ошибка в wineserver. Думаю, что в любом случае без   трейса wineserver не обойтись
Comment 22 Виталий Перов 2008-04-24 20:50:35 MSD
А вообще первый признак неправильной работы появляется ещё до вызова svcctl_OpenSCManagerW().

Неправильная работа начинается с :
err:service:RPC_Init RpcServerUseProtseq failed with error 1703

а функция RpcServerUseProtseqEp() как-раз находится в rpcrt4.dll
Comment 23 Виталий Перов 2008-04-24 21:16:48 MSD
Код ошибки 1703 соответствует RPC_S_PROTSEQ_NOT_SUPPORTED
Comment 24 Vitaly Lipatov 2008-04-24 21:35:18 MSD
Возможно эту операцию не стоит выполнять
Comment 25 Виталий Перов 2008-04-25 17:42:49 MSD
заменил rpcrt.dll
Сейчас в этом месте выдаёт ошибку 1766, что соответствует RPC_S_INTERNAL_ERROR, но тесты выполняются.
Тестировал в ветках pure, master и eterhack - везде тесты выполняются. Вылета в дебаг нигде не происходит. При выполнении  проваливаются 64 теста ( при запуске через wwo только 24).

wwo использует версию wine-0.9.58
В git в ветке pure должна быть самая последняя
Если у нас правильно работает git, то логично предположить, что бага где-то в патчах после версии 0.9.58

Но есть ещё одна бага: ведь при запуске через wine (WINE@Etersoft 1.0 SQL (1.0.8)) программа всё-таки вылетает в дебаг
Comment 26 Виталий Перов 2008-04-29 13:27:05 MSD
Проверил стандартные тесты для advapi32 - service.
При использовании встроенной rpcrt4.dll проваливается 12 тестов.
При использовании нативной - 63 теста
Comment 27 Виталий Перов 2008-05-05 19:43:40 MSD
Данная ошибка появляется только в WINE@Etersoft 1.0 SQL (1.0.8)
В текущей версии (обновление через git 04.05.2008) данной ошибки нет.
Comment 28 Alexeev Alexey 2008-05-05 20:12:41 MSD
Кусок ошибки при установке текущей версии:

fixme:ntdll:server_ioctl_file Unsupported ioctl 110018 (device=11 access=0 func=6 method=0)
err:module:DelayLoadFailureHook failed to delay load rpcrt4.dll.I_RpcExceptionFilter
wine: Call from 0x7ee16ea0 to unimplemented function rpcrt4.dll.I_RpcExceptionFilter, aborting
wine: Unimplemented function rpcrt4.dll.I_RpcExceptionFilter called at address 0x7ee16ea0 (thread 0009), starting debugger...
WineDbg starting on pid 0008
Unhandled exception: unimplemented function rpcrt4.dll.I_RpcExceptionFilter called in 32-bit code (0x7ee16f16).
Comment 29 Виталий Перов 2008-05-05 20:27:38 MSD
проблемы с rpcrt4.dll (при использовании сторонней) решаются заменой этой dll на нормальную. Нормальльную можно взять в /var/ftp/pvt/WINE tests/MS/dlls/
Comment 30 Vitaly Lipatov 2008-05-27 10:11:03 MSD
Перешли на использование вайновской rpcrt4.dll всегда.
Comment 31 sergling 2008-05-27 17:21:07 MSD
При установке сегодняшней сборки опять валится в дебаг, но вроде помогла правка настройки для этой dll в winecfg. Вторая попытка апдейта закончилась более успешно.