[Bug 45366] New: A.R.E.S. Extinction Agenda 1.x (.NET 2.0, XNA 3.1 game) crashes during intro ('quartz' BasicAudio_put_Volume must return E_NOTIMPL if audio renderer filter not present )

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Jun 23 14:10:01 CDT 2018


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

            Bug ID: 45366
           Summary: A.R.E.S. Extinction Agenda 1.x (.NET 2.0, XNA 3.1
                    game) crashes during intro ('quartz'
                    BasicAudio_put_Volume must return E_NOTIMPL if audio
                    renderer filter not present)
           Product: Wine
           Version: 3.11
          Hardware: x86-64
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: quartz
          Assignee: wine-bugs at winehq.org
          Reporter: focht at gmx.net
      Distribution: ---

Hello folks,

continuation of bug 26369

Workarounds for prerequisite bugs needed:

* bug 34622 ("Multiple games need CLSID_DMOWrapperFilter/DMO Wrapper Filter
'{94297043-bd82-4dfd-b0de-8177739c6d20}', 'qasf.dll' (Neocron, Age of empires
III Steam, .NET XNA 3.x/4.x games using Media classes)")
* bug 45365 ("Multiple .NET XNA 3.x/4.x games using
Microsoft.Xna.Framework.Media classes crash due to IWMPCore3::newMedia stub")
* bug 26369 ("A.R.E.S. Extinction Agenda 1.x (.NET 2.0, XNA 3.1 game) crashes
during intro ('quartz' FilterGraph2_Connect should translate HRESULT of
failures more correctly)")

Trace log:

--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files/ARES - Demo

$ file *.{dll,exe}
AssetLoader.dll: PE32 executable (DLL) (console) Intel 80386 Mono/.Net
assembly, for MS Windows
FlatRedBall.dll: PE32 executable (DLL) (console) Intel 80386 Mono/.Net
assembly, for MS Windows
X10.FRB.dll:     PE32 executable (DLL) (console) Intel 80386 Mono/.Net
assembly, for MS Windows
ARES.exe:        PE32 executable (GUI) Intel 80386 Mono/.Net assembly, for MS
Windows
unins000.exe:    PE32 executable (GUI) Intel 80386, for MS Windows

$ WINEDEBUG=+seh,+relay,+quartz,+msacm wine ./ARES.exe >>log.txt 2>&1
...
0045:Ret  window proc 0x1002a270
(hwnd=0x2009a,msg="Microsoft.Xna.Framework.Media.WmpProxyThread",wp=00000000,lp=00000000)
retval=00000000 
...
0045:Call
msacm32.acmStreamOpen(09cded94,00000000,072f21e8,072f3e78,00000000,00000000,00000000,00000000)
ret=7a71a231
0045:trace:msacm:acmStreamOpen (0x9cded94, (nil), 0x72f21e8, 0x72f3e78, (nil),
0, 0, 0)
0045:trace:msacm:acmStreamOpen src [wFormatTag=353, nChannels=2,
nSamplesPerSec=44100, nAvgBytesPerSec=24002, nBlockAlign=8917,
wBitsPerSample=16, cbSize=10]
0045:trace:msacm:acmStreamOpen dst [wFormatTag=1, nChannels=2,
nSamplesPerSec=44100, nAvgBytesPerSec=176400, nBlockAlign=4, wBitsPerSample=16,
cbSize=0]
...
0045:trace:msacm:acmStreamOpen => (512)
0045:Ret  msacm32.acmStreamOpen() retval=00000200 ret=7a71a231
0045:fixme:quartz:ACMWrapper_SetMediaType acmStreamOpen returned 512 
...
0045:trace:quartz:ACMWrapper_SetMediaType Unable to find a suitable ACM
decompressor
0045:trace:quartz:ACMWrapper_SetMediaType Connection refused
...
0045:trace:quartz:FilterGraph2_Connect Cannot connect to filter (80040207),
trying next one
...
0045:trace:quartz:FilterGraph2_RemoveFilter (0x70e04f0/0x70e04f4)->(0x72f4408)
0045:trace:quartz:FilterGraph2_RemoveFilter Removing filter L"ACM Wrapper"
...
0045:trace:quartz:ACMWrapper_BreakConnect (0x72f4408)->(0)
0045:trace:quartz:FilterGraph2_RemoveFilter Disconnect 2: 00000001
0045:trace:quartz:FilterGraph2_RemoveFilter Disconnect 2: 00000001
...
0045:trace:quartz:ACMWrapper_BreakConnect (0x72f4408)->(0) 
...
0045:trace:quartz:EnumMonikerImpl_Next (0x72f4088)->(1, 0x9cdf050, 0x9cdf054)
0045:trace:quartz:EnumMonikerImpl_Next -- fetched 0
0045:trace:quartz:EnumMonikerImpl_Release (0x72f4088)->() Release from 1 
...
0045:trace:quartz:FilterGraph2_Connect --> 80040217
...
0045:Call msvcr90._CIlog10() ret=1002e668
0045:Ret  msvcr90._CIlog10() retval=3fd00020 ret=1002e668
0045:trace:quartz:BasicAudio_put_Volume (0x70e04f0/0x70e0500)->(-1204)
0045:trace:quartz:MediaControl_Stop (0x70e04f0/0x70e04f8)->()  
...
0037:Call KERNEL32.RaiseException(e0434f4d,00000001,00000001,0033e934)
ret=79f97065
0037:trace:seh:raise_exception code=e0434f4d flags=1 addr=0x7b446fe6
ip=7b446fe6 tid=0037
0037:trace:seh:raise_exception  info[0]=80131509
0037:trace:seh:raise_exception  eax=7b4356b1 ebx=0015c268 ecx=00000000
edx=0033e914 esi=0033e914 edi=0033e8e0
0037:trace:seh:raise_exception  ebp=0033e8b8 esp=0033e854 cs=330023 ds=3966002b
es=33002b fs=f7c80063 gs=7bd0006b flags=00200212
0037:trace:seh:call_stack_handlers calling handler at 0x79f9a3c8 code=e0434f4d
flags=1
0037:Call
msvcr80._except_handler4_common(7a381240,79e717fb,0033e860,0033e94c,0033e57c,0033e46c)
ret=79f9a3e7
0037:trace:seh:_except_handler4_common exception e0434f4d flags=1 at 0x7b446fe6
handler=0x79f9a3c8 0x33e57c 0x33e46c cookie=31f57880 scope table=0x79f97080
cookies=-2/0,-72/0
0037:trace:seh:_except_handler4_common level 0 prev -2 filter 0x79f9709c
0037:trace:seh:_except_handler4_common filter returned CONTINUE_SEARCH
0037:trace:seh:_except_handler4_common reached -2, returning
ExceptionContinueSearch 
...
--- snip ---

Debugging:

--- snip ---
...
004b:fixme:quartz:ACMWrapper_SetMediaType acmStreamOpen returned 512

Stopped on breakpoint 2 at 0x7a735684 BasicAudio_put_Volume
[/home/focht/projects/wine/mainline-src/dlls/quartz/filtergraph.c:3131] in
quartz
BasicAudio_put_Volume () at
/home/focht/projects/wine/mainline-src/dlls/quartz/filtergraph.c:3131
3131    {

Wine-dbg>bt
Backtrace:
=>0 0x7a735684 BasicAudio_put_Volume(iface=0x70ff8f8, lVolume=0xfffffb4c)
[/home/focht/projects/wine/mainline-src/dlls/quartz/filtergraph.c:3131] in
quartz (0x0989f5c8)
  1 0x1002ed4e in microsoft.xna.framework (+0x2ed4d) (0x0989f5e0)
  2 0x1002ee0e in microsoft.xna.framework (+0x2ee0d) (0x0989f600)
  3 0x1002da63 in microsoft.xna.framework (+0x2da62) (0x0989f610)
  4 0x09af74ca (0x0989f67c)
  5 0x09af7313 (0x0989f6dc)
  6 0x793d7a7b in mscorlib.ni (+0x317a7a) (0x0105cfb4)

...
3131    {
Wine-dbg>n
3132        IFilterGraphImpl *This = impl_from_IBasicAudio(iface);
Wine-dbg>n
3136        TRACE("(%p/%p)->(%d)\n", This, iface, lVolume);
Wine-dbg>n
3138        EnterCriticalSection(&This->cs);
Wine-dbg>n
3140        hr = GetTargetInterface(This, &IID_IBasicAudio,
(LPVOID*)&pBasicAudio);
Wine-dbg>n
3142        if (hr == S_OK)
Wine-dbg>n
3145        LeaveCriticalSection(&This->cs);
Wine-dbg>n
3147        return hr;

Wine-dbg>p hr
0x80004002
--- snip ---

0x80004002 -> E_NOINTERFACE

This HRESULT is persisted and leads later to unexpected failure.

MSDN:
https://msdn.microsoft.com/en-us/library/windows/desktop/dd389538(v=vs.85).aspx

--- quote ---
IBasicAudio::put_Volume method
...

Return value

Returns an HRESULT value. Possible values include the following.
Return code    Description

E_FAIL The underlying audio device returned an error.

E_INVALIDARG The value of lVolume is invalid.

E_NOTIMPL The filter graph does not contain an audio renderer filter. (Possibly
the source does not contain an audio stream.)

S_OK Success.
--- quote ---

Source:
https://source.winehq.org/git/wine.git/blob/HEAD:/dlls/quartz/filtergraph.c#l3128

--- snip ---
3128 /*** IBasicAudio methods ***/
3129 static HRESULT WINAPI BasicAudio_put_Volume(IBasicAudio *iface, LONG
lVolume)
3130 {
3131     IFilterGraphImpl *This = impl_from_IBasicAudio(iface);
3132     IBasicAudio* pBasicAudio;
3133     HRESULT hr;
3134 
3135     TRACE("(%p/%p)->(%d)\n", This, iface, lVolume);
3136 
3137     EnterCriticalSection(&This->cs);
3138 
3139     hr = GetTargetInterface(This, &IID_IBasicAudio,
(LPVOID*)&pBasicAudio);
3140 
3141     if (hr == S_OK)
3142         hr = IBasicAudio_put_Volume(pBasicAudio, lVolume);
3143 
3144     LeaveCriticalSection(&This->cs);
3145 
3146     return hr;
3147 }
--- snip ---

Since the filter graph was teared down at this point (see bug 26369), E_NOTIMPL
is more appropriate.

If this one and bug 26369 are fixed the intro crash with builtin 'quartz' is
gone.

$ sha1sum ARES_Demo_setup.exe 
042abbabd5f6b1bbe7418acba7c4cdd9d9df34f6  ARES_Demo_setup.exe

$ du -sh ARES_Demo_setup.exe 
118M    ARES_Demo_setup.exe

$ wine --version
wine-3.11

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