[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