https://bugs.winehq.org/show_bug.cgi?id=50668
Bug ID: 50668 Summary: Submarine Titans crashes when the opening video should be played Product: Wine Version: 6.2 Hardware: x86-64 URL: https://www.fileplanet.com/archive/p-71450/Submarine-T itans-Demo OS: Linux Status: NEW Keywords: download, regression Severity: normal Priority: P2 Component: winegstreamer Assignee: wine-bugs@winehq.org Reporter: gyebro69@gmail.com CC: z.figura12@gmail.com Regression SHA1: d028217a56f61631ad577f51a7b0b5083bbfc825 Distribution: ---
The game crashes when the opening video is about to play:
err:virtual:virtual_setup_exception stack overflow 884 bytes in thread 0024 addr 0x7b06e51d stack 0x220c8c (0x220000-0x221000-0x320000)
This was introduced by commit d028217a56f61631ad577f51a7b0b5083bbfc825 winegstreamer: Use amt_to_wg_format() in decodebin_parser_source_query_accept().
With the previous commit the game plays the video then it gets to the main menu.
stdemo.exe md5sum: eb74fce386138981f75ec101ec2d9661
https://bugs.winehq.org/show_bug.cgi?id=50668
--- Comment #1 from Zebediah Figura z.figura12@gmail.com --- I seem to be getting the same stack overflow, with the demo, even with winegstreamer checked out to f0a0b9404ec (i.e. one before the offending commit).
I can tell why the stack overflow is happening, but I can't tell where the bug is. Can you please attach logs of the good and bad commits with WINEDEBUG=+gstreamer,+quartz,+strmbase GST_DEBUG=6?
https://bugs.winehq.org/show_bug.cgi?id=50668
--- Comment #2 from Béla Gyebrószki gyebro69@gmail.com --- (In reply to Zebediah Figura from comment #1)
I seem to be getting the same stack overflow, with the demo, even with winegstreamer checked out to f0a0b9404ec (i.e. one before the offending commit).
I can tell why the stack overflow is happening, but I can't tell where the bug is. Can you please attach logs of the good and bad commits with WINEDEBUG=+gstreamer,+quartz,+strmbase GST_DEBUG=6?
When WINEDEBUG is set the game throws an 'Internal error' with commit f0a0b9404ec too. Without WINEDEBUG set the video plays properly for me with f0a0b9404ec. Maybe I was wrong here and there's another commit to blame. Sorry about the confusion, then.
https://bugs.winehq.org/show_bug.cgi?id=50668
--- Comment #3 from Béla Gyebrószki gyebro69@gmail.com --- Created attachment 69383 --> https://bugs.winehq.org/attachment.cgi?id=69383 WINEDEBUG=+gstreamer,+quartz,+strmbase GST_DEBUG=6 against 7fa0855f
I've made another attempt at bisecting, now with WINEDEBUG=+gstreamer,+quartz,+strmbase GST_DEBUG=6. It seems the first commit when the 'Internal error' is shown is commit 7fa0855fa12bd962d5decf59995fcb4485bd54a8 winegstreamer: Use struct wg_format to convert from AM_MEDIA_TYPE to GstCaps.
https://bugs.winehq.org/show_bug.cgi?id=50668
--- Comment #4 from Béla Gyebrószki gyebro69@gmail.com --- Created attachment 69384 --> https://bugs.winehq.org/attachment.cgi?id=69384 WINEDEBUG=+gstreamer,+quartz,+strmbase GST_DEBUG=6 against fb096d54a82 (considered good)
https://bugs.winehq.org/show_bug.cgi?id=50668
--- Comment #5 from Zebediah Figura z.figura12@gmail.com --- Your symptoms are different from mine, and I'm increasingly suspecting that there's some memory corruption or something going on. Even in the "good" case there's this:
0024:trace:strmbase:strmbase_dump_media_type Dumping media type 0x1950b0: major type MEDIATYPE_Video, subtype MEDIASUBTYPE_RGB32, fixed size samples, format type FORMAT_VideoInfo. 0024:trace:strmbase:strmbase_dump_media_type Dumping format 0x838818: source (0,0)-(640,292), target (0,0)-(640,292), 0.0 sec/frame, size 640x-292, 1 planes, 32 bpp, compression 0, image size 747520.
** (wine:99334): CRITICAL **: 03:38:00.532: gst_video_info_to_caps: assertion 'info->finfo->format != GST_VIDEO_FORMAT_UNKNOWN' failed
which clearly doesn't seem to affect the functionality, but I really don't think it should happen.
https://bugs.winehq.org/show_bug.cgi?id=50668
--- Comment #6 from Zebediah Figura z.figura12@gmail.com --- With wine 7.0-rc2, the video doesn't crash for me, but I only see a black screen. Audio is fine. I'll try to debug it.
https://bugs.winehq.org/show_bug.cgi?id=50668
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|winegstreamer |quartz
--- Comment #7 from Zebediah Figura z.figura12@gmail.com --- I'm not sure if there ever was memory corruption; I may have been misreading the log.
What actually happens is that the game tries to autoplug an AVI into its own video filter chain. The first transform in the chain connects to our GStreamer filter just fine. While connecting the game's transform to its sink, however, something in the game's internal logic tries to reconnect the GStreamer filter to the transform, while proposing a flipped output from the transform sink.
This breaks with upstream Wine because we try our types first, so we end up proposing the unflipped output. The game doesn't reject that, but it does end up hitting the same code path, so it'll Reconnect() repeatedly until it runs out of stack.
The caps assertion happens because the size is negative, and GStreamer can't handle that.
https://bugs.winehq.org/show_bug.cgi?id=50668
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Fixed by SHA1| |9156e124f3f41ccdf2fc4b98cbf | |af1cbf47acf0a Resolution|--- |FIXED
--- Comment #8 from Zebediah Figura z.figura12@gmail.com --- Fixed by https://source.winehq.org/git/wine.git/commitdiff/9156e124f3f41ccdf2fc4b98cbfaf1cbf47acf0a.
https://bugs.winehq.org/show_bug.cgi?id=50668
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #9 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 7.0-rc3.