[Bug 19427] Radio Manager 1.4 (.NET 2.0 app) fails on startup

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Apr 27 15:26:57 CDT 2014


https://bugs.winehq.org/show_bug.cgi?id=19427

Anastasius Focht <focht at 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 at 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

-- 
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