https://bugs.winehq.org/show_bug.cgi?id=19427
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|-unknown |wmi&wbemprox Summary|Generic failure of Radio |Radio Manager 1.4 (.NET 2.0 |Manager |app) fails on startup
--- Comment #14 from Anastasius Focht focht@gmx.net --- Hello folks,
confirming.
Prerequisite: 'winetricks -q dotnet20'
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files/Radionomy/RadioManager
$ WINEDEBUG=+tid,+seh,+wbemprox wine ./Radiomanager.exe >>log.txt 2>&1 ... 0023:trace:wbemprox:wbem_services_ExecQuery 0x1dccd8, L"WQL", L"SELECT OSLanguage FROM Win32_OperatingSystem", 0x00000010, (nil), 0x33ee50 0023:trace:wbemprox:grab_table returning 0x7de920d0 0023:trace:wbemprox:parse_query wql_parse returned 0 0023:trace:wbemprox:fill_os created 1 rows 0023:trace:wbemprox:EnumWbemClassObject_create 0x33ee50 0023:trace:wbemprox:EnumWbemClassObject_create returning iface 0x1dcd60 ... 0023:fixme:wbemprox:client_security_QueryBlanket 0023:fixme:wbemprox:client_security_Release 0x7de92344 0023:trace:wbemprox:enum_class_object_QueryInterface 0x1dcd60, {00000000-0000-0000-c000-000000000046}, 0x33ec68 0023:trace:wbemprox:enum_class_object_QueryInterface 0x1dcd60, {0000013d-0000-0000-c000-000000000046}, 0x33ec64 0023:fixme:wbemprox:client_security_SetBlanket 0x7de92344, 0x1dcd60, 4294967295, 0, L"<COLE_DEFAULT_PRINCIPAL>", 2, 3, (nil), 0x00000020 0023:fixme:wbemprox:client_security_Release 0x7de92344 0023:trace:wbemprox:enum_class_object_Clone 0x1dcd60, 0x33f0b0 0023:trace:wbemprox:EnumWbemClassObject_create 0x33f0b0 0023:trace:wbemprox:EnumWbemClassObject_create returning iface 0x1dcd98 ... 0023:fixme:wbemprox:client_security_QueryBlanket 0023:fixme:wbemprox:client_security_Release 0x7de92344 0023:trace:wbemprox:enum_class_object_QueryInterface 0x1dcd98, {00000000-0000-0000-c000-000000000046}, 0x33ec88 0023:trace:wbemprox:enum_class_object_QueryInterface 0x1dcd98, {0000013d-0000-0000-c000-000000000046}, 0x33ec84 0023:fixme:wbemprox:client_security_SetBlanket 0x7de92344, 0x1dcd98, 4294967295, 0, L"<COLE_DEFAULT_PRINCIPAL>", 2, 3, (nil), 0x00000020 0023:fixme:wbemprox:client_security_Release 0x7de92344 0023:trace:wbemprox:enum_class_object_Reset 0x1dcd98 0023:trace:wbemprox:enum_class_object_Next 0x1dcd98, -1, 1, 0x1b4610, 0xa7298c 0023:trace:wbemprox:create_class_object L"Win32_OperatingSystem", 0x1b4610 0023:trace:wbemprox:create_class_object returning iface 0x1ca6e0 ... 0023:trace:wbemprox:class_object_Get 0x1ca6e0, L"__GENUS", 00000000, 0x33f108, 0x33f1cc, 0x33f1c8 0023:trace:wbemprox:class_object_Get 0x1ca6e0, L"__PATH", 00000000, 0x33f0f0, 0x33f1b8, 0x33f1b4 0023:trace:wbemprox:class_object_GetNames 0x1ca6e0, (null), 00000040, {VT_EMPTY}, 0x33f0ec 0023:fixme:wbemprox:class_object_GetNames qualifier not supported 0023:trace:wbemprox:class_object_Get 0x1ca6e0, L"BuildNumber", 00000000, 0x33f118, 0xa730f0, 0xa730f4 0023:trace:seh:raise_exception code=e0434f4d flags=1 addr=0x7b83ac57 ip=7b83ac57 tid=0023 0023:trace:seh:raise_exception info[0]=80131501 0023:trace:seh:raise_exception eax=7b826c7d ebx=7b8bb000 ecx=80131501 edx=0033f028 esi=0033f0a4 edi=e0434f4d 0023:trace:seh:raise_exception ebp=0033f068 esp=0033f004 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000287 --- snip ---
Using a managed debugger:
--- snip --- (22.23): CLR exception - code e0434f4d (first chance) OS Thread Id: 0x23 (0) ESP EIP 0033f0f4 7b83ac57 [HelperMethodFrame: 0033f0f4] 0033f198 0434fa62 System.Management.ManagementException.ThrowWithExtendedInfo(System.Management.ManagementStatus) 0033f1d8 0434f989 System.Management.PropertyData.RefreshPropertyInfo() 0033f1e0 0434f8f9 System.Management.PropertyDataCollection+PropertyDataEnumerator.get_Current() 0033f1f0 0434ba02 Common.Translate.GetOSCultureInfo() 0033f224 043401f4 Usr.Winforms.Program.Main() 0033f4fc 79e88f63 [GCFrame: 0033f4fc] --- snip ---
The actual .NET code, decompiled with ILSpy from 'Common.dll':
--- snip --- // Common.Translate public static CultureInfo GetOSCultureInfo() { ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher(); managementObjectSearcher.get_Query().set_QueryString("SELECT OSLanguage FROM Win32_OperatingSystem"); ManagementObjectCollection managementObjectCollection = managementObjectSearcher.Get(); string text = string.Empty; using (ManagementObjectCollection.ManagementObjectEnumerator enumerator = managementObjectCollection.GetEnumerator()) { while (enumerator.MoveNext()) { ManagementObject managementObject = (ManagementObject)enumerator.get_Current(); PropertyDataCollection.PropertyDataEnumerator enumerator2 = managementObject.get_Properties().GetEnumerator(); try { while (enumerator2.MoveNext()) { PropertyData current = enumerator2.get_Current(); text = text + current.get_Value() + ","; } } finally { IDisposable disposable = enumerator2 as IDisposable; if (disposable != null) { disposable.Dispose(); } } } } text = text.Substring(0, text.get_Length() - 1); int num = int.Parse(text.Trim()); return CultureInfo.GetCultureInfo(num); } --- snip ---
The way the innermost property enumeration loop is written: only 'OSLanguage' type property is expected. WMI SQL 'SELECT OSLanguage FROM Win32_OperatingSystem' statement should take of this.
In the more detailed trace log one can see:
--- snip --- .. 002a:trace:wbemprox:class_object_GetNames 0x1798c8, (null), 00000040, {VT_EMPTY}, 0x33f180 002a:fixme:wbemprox:class_object_GetNames qualifier not supported 002a:Call oleaut32.SafeArrayCreateVector(00000008,00000000,00000014) ret=7e082f76 002a:trace:variant:SafeArrayCreateVector (8->VT_BSTR,0,20 002a:Call ntdll.RtlAllocateHeap(00110000,00000008,00000078) ret=7e184fb8 002a:Ret ntdll.RtlAllocateHeap() retval=001557f8 ret=7e184fb8 002a:Ret oleaut32.SafeArrayCreateVector() retval=00155808 ret=7e082f76 002a:Call oleaut32.SysAllocString(7e08d79e L"BuildNumber") ret=7e083028 002a:trace:ole:SysAllocStringLen L"BuildNumber" 002a:Call ntdll.RtlAllocateHeap(00110000,00000000,00000020) ret=7e1730db 002a:Ret ntdll.RtlAllocateHeap() retval=00179450 ret=7e1730db 002a:Ret oleaut32.SysAllocString() retval=00179454 ret=7e083028 002a:Call oleaut32.SafeArrayPutElement(00155808,0033f09c,00179454) ret=7e08304d 002a:trace:variant:SafeArrayPutElement (0x155808,0x33f09c,0x179454) 002a:trace:variant:SafeArrayLock (0x155808) 002a:trace:variant:SafeArrayPtrOfIndex (0x155808,0x33f09c,0x33efe0) 002a:Call ntdll.RtlAllocateHeap(00110000,00000000,00000020) ret=7e1730db 002a:Ret ntdll.RtlAllocateHeap() retval=00155878 ret=7e1730db 002a:trace:variant:SafeArrayUnlock (0x155808) 002a:Ret oleaut32.SafeArrayPutElement() retval=00000000 ret=7e08304d 002a:Call oleaut32.SysAllocString(7e08d7c8 L"Caption") ret=7e083028 002a:trace:ole:SysAllocStringLen L"Caption" ... --- snip ---
'GetNames' is probably called from the 'PropertyDataCollection.PropertyDataEnumerator' ctor/init to collect all management object properties. Unfortunately all (builtin) properties are returned here on that view. The active view should only contain 'OSLanguage' property.
$ sha1sum rm1401en_demo.zip ced55204bf3c1f0d1ccd3c5b959e9199f8985cd7 rm1401en_demo.zip
$ du -sh rm1401en_demo.zip 66M rm1401en_demo.zip
$ wine --version wine-1.7.17-92-ge2bf516
Regards