http://bugs.winehq.org/show_bug.cgi?id=17991
Summary: QueryPathOfRegTypeLib fails to locate typelib when
(major.minor) = (0xffff.0xffff)
Product: Wine
Version: 1.1.18
Platform: Other
OS/Version: other
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: oleaut32
AssignedTo: wine-bugs(a)winehq.org
ReportedBy: focht(a)gmx.net
Hello,
oleauto32.QueryPathOfRegTypeLib() doesn't work correctly when (major.minor) =
(0xffff.0xffff).
These parameters are passed by .NET Framework/CLR when regasm.exe utility is
used to export and register typelibs from .NET assemblies.
E.g. something like this:
--- snip ---
$ wine regasm.exe foo.dll /codebase /tlb
--- snip ---
WINEDEBUG=+tid,+seh,+ole,+reg
--- snip ---
...
0021:trace:typelib:QueryPathOfRegTypeLib
({00020430-0000-0000-c000-000000000046}, ffff.ffff, 0x0, 0x32d634)
0021:trace:reg:NtOpenKey
(0x21c,L"Typelib\\{00020430-0000-0000-C000-000000000046}",20019,0x32cfcc)
0021:trace:reg:NtOpenKey <- 0x22c
0021:trace:reg:RegEnumKeyExA
(0x22c,0,0x32cfd4,0x32cfd0(16),(nil),(nil),(nil),(nil))
0021:trace:ole:find_typelib_key found
L"Typelib\\{00020430-0000-0000-C000-000000000046}": 1.0
0021:trace:reg:RegEnumKeyExA
(0x22c,1,0x32cfd4,0x32cfd0(16),(nil),(nil),(nil),(nil))
0021:trace:ole:find_typelib_key found
L"Typelib\\{00020430-0000-0000-C000-000000000046}": 2.0
0021:trace:reg:RegEnumKeyExA
(0x22c,2,0x32cfd4,0x32cfd0(16),(nil),(nil),(nil),(nil))
0021:trace:ole:GetErrorInfo (0, 0x32cb70, (nil))
0021:trace:ole:CreateErrorInfo (0x32aab8)
0021:trace:ole:IErrorInfoImpl_QueryInterface (0x1d4110)->(
IID: {22f03340-547d-101b-8e65-08002b2bd119},0x32aab8)
0021:trace:ole:ICreateErrorInfoImpl_AddRef (0x1d4110)
0021:trace:ole:IErrorInfoImpl_AddRef (0x1d4110)->(count=1)
0021:trace:ole:IErrorInfoImpl_QueryInterface -- Interface:
(0x32aab8)->(0x1d4114)
0021:trace:ole:IErrorInfoImpl_Release (0x1d4110)->(count=2)
0021:trace:ole:ICreateErrorInfoImpl_SetDescription (0x1d4110): L"Type library
exporter encountered an error while processing 'SlingSDK'. Error: Common
Language Runtime Internal error: 0x8002801d"
0021:trace:ole:ICreateErrorInfoImpl_SetHelpFile (0x1d4110,L"complib.hlp")
0021:trace:ole:ICreateErrorInfoImpl_SetHelpContext (0x1d4110,4451)
0021:trace:ole:ICreateErrorInfoImpl_QueryInterface (0x1d4110)
0021:trace:ole:IErrorInfoImpl_QueryInterface (0x1d4110)->(
IID: {1cf2b120-547d-101b-8e65-08002b2bd119},0x32aab4)
0021:trace:ole:IErrorInfoImpl_AddRef (0x1d4110)->(count=1)
0021:trace:ole:IErrorInfoImpl_QueryInterface -- Interface:
(0x32aab4)->(0x1d4110)
0021:trace:ole:SetErrorInfo (0, 0x1d4110)
0021:trace:ole:IErrorInfoImpl_AddRef (0x1d4110)->(count=2)
0021:trace:ole:ICreateErrorInfoImpl_Release (0x1d4110)
0021:trace:ole:IErrorInfoImpl_Release (0x1d4110)->(count=3)
0021:trace:ole:IErrorInfoImpl_Release (0x1d4110)->(count=2)
0021:trace:ole:GetErrorInfo (0, 0x32cb3c, 0x1d4110)
0021:trace:ole:IErrorInfoImpl_GetSource (0x1d4110)->(pBstrSource=0x1d4298)
0021:trace:ole:IErrorInfoImpl_GetDescription
(0x1d4110)->(pBstrDescription=0x1d4294)
0021:trace:ole:IErrorInfoImpl_GetHelpFile (0x1d4110)->(pBstrHelpFile=0x1d429c)
0021:trace:ole:IErrorInfoImpl_GetHelpContext
(0x1d4110)->(pdwHelpContext=0x1d42a0)
0021:trace:ole:IErrorInfoImpl_GetGUID (0x1d4110)->(count=1)
0021:trace:ole:IErrorInfoImpl_Release (0x1d4110)->(count=1)
0021:trace:ole:IErrorInfoImpl_Release -- destroying IErrorInfo(0x1d4110)
0021:trace:seh:raise_exception code=e06d7363 flags=1 addr=0x7b8437e8
ip=0x7b84386b tid=0021
0021:trace:seh:raise_exception info[0]=19930520
0021:trace:seh:raise_exception info[1]=0032cb1c
0021:trace:seh:raise_exception info[2]=7a35d570
0021:trace:seh:raise_exception eax=7b82ca2d ebx=7b8c2bf8 ecx=00000000
edx=00004000 esi=00004000 edi=00000000
0021:trace:seh:raise_exception ebp=0032ca98 esp=0032ca34 cs=0023 ds=002b
es=002b fs=0063 gs=006b
--- snip ---
MSDN doesn't mention such condition so this obviously needs some test case to
find out what logic is used to select the best match (first? last? lowest?
highest?).
dll/oleaut32/typelib.c:find_typelib_key() needs to be fixed accordingly.
"wMaj" needs to be made an "out" parameter too to actually return best matching
maj.min pair
With this part fixed it goes further - only to stumble into next bug ;-)
Regards
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
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.
https://bugs.winehq.org/show_bug.cgi?id=36068
Bug ID: 36068
Summary: Symantec Norton 360 installer needs
advapi32.dll.GetTraceEnableLevel and
advapi32.GetTraceEnableFlags stubs
Product: Wine
Version: 1.7.17
Hardware: x86
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: advapi32
Assignee: wine-bugs(a)winehq.org
Reporter: focht(a)gmx.net
Hello folks,
continuation of bug 35835
--- snip ---
$ wine ./N360-TW-21.1.0-EN-US.exe
...
fixme:advapi:GetTraceLoggerHandle ((nil)) stub
wine: Call from 0x7b83ac57 to unimplemented function
advapi32.dll.GetTraceEnableLevel, aborting
fixme:msvcrt:__clean_type_info_names_internal (0x6c2dd03c) stub
fixme:msvcrt:__clean_type_info_names_internal (0x6ac72c5c) stub
fixme:ntdll:RtlNtStatusToDosErrorNoTeb no mapping for 80000100
--- snip ---
MSDN:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363894%28v=vs.85%…
The code (engine.dll) calls these trace API in sequence:
--- snip ---
GetTraceLoggerHandle()
GetTraceEnableLevel()
GetTraceEnableFlags()
--- snip ---
If you add 'GetTraceEnableLevel' and 'GetTraceEnableFlags' stubs it should be
fine.
$ sha1sum N360-TW-21.1.0-EN-US.exe
aa05ccf9668e166ef28923d451f1c2ecad6f75f1 N360-TW-21.1.0-EN-US.exe
$ du -sh N360-TW-21.1.0-EN-US.exe
202M N360-TW-21.1.0-EN-US.exe
$ wine --version
wine-1.7.17-53-g5d31c1e
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.
https://bugs.winehq.org/show_bug.cgi?id=36143
Bug ID: 36143
Summary: Symantec Norton 360 installer reports 'This product is
not compatible with this computer's current operating
system' (RtlVerifyVersionInfo doesn't handle
major/minor/service pack condition mask properly)
Product: Wine
Version: 1.7.17
Hardware: x86
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: ntdll
Assignee: wine-bugs(a)winehq.org
Reporter: focht(a)gmx.net
Hello folks
continuation of bug 36142 - it still fails.
Log file:
--- snip ---
2014-04-28-12-43-53-422 : 0x003A : Information : LaunchConditions_Server set to
true from manifest
2014-04-28-12-43-53-424 : 0x003A : Error : unsupported OS
2014-04-28-12-43-53-425 : 0x003A : Error :
CEngineManager::CheckLaunchConditions(7777) : failed LaunchCondition:
CheckforMinOS
2014-04-28-12-43-53-427 : 0x003A : Information : Unable to delete
DING\ReturnCode/LCReturnCode
2014-04-28-12-43-53-436 : 0x003A : Information : URL:
http://errors.norton.com?module=9999&error=2&build=Symantec&d=0&entsrc=N360…
2014-04-28-12-43-53-440 : 0x003A : Information : RunOnce: removed "N360"
--- snip ---
URL:
https://support.norton.com/sp/en/us/home/current/solutions/kb20090814170416…
--- quote ---
The Norton product that you want to install is compatible only with the
following operating systems:
Windows XP Home Service Pack 2 and later (32-bit only)
Windows XP Professional Service Pack 2 and later (32-bit only)
Windows XP Media Center Edition 2005 Service Pack 2 and later (32-bit only)
Windows Vista 32-bit and 64-bit Starter/Home Basic/Home
Premium/Business/Ultimate
The current versions of Norton AntiVirus, Norton Internet Security, Norton
360, and Norton Anti-Theft require Service Pack 1 or later for Windows Vista.)
Windows 7 32-bit and 64-bit Starter/Home Basic/Home
Premium/Professional/Ultimate
Windows 8 and Windows 8 Pro (32-bit and 64-bit)
If you have Windows 7, Vista, or XP, you can get the latest Service Pack by
running Windows Update.
--- quote ---
This is with default WINEPREFIX (WinVer == 'Windows XP SP3').
Relevant part of trace log:
--- snip ---
$ WINEDEBUG=+tid,+seh,+relay,+ver wine ./N360-TW-21.1.0-EN-US.exe >>log.txt
2>&1
...
0038:Call ntdll.VerSetConditionMask(00000000,00000000,00000002,00000001)
ret=6ac30caf
0038:Ret ntdll.VerSetConditionMask() retval=0000000000000008 ret=6ac30caf
0038:Call ntdll.VerSetConditionMask(00000008,00000000,00000001,00000001)
ret=6ac30cb5
0038:Ret ntdll.VerSetConditionMask() retval=0000000000000009 ret=6ac30cb5
0038:Call ntdll.VerSetConditionMask(00000009,00000000,00000020,00000003)
ret=6ac30cbd
0038:Ret ntdll.VerSetConditionMask() retval=0000000000018009 ret=6ac30cbd
0038:Call ntdll.VerSetConditionMask(00018009,00000000,00000010,00000003)
ret=6ac30cc5
0038:Ret ntdll.VerSetConditionMask() retval=000000000001b009 ret=6ac30cc5
0038:Call ntdll.VerSetConditionMask(0001b009,00000000,00000080,00000001)
ret=6ac30ccf
0038:Ret ntdll.VerSetConditionMask() retval=000000000021b009 ret=6ac30ccf
0038:Call KERNEL32.VerifyVersionInfoW(00bbe1d4,000000b3,0021b009,00000000)
ret=6ac30cf1
0038:trace:ver:RtlVerifyVersionInfo (0xbbe1d4,0xb3,0x21b009)
0038:Ret KERNEL32.VerifyVersionInfoW() retval=00000000 ret=6ac30cf1
0038:Call KERNEL32.VerifyVersionInfoW(00bbe1d4,000000b3,0021b009,00000000)
ret=6ac30d1d
0038:trace:ver:RtlVerifyVersionInfo (0xbbe1d4,0xb3,0x21b009)
0038:Ret KERNEL32.VerifyVersionInfoW() retval=00000000 ret=6ac30d1d
0038:Call msvcr100.memset(00bbe1d4,00000000,0000011c) ret=6ac30f42
0038:Ret msvcr100.memset() retval=00bbe1d4 ret=6ac30f42
0038:Call ntdll.VerSetConditionMask(00000000,00000000,00000002,00000001)
ret=6ac30f7a
0038:Ret ntdll.VerSetConditionMask() retval=0000000000000008 ret=6ac30f7a
0038:Call ntdll.VerSetConditionMask(00000008,00000000,00000001,00000001)
ret=6ac30f80
0038:Ret ntdll.VerSetConditionMask() retval=0000000000000009 ret=6ac30f80
0038:Call ntdll.VerSetConditionMask(00000009,00000000,00000020,00000001)
ret=6ac30f87
0038:Ret ntdll.VerSetConditionMask() retval=0000000000008009 ret=6ac30f87
0038:Call ntdll.VerSetConditionMask(00008009,00000000,00000010,00000003)
ret=6ac30f8f
0038:Ret ntdll.VerSetConditionMask() retval=000000000000b009 ret=6ac30f8f
0038:Call ntdll.VerSetConditionMask(0000b009,00000000,00000080,00000001)
ret=6ac30f99
0038:Ret ntdll.VerSetConditionMask() retval=000000000020b009 ret=6ac30f99
0038:Call KERNEL32.VerifyVersionInfoW(00bbe1d4,000000b3,0020b009,00000000)
ret=6ac30faf
0038:trace:ver:RtlVerifyVersionInfo (0xbbe1d4,0xb3,0x20b009)
0038:Ret KERNEL32.VerifyVersionInfoW() retval=00000000 ret=6ac30faf
0038:Call ntdll.VerSetConditionMask(00000000,00000000,00000002,00000003)
ret=6ac30fcb
0038:Ret ntdll.VerSetConditionMask() retval=0000000000000018 ret=6ac30fcb
0038:Call ntdll.VerSetConditionMask(00000018,00000000,00000001,00000003)
ret=6ac30fd2
0038:Ret ntdll.VerSetConditionMask() retval=000000000000001b ret=6ac30fd2
0038:Call ntdll.VerSetConditionMask(0000001b,00000000,00000020,00000003)
ret=6ac30fda
0038:Ret ntdll.VerSetConditionMask() retval=000000000001801b ret=6ac30fda
0038:Call ntdll.VerSetConditionMask(0001801b,00000000,00000010,00000003)
ret=6ac30fe2
0038:Ret ntdll.VerSetConditionMask() retval=000000000001b01b ret=6ac30fe2
0038:Call KERNEL32.VerifyVersionInfoW(00bbe1d4,00000033,0001b01b,00000000)
ret=6ac30fef
0038:trace:ver:RtlVerifyVersionInfo (0xbbe1d4,0x33,0x1b01b)
0038:Ret KERNEL32.VerifyVersionInfoW() retval=00000000 ret=6ac30fef
...
0038:Call msvcr100.vswprintf_s(09211686,00000054,6c2772f0
L"CEngineManager::CheckLaunchConditions(7777) : failed LaunchCondition:
CheckforMinOS",00bbe468) ret=6abd42e3
0038:Ret msvcr100.vswprintf_s() retval=00000053 ret=6abd42e3
--- snip ---
The problem is not really visible, one has to debug it out.
Source:
http://source.winehq.org/git/wine.git/blob/0463d01f151fb3d7c7acf26c7628683f…
--- snip ---
679 NTSTATUS WINAPI RtlVerifyVersionInfo( const RTL_OSVERSIONINFOEXW *info,
680 DWORD dwTypeMask, DWORDLONG dwlConditionMask )
681 {
682 RTL_OSVERSIONINFOEXW ver;
683 NTSTATUS status;
...
725 if(dwTypeMask &
(VER_MAJORVERSION|VER_MINORVERSION|VER_SERVICEPACKMAJOR|VER_SERVICEPACKMINOR))
726 {
727 unsigned char condition = 0;
728 BOOLEAN do_next_check = TRUE;
729
730 if(dwTypeMask & VER_MAJORVERSION)
731 condition = dwlConditionMask >> 1*3 & 0x07;
732 else if(dwTypeMask & VER_MINORVERSION)
733 condition = dwlConditionMask >> 0*3 & 0x07;
734 else if(dwTypeMask & VER_SERVICEPACKMAJOR)
735 condition = dwlConditionMask >> 5*3 & 0x07;
736 else if(dwTypeMask & VER_SERVICEPACKMINOR)
737 condition = dwlConditionMask >> 4*3 & 0x07;
738
739 if(dwTypeMask & VER_MAJORVERSION)
740 {
741 status = version_compare_values(ver.dwMajorVersion,
info->dwMajorVersion, condition);
742 do_next_check = (ver.dwMajorVersion == info->dwMajorVersion) &&
743 ((condition != VER_EQUAL) || (status == STATUS_SUCCESS));
744 }
745 if((dwTypeMask & VER_MINORVERSION) && do_next_check)
746 {
747 status = version_compare_values(ver.dwMinorVersion,
info->dwMinorVersion, condition);
748 do_next_check = (ver.dwMinorVersion == info->dwMinorVersion) &&
749 ((condition != VER_EQUAL) || (status == STATUS_SUCCESS));
750 }
...
--- snip ---
Multiple version info members can be verified at once (represented by type mask
and condition pair).
The code to extract the conditions is wrong (if-elseif-elseif.. single cond
var)
It captures only the condition for the first member present (type mask) and
subsequently uses this value for other members which might have different
conditions.
$ sha1sum N360-TW-21.1.0-EN-US.exe
aa05ccf9668e166ef28923d451f1c2ecad6f75f1 N360-TW-21.1.0-EN-US.exe
$ du -sh N360-TW-21.1.0-EN-US.exe
202M N360-TW-21.1.0-EN-US.exe
$ wine --version
wine-1.7.17-92-ge2bf516
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.