[Bug 38756] New: FutureMark SystemInformation diagnostics (.NET 4.0 app) crashes when clicking 'connect' (COM support for 'new' moniker and 'BIND_OPTS3' missing)
wine-bugs at winehq.org
wine-bugs at winehq.org
Sat Jun 13 16:11:06 CDT 2015
https://bugs.winehq.org/show_bug.cgi?id=38756
Bug ID: 38756
Summary: FutureMark SystemInformation diagnostics (.NET 4.0
app) crashes when clicking 'connect' (COM support for
'new' moniker and 'BIND_OPTS3' missing)
Product: Wine
Version: 1.7.45
Hardware: x86-64
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: -unknown
Assignee: wine-bugs at winehq.org
Reporter: focht at gmx.net
Distribution: ---
Hello folks,
split off from bug 27185 which is about Wine-Mono.
The installer installs the following prerequisites on its own:
* DirectX Jun 2010
* Microsoft .NET Framework 4 Client Profile 4.0.30319
* Microsoft Visual C++ 2010 x86 Redistributable 10.0.40219
.NET Framework 4.0 install only works right away if Wine-Mono has been removed
prior the install or Wine was built without Mono support as I do.
The first problem after installation is bug 15670
--- snip ---
Unhandled Exception: System.Windows.Markup.XamlParseException: The invocation
of the constructor on type 'Futuremark.PCMark7.PCMark7Gui.WelcomeWindow' that
matches the specified binding constraints threw an exception. --->
System.IO.IsolatedStorage.IsolatedStorageException: Unable to create the store
directory. (Exception from HRESULT: 0x80131468)
at
System.IO.IsolatedStorage.IsolatedStorageFile.GetRootDir(IsolatedStorageScope
scope, StringHandleOnStack retRootDir)
at
System.IO.IsolatedStorage.IsolatedStorageFile.InitGlobalsNonRoamingUser(IsolatedStorageScope
scope)
at
System.IO.IsolatedStorage.IsolatedStorageFile.GetRootDir(IsolatedStorageScope
scope)
at
System.IO.IsolatedStorage.IsolatedStorageFile.GetGlobalFileIOPerm(IsolatedStorageScope
scope)
at System.IO.IsolatedStorage.IsolatedStorageFile.Init(IsolatedStorageScope
scope)
at Futuremark.BenchmarkUtility.Identifier.set_Key(String value)
at Futuremark.PCMark7.PCMarkEssence.LicenseManager.ValidateKey(String key,
Boolean online)
at Futuremark.PCMark7.PCMarkEssence.LicenseManager..ctor(IOnlineMessenger
onlineMessenger)
at Futuremark.PCMark7.PCMarkEssence.UIController..ctor()
at Futuremark.PCMark7.PCMark7Gui.WelcomeWindow..ctor()
--- End of inner exception stack trace ---
--- snip ---
Next problem:
--- snip ---
002d:Call user32.MessageBoxW(00000000,0106f914 L"Initializing Futuremark
SystemInfo failed.\nPlease verify that version 4.0 or newer is installed
properly.",0106fea8 L"PCMark 7 - SystemInfo failure",00000000) ret=0545b07f
--- snip ---
http://community.futuremark.com/forum/showthread.php?181303-Problem-futuremark
Looks like a separate (COM) service component.
Trying to use the diagnosis tool which ought to connect to the service also
fails:
--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files/Futuremark/Futuremark SystemInfo
$ wine ./FMSIDiag.exe
...
fixme:advapi:ReportEventW
(0xcafe4242,0x0001,0x0000,0x00000401,(nil),0x0001,0x00000000,0x33bcac,(nil)):
stub
err:eventlog:ReportEventW L"Application: FMSIDiag.exe\nFramework Version:
v4.0.30319\nDescription: The application requested process termination through
System.Environment.FailFast(string message).\nMessage: Unrecoverable system
error.\nStack:\n at System.Environment.FailFast(System.String)\n at
MS.Internal.Invariant.FailFa"...
fixme:advapi:DeregisterEventSource (0xcafe4242) stub
--- snip ---
-> bug 32323 ('winetricks -q corefonts')
Running it again:
--- snip ---
...
Unhandled Exception: FMSIDiag.SystemInfoException: SystemInfo initialization
failed.
at FMSIDiag.SystemInfo2.Init(Boolean tryElevate)
at FMSIDiag.SystemInfo2.Init()
at FMSIDiag.Core.Connect()
at FMSIDiag.MainWindow.buttonBasicConnect_Click(Object sender,
RoutedEventArgs e)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target,
RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source,
RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender,
RoutedEventArgs args)
at System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
at System.Windows.Controls.Primitives.ButtonBase.OnClick()
at System.Windows.Controls.Button.OnClick()
--- snip ---
First-chance exception caught with managed debugger:
--- snip ---
Child SP IP Call Site
0559ce14 7b8455e1 [HelperMethodFrame: 0559ce14]
0559ce64 05039207 DomainBoundILStubClass.IL_STUB_PInvoke(System.String,
BIND_OPTS3 ByRef, System.Guid)
0559ce68 0503904c [InlinedCallFrame: 0559ce68]
FMSIDiag.UACManager.CoGetObject(System.String, BIND_OPTS3 ByRef, System.Guid)
0559cf38 0503904c FMSIDiag.UACManager.LaunchCOMObject(System.Guid, System.Guid)
0559cfac 05038dbd FMSIDiag.SystemInfo2.ThreadInit(Boolean)
...
--- snip ---
Relevant part of trace log:
--- snip ---
0040:Call ole32.CoGetObject(00dce0ac
L"new:{f9c82199-b002-41b4-8b00-0f1eca89425f}",054bce6c,054bcee8,054bce64)
ret=053a0e78
...
0040:Ret ole32.CoGetObject() retval=80070057 ret=053a0e78
...
0040:trace:seh:raise_exception code=e0434352 flags=1 addr=0x7b8455e1
ip=7b8455e1 tid=0040
0040:trace:seh:raise_exception info[0]=80070057
0040:trace:seh:raise_exception info[1]=00000000
0040:trace:seh:raise_exception info[2]=00000000
0040:trace:seh:raise_exception info[3]=00000000
0040:trace:seh:raise_exception info[4]=79140000
0040:trace:seh:raise_exception eax=7b83247d ebx=00000005 ecx=00000014
edx=054bcc44 esi=054bcce4 edi=054bccb0
0040:trace:seh:raise_exception ebp=054bcc88 esp=054bcc24 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00200283
0040:trace:seh:call_vectored_handlers calling handler at 0x791f5a7c
code=e0434352 flags=1
...
--- snip ---
Relevant .NET code:
--- snip ---
// FMSIDiag.SystemInfo2
private void ThreadInit(bool tryElevate)
{
if (this.m_FMSI != null)
{
return;
}
this.m_FMSI = UACManager.LaunchCOMObject(
new Guid("F9C82199-B002-41B4-8B00-0F1ECA89425F"),
new Guid("93382A45-8441-4A42-BE09-95C7D0550B94"));
if (this.m_FMSI != null)
{
this.m_FuturemarkSystemInfo = (IFuturemarkSystemInfo2)this.m_FMSI;
this.m_FuturemarkSystemInfoVersion =
(IFuturemarkSystemInfoVersion)this.m_FMSI;
this.m_FuturemarkSystemInfoMultiGPU =
(IFuturemarkSystemInfoMultiGPU)this.m_FMSI;
this.m_FuturemarkSystemInfoQuery = (IFuturemarkSystemInfoQuery)this.m_FMSI;
this.m_FuturemarkSystemInfoLegacyQuery =
(IFuturemarkSystemInfoLegacyQuery)this.m_FMSI;
this.m_FuturemarkSystemInfoQueryStorage =
(IFuturemarkSystemInfoQueryStorage)this.m_FMSI;
this.m_FuturemarkSystemInfoMonitoring =
(IFuturemarkSystemInfoMonitoring)this.m_FMSI;
this.m_Initialized = true;
}
}
...
// FMSIDiag.UACManager
[return: MarshalAs(UnmanagedType.Interface)]
public static object LaunchCOMObject(Guid Clsid, Guid InterfaceID)
{
string str = Clsid.ToString("B");
string pszName = "new:" + str;
UACManager.BIND_OPTS3 bIND_OPTS = default(UACManager.BIND_OPTS3);
bIND_OPTS.cbStruct = (uint)Marshal.SizeOf(bIND_OPTS);
bIND_OPTS.hwnd = IntPtr.Zero;
bIND_OPTS.dwClassContext = 4u;
object result = null;
try
{
result = UACManager.CoGetObject(pszName, ref bIND_OPTS, InterfaceID);
}
catch (Exception)
{
result = null;
}
return result;
}
--- snip ---
Registry entry of COM server:
--- snip ---
REGEDIT4
[HKEY_CLASSES_ROOT\CLSID\{F9C82199-B002-41B4-8B00-0F1ECA89425F}]
@="Futuremark SystemInfo v2 Class"
"AppID"="{1BF1C030-CE12-4A8A-A4E1-EDDCE7176799}"
"LocalizedString"="@C:\\Program Files\\Futuremark\\Futuremark
SystemInfo\\FMSISvc.exe,-101"
[HKEY_CLASSES_ROOT\CLSID\{F9C82199-B002-41B4-8B00-0F1ECA89425F}\LocalService]
@="\"C:\\Program Files\\Futuremark\\Futuremark SystemInfo\\FMSISvc.exe\""
[HKEY_CLASSES_ROOT\CLSID\{F9C82199-B002-41B4-8B00-0F1ECA89425F}\ProgID]
@="FuturemarkSystemInfo2.1"
[HKEY_CLASSES_ROOT\CLSID\{F9C82199-B002-41B4-8B00-0F1ECA89425F}\Programmable]
[HKEY_CLASSES_ROOT\CLSID\{F9C82199-B002-41B4-8B00-0F1ECA89425F}\TypeLib]
@="{0E985ACA-E998-460F-B705-8436E606F78C}"
[HKEY_CLASSES_ROOT\CLSID\{F9C82199-B002-41B4-8B00-0F1ECA89425F}\VersionIndependentProgID]
@="FuturemarkSystemInfo2"
--- snip ---
Article:
http://chrison.net/UACElevationInManagedCodeStartingElevatedCOMComponents.aspx
("UAC Elevation in Managed Code: Starting Elevated COM Components")
which is courtesy of:
https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/5706957f-b96b-4d2b-9559-9b8b089b0bc4/is-there-a-managed-equivalent-of-cocreateinstanceasadmin?forum=windowssecurity
Although the app .NET class is called 'UACManager' the code seems to contradict
this. The elevation moniker syntax is not used:
MSDN:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms679687%28v=vs.85%29.aspx
--- snip ---
Elevation:Administrator!new:{guid}
Elevation:Highest!new:{guid}
--- snip ---
What's new is the use of the 'new' moniker though:
http://thrysoee.dk/InsideCOM+/ch11e.htm ("The New Moniker")
and BIND_OPTS3:
MSDN:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa746553%28v=vs.85%29.aspx
$ sha1sum PCMark_7_v104_installer.zip
1a13ea91439ae4d81a153ca777ecb74e42394015 PCMark_7_v104_installer.zip
$ du -sh PCMark_7_v104_installer.zip
304M PCMark_7_v104_installer.zip
$ wine --version
wine-1.7.45
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