[Bug 37371] EVE Probe reports 'ALError: ALResult(80004005) E_FAIL' (NV Optimus detection doesn't work)

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Nov 2 03:44:01 CST 2014


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

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |download
             Status|UNCONFIRMED                 |NEW
                URL|                            |http://files.eveprobe.ccpga
                   |                            |mes.com/eveprobe-0.82.6614.
                   |                            |0.msi
                 CC|                            |focht at gmx.net
            Summary|EVE Probe:  ALError:        |EVE Probe reports 'ALError:
                   |ALResult(80004005) E_FAIL:  |ALResult(80004005) E_FAIL'
                   |An undetermined error       |(NV Optimus detection
                   |occurred                    |doesn't work)
     Ever confirmed|0                           |1

--- Comment #2 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

confirming.

--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files/CCP/EVE Probe/launcher

$ wine ./eveprobe.exe
...
fixme:d3d11:D3D11CreateDevice stub: adapter 0x13e030, driver_type
D3D_DRIVER_TYPE_UNKNOWN, swrast (nil), flags 0, feature_levels 0x338e84, levels
0x1, sdk_version 7, device 0x338e9c, feature_level 0x338e80, context 0x338e90
No handlers could be found for logger "trinity"
Starting up Trinity through _trinity_dx9_deploy ...
fixme:win:EnumDisplayDevicesW ((null),0,0x3385d0,0x00000000), stub!
fixme:win:EnumDisplayDevicesW ((null),0,0x33902c,0x00000000), stub!
fixme:win:EnumDisplayDevicesW ((null),1,0x33902c,0x00000000), stub!
Unhandled exception in run()
Traceback (most recent call last):
  File "autoexec.py", line 414, in run
  File "autoexec.py", line 396, in run_protected
  File "infogatherer\__init__.py", line 110, in gather_info
  File "infogatherer\__init__.py", line 103, in getGpuInfo
  File "infogatherer\__init__.py", line 87, in getGpuDriverInfo
ALError: ALResult(80004005) E_FAIL: An undetermined error occurred
An exception has occurred. It has been logged in the log server as exception #1
--- snip ---

You can skip the wrapper using the following command line:

--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files/CCP/EVE Probe

$ wine ./bin/exefile.exe /lib=code.ccp /NoConsole
--- snip ---

The EVE Online client code is compiled stackless python and encrypted.
Unwrapping (https://bugs.winehq.org/show_bug.cgi?id=5657#c13) yields the
following:

--- snip ---
...
def getGpuDriverInfo(adapterInfo):
    driverInfo = adapterInfo.GetDriverInfo()
    results['gpu']['driver']['Version'] =
unicode(driverInfo.driverVersionString)
    results['gpu']['driver']['Date'] = unicode(driverInfo.driverDate)
    results['gpu']['driver']['Vendor'] = unicode(driverInfo.driverVendor)
    results['gpu']['driver']['IsOptimus'] = u'Yes' if driverInfo.isOptimus else
u'No'
    results['gpu']['driver']['IsAmdSwitchable'] = u'Yes' if
driverInfo.isAmdDynamicSwitchable else u'No'


def getGpuInfo():
    adapters = trinity.adapters
    adapterInfo = adapters.GetAdapterInfo(adapters.DEFAULT_ADAPTER)
    results['gpu']['Description'] = unicode(adapterInfo.description)
    results['gpu']['Driver'] = unicode(adapterInfo.driver)
    results['gpu']['VendorId'] = unicode(adapterInfo.vendorID)
    results['gpu']['DeviceId'] = unicode(adapterInfo.deviceID)
    results['gpu']['TrinityPlatform'] = unicode(trinity.platform)
    getGpuDriverInfo(adapterInfo)


def gather_info():
    getOsVersion()
    getProcessorInfo()
    getRAMInfo()
    getGpuInfo()
    return results


__all__ = ['gather_info']
--- snip ---

line 87:

--- snip ---
    results['gpu']['driver']['IsOptimus'] = u'Yes' if driverInfo.isOptimus else
u'No'
--- snip ---

The property for NVIDIA Optimus detection is not set.

The native code that does the job is likely located in 'd3dinfo.pyd' and one of
these '_trinity_dx9_deploy.dll', '_trinity_dx9_internal.dll' components.

--- snip ---
Wine-dbg>bt
Backtrace:
=>0 0xf70fef48 D3D11CreateDevice(adapter=0x12fa60,
driver_type=D3D_DRIVER_TYPE_UNKNOWN, swrast=(nil), flags=0,
feature_levels=0x338e84, levels=0x1, sdk_version=0x7, device=0x338e9c,
feature_level=0x338e80, context=0x338e90)
[/home/focht/projects/wine/wine.repo/src/dlls/d3d11/d3d11_main.c:51] in d3d11
(0x003390c8)
  1 0x046ecd23 in d3dinfo.pyd (+0xcd22) (0x00339114)
  2 0x046ededc in d3dinfo.pyd (+0xdedb) (0x00339164)
  3 0x046ee41e in d3dinfo.pyd (+0xe41d) (0x003391c0)
  4 0x046f070c in d3dinfo.pyd (+0x1070b) (0x003391f0)
  5 0x1e0268e6 in python27 (+0x268e5) (0x025bddd0)

Wine-dbg>info share
Module    Address            Debug info    Name (107 modules)
PE      340000-  376000    Export          _yaml.pyd
PE      400000-  431000    Export          exefile
PE     46e0000- 477f000    Export          d3dinfo.pyd
PE    10000000-10330000    Export          blue
PE    1e000000-1e3b0000    Export          python27
--- snip ---

You could ask them how they did NV Optimus detection since there are several
more are less documented ways ('EnumDisplayDevices' with
'IDXGIAdapter::GetDesc' adapter order comparison,
'IDirect3D9::GetAdapterIdentifier' etc.).

But even if Wine doesn't behave correctly, the property should be still
non-null.
I guess this is rather crappy coding on the client side hence I don't see a
compelling reason to waste more time with this.

'IsAmdSwitchable' property might suffer from similar problem.

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