rpcs3 icon indicating copy to clipboard operation
rpcs3 copied to clipboard

Sometimes failed to exit game window(using qt window close button)

Open yuiiio opened this issue 1 year ago • 4 comments

using arch qt6-base 6.7.2-1 (QT_QPA_PLATFORM=wayland)

#0  0x000075c9656f0733 in clock_nanosleep () from /usr/lib/libc.so.6
#1  0x000075c9656fc827 in nanosleep () from /usr/lib/libc.so.6
#2  0x0000000000854b9b in Emulator::GracefulShutdown(bool, bool, bool) ()
#3  0x000075c960da16f7 in ?? () from /usr/lib/libQt6Core.so.6
#4  0x000075c96171b264 in QAction::activate(QAction::ActionEvent) () from /usr/lib/libQt6Gui.so.6
#5  0x000075c961e0e6d5 in ?? () from /usr/lib/libQt6Widgets.so.6

but using main_window's toolbar_stop works correct. https://github.com/RPCS3/rpcs3/blob/master/rpcs3/rpcs3qt/main_window.cpp#L3200

Emu.GracefulShutdown(false);

so I've changed rpcs3/rpcs3qt/gs_frame.cpp

https://github.com/RPCS3/rpcs3/blob/master/rpcs3/rpcs3qt/gs_frame.cpp#L1175

 bool gs_frame::event(QEvent* ev)
...
- Emu.GracefulShutdown(true, true);
+ Emu.GracefulShutdown(false);

seems works fine.

yuiiio avatar Jul 30 '24 23:07 yuiiio

We don't support Qt 6.7.2 yet, because it is a mess. The proposed fix can't be correct. It's either a bug/change in the new Qt version or something else is wrong in the emulator.

Also, where is the log file? There's no way to know what went wrong without a log file.

Megamouse avatar Jul 30 '24 23:07 Megamouse

sorry I failed to upload log first time. RPCS3.log

....
E SIG: Thread [rsx::thread] is too sleepy. Waiting for it 17116101.456µs already!
E SIG: Thread [rsx::thread] is too sleepy. Waiting for it 34260021.456µs already!
E SIG: Thread [rsx::thread] is too sleepy. Waiting for it 68376168.871µs already!

killed manualy(because stuck)

yuiiio avatar Jul 30 '24 23:07 yuiiio

seems enough only set async_op = false void GracefulShutdown(bool allow_autoexit = true, bool async_op = false, bool savestate = false);

 bool gs_frame::event(QEvent* ev)
...
- Emu.GracefulShutdown(true, true);
+ Emu.GracefulShutdown(true, false);

anyway idk why gs_frame:QEvent::Close is not same as main_window:toolbar_stop

yuiiio avatar Aug 02 '24 11:08 yuiiio

Because blocking the event is bad. But it should work even if it's async. I didn't have any issues for years and I also cannot reproduce this, so I'm assuming it's a different bug. Anyway, we don't support Qt 6.7 so we can't debug this anyway.

Megamouse avatar Aug 02 '24 15:08 Megamouse

@yuiiio what's the status of this issue , do you know?

Mrlinkwii avatar Dec 25 '24 00:12 Mrlinkwii

closing due to inactivity

Megamouse avatar Feb 04 '25 02:02 Megamouse