[Bug 35166] New: NVIDIA CUDA Toolkit v5.5 installer fails (NtQueryKey with KeyNameInformation info class unsupported on server side)
wine-bugs at winehq.org
wine-bugs at winehq.org
Wed Dec 18 16:06:32 CST 2013
http://bugs.winehq.org/show_bug.cgi?id=35166
Bug ID: 35166
Summary: NVIDIA CUDA Toolkit v5.5 installer fails (NtQueryKey
with KeyNameInformation info class unsupported on
server side)
Product: Wine
Version: 1.7.8
Hardware: x86
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: wineserver
Assignee: wine-bugs at winehq.org
Reporter: focht at gmx.net
Classification: Unclassified
Hello folks,
with bug 35144 fixed the installer still fails.
The installer is wrapped. Let it unpack first and then CTRL+C when the error
dialog box is shown for easier reproducing.
Run the extracted main installer.
Relevant part of trace log:
--- snip ---
$ pwd
/home/focht/.wine/drive_c/NVIDIA/CUDA
$ WINEDEBUG=+tid,+seh,+relay,+server wine ./setup.exe >>log.txt 2>&1
...
0023:Call advapi32.RegOpenKeyExW(80000002,011e0f10
L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{2DA75DC7-0865-4BAD-BA86-074500CC350E}",00000000,00000001,01f6e1dc)
ret=101ba81a
0023: open_key( parent=001c, access=00000001, attributes=00000000,
name=L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\{2DA75DC7-0865-4BAD-BA86-074500CC350E}"
)
0023: open_key() = 0 { hkey=00ac }
0023:Ret advapi32.RegOpenKeyExW() retval=00000000 ret=101ba81a
...
0023:Call KERNEL32.LoadLibraryW(00149068 L"C:\\windows\\system32\\NTDLL.DLL")
ret=101aa158
0023:Ret KERNEL32.LoadLibraryW() retval=7bc10000 ret=101aa158
0023:Call KERNEL32.GetProcAddress(7bc10000,10258070 "NtQueryKey") ret=101a9d6f
0023:Ret KERNEL32.GetProcAddress() retval=7bc21f68 ret=101a9d6f
...
0023:Call ntdll.NtQueryKey(000000ac,00000003,00000000,00000000,01f6e20c)
ret=101cee1c
0023: enum_key( hkey=00ac, index=-1, info_class=3 )
0023: enum_key() = INVALID_PARAMETER { subkeys=0, max_subkey=0, max_class=0,
values=0, max_value=0, max_data=0, modif=0, total=0, namelen=0, name=L"",
class=L"" }
0023:Ret ntdll.NtQueryKey() retval=c000000d ret=101cee1c
0023:Call advapi32.LsaNtStatusToWinError(c000000d) ret=101bbfc4
0023:Ret advapi32.LsaNtStatusToWinError() retval=00000057 ret=101bbfc4
0023:Call ntdll.RtlAllocateHeap(00110000,00000000,00000020) ret=101e2d58
0023:Ret ntdll.RtlAllocateHeap() retval=00130900 ret=101e2d58
0023:Call KERNEL32.RaiseException(e06d7363,00000001,00000003,01f6e18c)
ret=101e6a02
0023:trace:seh:raise_exception code=e06d7363 flags=1 addr=0x7b83a8ef
ip=7b83a8ef tid=0023
0023:trace:seh:raise_exception info[0]=19930520
0023:trace:seh:raise_exception info[1]=01f6e1a8
0023:trace:seh:raise_exception info[2]=102bc340
0023:trace:seh:raise_exception eax=7b826921 ebx=7b8ba000 ecx=19930520
edx=01f6e0d4 esi=01f6e178 edi=01f6e140
0023:trace:seh:raise_exception ebp=01f6e118 esp=01f6e0b4 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00000283
0023:trace:seh:call_stack_handlers calling handler at 0x10207179 code=e06d7363
flags=1
...
0023:Call KERNEL32.OutputDebugStringW(0251d608 L" 46.115 | ERROR:
[NVI2.NVInstaller] 2173 at CNVInstaller::AddInstalledPackages : COM error:
Exception {0x80070057; File: Registry.cpp; Line: 1086}. \n") ret=1001aa05
0023:Ret KERNEL32.OutputDebugStringW() retval=01f6d810 ret=1001aa05
--- snip ---
The strange thing is that the client side code (ntdll) really looks like it
supports 'KeyNameInformation' info class in enumerate_key():
Source:
http://source.winehq.org/git/wine.git/blob/97645d7a1a9eec6100c637534620ac6811622794:/dlls/ntdll/reg.c#l206
--- snip ---
211 static NTSTATUS enumerate_key( HANDLE handle, int index,
KEY_INFORMATION_CLASS info_class,
212 void *info, DWORD length, DWORD *result_len )
213
214 {
215 NTSTATUS ret;
216 void *data_ptr;
217 size_t fixed_size;
218
219 switch(info_class)
220 {
221 case KeyBasicInformation: data_ptr = ((KEY_BASIC_INFORMATION
*)info)->Name; break;
222 case KeyFullInformation: data_ptr = ((KEY_FULL_INFORMATION
*)info)->Class; break;
223 case KeyNodeInformation: data_ptr = ((KEY_NODE_INFORMATION
*)info)->Name; break;
224 case KeyNameInformation: data_ptr = ((KEY_NAME_INFORMATION
*)info)->Name; break;
225 default:
226 FIXME( "Information class %d not implemented\n", info_class );
227 return STATUS_INVALID_PARAMETER;
228 }
229 fixed_size = (char *)data_ptr - (char *)info;
230
231 SERVER_START_REQ( enum_key )
232 {
233 req->hkey = wine_server_obj_handle( handle );
234 req->index = index;
235 req->info_class = info_class;
236 if (length > fixed_size) wine_server_set_reply( req, data_ptr,
length - fixed_size );
237 if (!(ret = wine_server_call( req )))
238 {
239 switch(info_class)
240 {
...
288 case KeyNameInformation:
289 {
290 KEY_NAME_INFORMATION keyinfo;
291 fixed_size = (char *)keyinfo.Name - (char *)&keyinfo;
292 keyinfo.NameLength = reply->namelen;
293 memcpy( info, &keyinfo, min( length, fixed_size ) );
294 }
295 break;
296 }
297 *result_len = fixed_size + reply->total;
298 if (length < *result_len) ret = STATUS_BUFFER_OVERFLOW;
299 }
300 }
301 SERVER_END_REQ;
302 return ret;
303 }
--- snip ---
If we take a look at the server side ... surprise:
Source:
http://source.winehq.org/git/wine.git/blob/ea919d9de483223777948422e5c134bd73791ba0:/server/registry.c#l863
--- snip ---
864 static void enum_key( const struct key *key, int index, int info_class,
865 struct enum_key_reply *reply )
866 {
...
886 switch(info_class)
887 {
888 case KeyBasicInformation:
889 classlen = 0; /* only return the name */
890 /* fall through */
891 case KeyNodeInformation:
...
897 case KeyFullInformation:
...
919 default:
920 set_error( STATUS_INVALID_PARAMETER );
921 return;
922 }
...
--- snip ---
The server needs to support KeyNameInformation info class.
$ sha1sum cuda_5.5.20_winxp_general_32.exe
19003fc955795e1a0d01d3e72b2df91c109d1e43 cuda_5.5.20_winxp_general_32.exe
$ du -sh cuda_5.5.20_winxp_general_32.exe
460M cuda_5.5.20_winxp_general_32.exe
$ wine --version
wine-1.7.8-258-g15b3ff2
Regards
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list