qiufuyu123 / CasioEmuNeo

卡西欧classwizard系列模拟器,支持调试,rop一件注入
GNU General Public License v3.0
38 stars 8 forks source link

i3wm下,切走窗口导致崩溃。 #9

Closed bczhc closed 6 months ago

bczhc commented 6 months ago

当i3wm为tabbed模式时,切走窗口会崩溃(但切换工作区不会(视频忘演示了))。

演示:

a.webm

Backtrace:

(gdb) bt
#0  0x0000556255abc16d in ImGui::EndTable() ()
#1  0x0000556255a0c800 in WatchWindow::Show (this=0x7ffc29f0bc18) at emulator/Gui/WatchWindow.cpp:58
#2  0x0000556255a0bf5a in DebugUi::PaintUi (this=0x7ffc29f0bb40) at emulator/Gui/Ui.cpp:71
#3  0x00005562559e54cc in main (argc=5, argv=0x7ffc29f0be28) at emulator/casioemu.cpp:155
bczhc commented 6 months ago

暂时没找到什么workaround,只能避免使用tabbed窗口,或者把调试窗口单独放到一个工作区。

bczhc commented 6 months ago

OK了一个workaround是 https://github.com/bczhc/CasioEmuNeo/commit/6794644f8ec830f220972ba7932052772ee51b44

qiufuyu123 commented 6 months ago

这个有点奇怪,windows上没法复现 可能是imgui兼容的神奇bug?

Physics365 commented 6 months ago

Windows 11 26100上的崩溃bug: 1.打开程序; 2.使用三指下滑手势回到桌面; 3.卡死。

Physics365 commented 6 months ago

https://github.com/qiufuyu123/CasioEmuNeo/assets/154725076/932f7d8d-b90f-4b41-a724-d9220fe1129a

qiufuyu123 commented 6 months ago

修复 @bczhc 根本原因是begintable要if判空

bczhc commented 6 months ago

确实,经测试没问题了。之前直接移掉EndTable的方法会导致寄存器列表渲染不正确。