http://bugs.winehq.org/show_bug.cgi?id=30069
Bug #: 30069 Summary: MSDE2000A fails due to NtCreatePort being a stub Product: Wine Version: 1.4-rc5 Platform: x86 URL: http://www.microsoft.com/download/en/details.aspx?id=2 2661 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ntdll AssignedTo: wine-bugs@winehq.org ReportedBy: djelinski1@gmail.com Classification: Unclassified
Created attachment 39177 --> http://bugs.winehq.org/attachment.cgi?id=39177 log of setup.exe in wine 1.4-rc5
To reproduce: Download and run the MSDE installer MSDE2000A.EXE from http://www.microsoft.com/download/en/details.aspx?id=22661 This will unpack to directory c:\MSDERelA. Go to that directory, then run setup.exe SAPWD=Hello It will install MSSQLServer service and attempt to start it. The service will fail to start, and the installer will subsequently (after ca.2 minutes) remove all installed files.
I managed to reproduce it faster via interrupting the installer before it has a chance to remove the service - after that starting any wine application triggers the bug.
NtCreatePort is a part of undocumented Microsoft API called LPC. Some attempts at documenting it can be found via google, e.g.: http://www.zezula.net/en/prog/lpc.html http://blogs.msdn.com/b/ntdebugging/archive/2007/07/26/lpc-local-procedure-c...
http://bugs.winehq.org/show_bug.cgi?id=30069
Dmitry Timoshkov dmitry@baikal.ru changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|ntdll |-unknown Summary|MSDE2000A fails due to |Microsoft SQL Server 2000 |NtCreatePort being a stub |Desktop Engine (MSDE 2000) | |Release A fails to install
--- Comment #1 from Dmitry Timoshkov dmitry@baikal.ru 2012-03-04 01:40:15 CST --- Unlikely to be fixed if it's completely undocumented and being so low level functionality.
http://bugs.winehq.org/show_bug.cgi?id=30069
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download Status|UNCONFIRMED |NEW CC| |focht@gmx.net Component|-unknown |ntdll Summary|Microsoft SQL Server 2000 |Microsoft SQL Server 2000 |Desktop Engine (MSDE 2000) |Desktop Engine (MSDE 2000) |Release A fails to install |Release A needs LPC for | |shared memory | |communications | |(NtCreatePort and friends) Ever Confirmed|0 |1
--- Comment #2 from Anastasius Focht focht@gmx.net 2012-03-04 03:14:24 CST --- Hello,
the bug reporter is right, the SQL server engine uses LPC for shared memory communications (when client and server processes are running on the same machine).
--- snip --- 000f:Call KERNEL32.CreateProcessW(00000000,00119120 L"C:\MSSQL\Binn\sqlservr.exe -sMSSQLSERVER",00000000,00000000,00000000,00000400,00540000,00000000,0033fc58,0033fc9c) ret=7eda160b ... 000f:Ret KERNEL32.CreateProcessW() retval=00000001 ret=7eda160b ... 0036:Call KERNEL32.LoadLibraryA(42cd4000 "ntdll.dll") ret=42cd115b 0036:Ret KERNEL32.LoadLibraryA() retval=7bc10000 ret=42cd115b 0036:Call KERNEL32.GetProcAddress(7bc10000,42cd400c "NtCreatePort") ret=42cd1178 0036:Ret KERNEL32.GetProcAddress() retval=7bc20edc ret=42cd1178 0036:Call KERNEL32.GetProcAddress(7bc10000,42cd401c "NtConnectPort") ret=42cd119a 0036:Ret KERNEL32.GetProcAddress() retval=7bc20dd4 ret=42cd119a 0036:Call KERNEL32.GetProcAddress(7bc10000,42cd402c "NtListenPort") ret=42cd11bc 0036:Ret KERNEL32.GetProcAddress() retval=7bc21194 ret=42cd11bc 0036:Call KERNEL32.GetProcAddress(7bc10000,42cd403c "NtAcceptConnectPort") ret=42cd11de 0036:Ret KERNEL32.GetProcAddress() retval=7bc20c0c ret=42cd11de 0036:Call KERNEL32.GetProcAddress(7bc10000,42cd4050 "NtCompleteConnectPort") ret=42cd1200 0036:Ret KERNEL32.GetProcAddress() retval=7bc20dbc ret=42cd1200 0036:Call KERNEL32.GetProcAddress(7bc10000,42cd4068 "NtReplyWaitReceivePort") ret=42cd1222 0036:Ret KERNEL32.GetProcAddress() retval=7bc21884 ret=42cd1222 0036:Call KERNEL32.GetProcAddress(7bc10000,42cd4080 "NtReplyPort") ret=42cd1244 0036:Ret KERNEL32.GetProcAddress() retval=7bc1eb3c ret=42cd1244 0036:Call KERNEL32.GetProcAddress(7bc10000,42cd408c "NtRequestPort") ret=42cd1266 0036:Ret KERNEL32.GetProcAddress() retval=7bc1ebc0 ret=42cd1266 0036:Call KERNEL32.GetProcAddress(7bc10000,42cd409c "NtRequestWaitReplyPort") ret=42cd1285 0036:Ret KERNEL32.GetProcAddress() retval=7bc2189c ret=42cd1285 0036:Call KERNEL32.GetProcAddress(7bc10000,42cd40b4 "NtImpersonateClientOfPort") ret=42cd12a4 0036:Ret KERNEL32.GetProcAddress() retval=7bc1e8d4 ret=42cd12a4 0036:Call KERNEL32.GetProcAddress(7bc10000,42cd40d0 "NtClose") ret=42cd12c3 0036:Ret KERNEL32.GetProcAddress() retval=7bc20da4 ret=42cd12c3 0036:Call KERNEL32.FreeLibrary(7bc10000) ret=42cd12dd 0036:Ret KERNEL32.FreeLibrary() retval=00000001 ret=42cd12dd 0036:Call KERNEL32.MultiByteToWideChar(00000000,00000000,031eaf14 "\BaseNamedObjects\Global\NEXUS4MSSQLSERVER",ffffffff,031ead0c,00000104) ret=42cd15c3 0036:Ret KERNEL32.MultiByteToWideChar() retval=0000002b ret=42cd15c3 0036:Call ntdll.wcslen(031ead0c L"\BaseNamedObjects\Global\NEXUS4MSSQLSERVER") ret=42cd15de 0036:Ret ntdll.wcslen() retval=0000002a ret=42cd15de 0036:Call ntdll.NtCreatePort(00140014,031eb01c,00000000,00000038,00080000) ret=42cd1654 0036:fixme:ntdll:NtCreatePort (0x140014,0x31eb01c,0,56,0x80000),stub! 0036:Ret ntdll.NtCreatePort() retval=c0000002 ret=42cd1654 0036:Call KERNEL32.GetLastError() ret=42cd1996 0036:Ret KERNEL32.GetLastError() retval=00002747 ret=42cd1996 0036:RET SSmsLPCn.ConnectionListen() retval=00000000 ret=42cf5c30 0036:Call msvcrt.free(00140010) ret=42cf5c6c 0036:Call ntdll.RtlFreeHeap(00110000,00000000,00140010) ret=7ea1d3d0 0036:Ret ntdll.RtlFreeHeap() retval=00000001 ret=7ea1d3d0 000d:Ret KERNEL32.LoadLibraryExW() retval=00000000 ret=7ed9e127 0036:Ret msvcrt.free() retval=00000001 ret=42cf5c6c 000d:Call ntdll.RtlFreeHeap(00110000,00000000,00000000) ret=7ed9e9d1 000d:Ret ntdll.RtlFreeHeap() retval=00000001 ret=7ed9e9d1 000d:Call ntdll.RtlFreeHeap(00110000,00000000,00000000) ret=7ed9e9fb 000d:Ret ntdll.RtlFreeHeap() retval=00000001 ret=7ed9e9fb 0036:Call advapi32.ReportEventA(cafe4242,00000001,00000008,c0004a43,00000000,00000001,00000000,031eb02c ",\xaf\x1e\x03X\xb0\x1e\x03\x9e\\xcfBP\xc0\x13",00000000) ret=42cf5b96 000d:Call ntdll.RtlFreeHeap(00110000,00000000,00000000) ret=7ed9ea25 000d:Ret ntdll.RtlFreeHeap() retval=00000001 ret=7ed9ea25 0036:fixme:advapi:ReportEventA (0xcafe4242,0x0001,0x0008,0xc0004a43,(nil),0x0001,0x00000000,0x31eb02c,(nil)): stub 000d:Call KERNEL32.LoadLibraryExW(7edaa25c L"user32",00000000,00000002) ret=7ed9e127 0036:fixme:advapi:ReportEventW (0xcafe4242,0x0001,0x0008,0xc0004a43,(nil),0x0001,0x00000000,0x12db70,(nil)): stub 0036:err:eventlog:ReportEventW L"ConnectionListen(Shared-Memory (LPC)) : Error 10055" 0036:Ret advapi32.ReportEventA() retval=00000001 ret=42cf5b96 --- snip ---
Server log file:
--- snip --- ... 2012-03-04 09:51:02.68 server Using 'SSNETLIB.DLL' version '8.0.766'. 2012-03-04 09:51:02.69 spid5 Clearing tempdb database. 2012-03-04 09:51:02.70 server SQL server listening on . 2012-03-04 09:51:02.70 server Error: 17826, Severity: 18, State: 1 2012-03-04 09:51:02.70 server Could not set up Net-Library 'SSNETLIB'.. 2012-03-04 09:51:02.70 server Unable to load any netlibs. 2012-03-04 09:51:02.70 server SQL Server could not spawn FRunCM thread. --- snip ---
Not sure if LPC is a strict requirement for the SQL server/service start. SQL supports named pipe and TCP besides "shared memory" (LPC).
Regards
http://bugs.winehq.org/show_bug.cgi?id=30069
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Blocks| |17785
http://bugs.winehq.org/show_bug.cgi?id=30069
--- Comment #3 from Daniel Jelinski djelinski1@gmail.com 2012-03-17 02:55:38 CDT --- Hello, By default LPC is required to start sql server service. However, when the installer is started by: wine setup.exe sapwd=xxx disablenetworkprotocols=0 the service starts listening on TCP ports. Unfortunately the end result (installation rolled back) does not change. If the installer is terminated before rollback, the MSSQL service is runnable. However I was not able to log in. I tried the specified password (login failed for user sa) and integrated security (login failed for user (null). Reason: Not associated with a trusted SQL Server connection). Additionally, when attempting to log in using integrated security, the following line appeared in the log: fixme:ntlm:ntlm_AcquireCredentialsHandleW AcquireCredentialsHandle: SECPKG_CRED_BOTH stub,
http://bugs.winehq.org/show_bug.cgi?id=30069
--- Comment #4 from Daniel Jelinski djelinski1@gmail.com 2012-03-17 07:16:05 CDT --- Update: I was able to connect from mono develop to sql server by supplying empty password for user sa. Simple queries seem to work.
http://bugs.winehq.org/show_bug.cgi?id=30069
Daniel Jelinski djelinski1@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ipc
--- Comment #5 from Daniel Jelinski djelinski1@gmail.com 2012-09-08 13:46:09 CDT --- There's an example application (source code) using this api here: http://www.zezula.net/download/lpc.zip
I can't test it here, but the code looks legit.
http://bugs.winehq.org/show_bug.cgi?id=30069
iav@iav.lv changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |iav@iav.lv
http://bugs.winehq.org/show_bug.cgi?id=30069
--- Comment #6 from iav@iav.lv 2012-11-26 16:13:00 CST --- (In reply to comment #3)
Hello, By default LPC is required to start sql server service. However, when the installer is started by: wine setup.exe sapwd=xxx disablenetworkprotocols=0 the service starts listening on TCP ports. Unfortunately the end result (installation rolled back) does not change. If the installer is terminated before rollback, the MSSQL service is runnable.
How can I get that setup? When and how can I interrupt setup - and how to run service later?
http://bugs.winehq.org/show_bug.cgi?id=30069
--- Comment #7 from Daniel Jelinski djelinski1@gmail.com 2012-11-26 16:29:21 CST --- (In reply to comment #6)
How can I get that setup? When and how can I interrupt setup - and how to run service later?
I posted the details in my appdb report here: http://appdb.winehq.org/objectManager.php?sClass=version&iId=11016&i...
http://bugs.winehq.org/show_bug.cgi?id=30069
--- Comment #8 from Daniel Jelinski djelinski1@gmail.com 2012-12-09 15:42:11 CST --- According to MSDN, Shared memory is required by SQL Server 2000 installer: "The failure is prohibitive to a SQL Server 2000 setup. A SQL Server 2000 setup prevents external connections by only allowing the shared network library connections. If a shared memory connection can not be established, the setup fails when it attempts to configure the SQL Server server." [http://support.microsoft.com/kb/285100] My tests seems to confirm that; the installer uses odbc to connect to an instance of SQL Server. I tried using UnixOdbc+tdsodbc and native odbc (from winetricks mdac28 jet40) with tcp/ip and named pipes, and all of these were disconnected by the server after exchanging roughly 2 packets.
(Named pipes didn't work with plain Wine, they require at least SetNamedPipeHandleState. I used Adam Martinson's patches from bug 17195).
http://bugs.winehq.org/show_bug.cgi?id=30069
Ken Sharp imwellcushtymelike@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |imwellcushtymelike@gmail.co | |m
http://bugs.winehq.org/show_bug.cgi?id=30069
Brandon Corujo haku08879@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |haku08879@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=30069
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords|ipc |
--- Comment #9 from Anastasius Focht focht@gmx.net --- Hello folks,
I'm removing the 'ipc' keyword here since it's the only bug report left using this keyword.
It was never properly used in the past and more than 100+ bugs would need to be tagged if taken seriously (from my own analysis experience).
Daniel, you could give wine-staging project a try which carries the current "state-of-the-art" named pipe patchset -> https://github.com/wine-compholio/wine-staging
Regards
https://bugs.winehq.org/show_bug.cgi?id=30069
Sebastian Lackner sebastian@fds-team.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |sebastian@fds-team.de
https://bugs.winehq.org/show_bug.cgi?id=30069
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://www.microsoft.com/do |https://web.archive.org/web |wnload/en/details.aspx?id=2 |/20101225105840/http://down |2661 |load.microsoft.com/download | |/d/5/4/d5402c33-65de-4464-9 | |d82-d1de2971d9db/MSDE2000A. | |exe
--- Comment #10 from Anastasius Focht focht@gmx.net --- Hello folks,
adding stable download link via Internet Archive:
https://web.archive.org/web/20101225105840/http://download.microsoft.com/dow...
$ sha1sum MSDE2000A.exe 84967a13671758c9e7cd2b19cdb60cce634cd869 MSDE2000A.exe
$ du -sh MSDE2000A.exe 43M MSDE2000A.exe
Obviously still present. Not that it matters much: it fails a bit earlier now due to https://source.winehq.org/git/wine.git/commitdiff/52202224d9ab8316896370db2a... ("ntdll: Comment out stubs for Nt and Zw functions. ")
https://source.winehq.org/git/wine.git/blob/20f1a677b664b3d0d3dc038ffb9ab4f4...
--- snip --- $ pwd /home/focht/.wine/drive_c/MSSQL/Binn
$ WINEDEBUG=+seh,+relay wine sqlservr.exe -sMSSQLSERVER >>log.txt 2>&1
00dc:Call KERNEL32.LoadLibraryA(42cd4000 "ntdll.dll") ret=42cd115b ... 00dc:Call ntdll.LdrLoadDll(0026d308 L"C:\MSSQL\Binn;C:\windows\system32;C:\windows\system;C:\windows;.;C:\windows\system32;C:\windows;C:\windows\system32\wbem;C:\windows\system32\WindowsPowershell\v1.0;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\",00000000,03cdbf80,03cdbf68) ret=7b01c14d 00dc:Ret ntdll.LdrLoadDll() retval=00000000 ret=7b01c14d 00dc:Call ntdll.RtlReleasePath(0026d308) ret=7b01c1af 00dc:Ret ntdll.RtlReleasePath() retval=00000001 ret=7b01c1af 00dc:Ret KERNEL32.LoadLibraryA() retval=7bc00000 ret=42cd115b 00dc:Call KERNEL32.GetProcAddress(7bc00000,42cd400c "NtCreatePort") ret=42cd1178 00dc:Ret KERNEL32.GetProcAddress() retval=7bc02c0c ret=42cd1178 00dc:Call KERNEL32.GetProcAddress(7bc00000,42cd401c "NtConnectPort") ret=42cd119a 00dc:Ret KERNEL32.GetProcAddress() retval=7bc02a0c ret=42cd119a 00dc:Call KERNEL32.GetProcAddress(7bc00000,42cd402c "NtListenPort") ret=42cd11bc 00dc:Ret KERNEL32.GetProcAddress() retval=7bc030ec ret=42cd11bc 00dc:Call KERNEL32.GetProcAddress(7bc00000,42cd403c "NtAcceptConnectPort") ret=42cd11de 00dc:Ret KERNEL32.GetProcAddress() retval=7bc0276c ret=42cd11de 00dc:Call KERNEL32.GetProcAddress(7bc00000,42cd4050 "NtCompleteConnectPort") ret=42cd1200 00dc:Ret KERNEL32.GetProcAddress() retval=7bc029ec ret=42cd1200 00dc:Call KERNEL32.GetProcAddress(7bc00000,42cd4068 "NtReplyWaitReceivePort") ret=42cd1222 00dc:Ret KERNEL32.GetProcAddress() retval=7bc03bcc ret=42cd1222 00dc:Call KERNEL32.GetProcAddress(7bc00000,42cd4080 "NtReplyPort") ret=42cd1244 00dc:Ret KERNEL32.GetProcAddress() retval=00000000 ret=42cd1244 00dc:Call KERNEL32.FreeLibrary(7bc00000) ret=42cd12fe 00dc:Call ntdll.LdrUnloadDll(7bc00000) ret=7b01b97f 00dc:Ret ntdll.LdrUnloadDll() retval=00000000 ret=7b01b97f 00dc:Ret KERNEL32.FreeLibrary() retval=00000001 ret=42cd12fe 00dc:Call KERNEL32.GetLastError() ret=42cd1996 00dc:Ret KERNEL32.GetLastError() retval=0000007f ret=42cd1996 ... 00dc:Call advapi32.ReportEventA(cafe4242,00000001,00000008,c0004a43,00000000,00000001,00000000,03cdc53c,00000000) ret=42cf5b96 00dc:fixme:advapi:ReportEventA (CAFE4242,0x0001,0x0008,0xc0004a43,00000000,0x0001,0x00000000,03CDC53C,00000000): stub 00dc:fixme:advapi:ReportEventW (CAFE4242,0x0001,0x0008,0xc0004a43,00000000,0x0001,0x00000000,0026CEB0,00000000): stub 00dc:err:eventlog:ReportEventW L"ConnectionListen(Shared-Memory (LPC)) : Error 127" 00dc:Ret advapi32.ReportEventA() retval=00000001 ret=42cf5b96 ... --- snip ---
$ wine --version wine-6.21
Regards
https://bugs.winehq.org/show_bug.cgi?id=30069
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Blocks|17785 |