mgba-emu / mgba

mGBA Game Boy Advance Emulator
https://mgba.io/
Mozilla Public License 2.0
5.7k stars 786 forks source link

Fire Emblem / mgba 0.9.2 : Crash on M1 Mac when Bluetooth controller disconnects #2306

Closed patrickmetz closed 3 years ago

patrickmetz commented 3 years ago

mgba-branch: heads/0.9.2 revision: f6d5f51d231053cc8a1778b7a139096d2bcf7324 os: macOS Big Sur 11.5.2 64-bit cpu: Apple M1 gpu: Apple M1

I just got a segfault during a level of Fire Emblem. I thought the following debugging info might be helpful. This was the third crash I experienced with this game since I began playing last week. It crashed a few minutes after loading and playing the most recent saved game (attached as png). A subsequent attempt to play did not create an error.

EDIT: It's actually because of my Bluetooth controller disconnecting. See comments below.

Fire Emblem (USA, Australia)

Process: mGBA [70219] Path: /Applications/mGBA.app/Contents/MacOS/mGBA Identifier: com.endrift.mgba-qt Version: 0.9.2 (0.9.2) Code Type: X86-64 (Translated) Parent Process: ??? [1] Responsible: mGBA [70219] User ID: 501

Date/Time: 2021-09-13 10:34:43.509 +0200 OS Version: macOS 11.5.2 (20G95) Report Version: 12 Anonymous UUID: 9B5F6999-A9E2-4C37-B88B-7311B1E86DBE

Sleep/Wake UUID: 7B999FA4-7617-408F-BDA8-0DA781F6EDED

Time Awake Since Boot: 190000 seconds Time Since Wake: 84000 seconds

System Integrity Protection: enabled

Crashed Thread: 0 Dispatch queue: com.apple.main-thread

Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0x000000000000001a Exception Note: EXC_CORPSE_NOTIFY

Termination Signal: Segmentation fault: 11 Termination Reason: Namespace SIGNAL, Code 0xb Terminating Process: exc handler [70219]

VM Regions Near 0x1a: --> __TEXT 104cd0000-106b3c000 [ 30.4M] r-x/rwx SM=COW /Applications/mGBA.app/Contents/MacOS/mGBA

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 com.apple.framework.IOKit 0x00007fff22b7ed7a IOHIDDeviceGetValue + 12 1 com.endrift.mgba-qt 0x0000000104ef80e9 SDL_SYS_JoystickUpdate + 121 2 com.endrift.mgba-qt 0x0000000104e89b08 SDL_JoystickUpdate_REAL + 120 3 com.endrift.mgba-qt 0x0000000104d71394 QGBA::InputController::activeGamepadButtons(int) + 68 4 com.endrift.mgba-qt 0x0000000104d71b85 QGBA::InputController::testGamepad(int) + 421 5 com.endrift.mgba-qt 0x0000000104d74104 QtPrivate::QFunctorSlotObject<QGBA::InputController::InputController(int, QWidget, QObject)::$_0, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase, QObject, void, bool) + 36 6 com.endrift.mgba-qt 0x00000001061990af QMetaObject::activate(QObject, int, int, void) + 2623 7 com.endrift.mgba-qt 0x0000000106191c33 QObject::event(QEvent) + 51 8 com.endrift.mgba-qt 0x00000001050116fe QApplicationPrivate::notify_helper(QObject, QEvent) + 270 9 com.endrift.mgba-qt 0x0000000105014ad5 QApplication::notify(QObject, QEvent) + 8453 10 com.endrift.mgba-qt 0x0000000106172b90 QCoreApplication::notifyInternal2(QObject, QEvent) + 160 11 com.endrift.mgba-qt 0x00000001061b825a QTimerInfoList::activateTimers() + 906 12 com.endrift.mgba-qt 0x000000010545cb52 QCocoaEventDispatcherPrivate::activateTimersSourceCallback(void) + 18 13 com.apple.CoreFoundation 0x00007fff2055766c _CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORMFUNCTION + 17 14 com.apple.CoreFoundation 0x00007fff205575d4 CFRunLoopDoSource0 + 180 15 com.apple.CoreFoundation 0x00007fff2055734a CFRunLoopDoSources0 + 242 16 com.apple.CoreFoundation 0x00007fff20555d58 __CFRunLoopRun + 897 17 com.apple.CoreFoundation 0x00007fff20555310 CFRunLoopRunSpecific + 567 18 com.apple.HIToolbox 0x00007fff289fda83 RunCurrentEventLoopInMode + 292 19 com.apple.HIToolbox 0x00007fff289fd7e5 ReceiveNextEventCommon + 587 20 com.apple.HIToolbox 0x00007fff289fd583 _BlockUntilNextEventMatchingListInModeWithFilter + 70 21 com.apple.AppKit 0x00007fff22c87172 _DPSNextEvent + 864 22 com.apple.AppKit 0x00007fff22c85945 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1364 23 com.apple.AppKit 0x00007fff22c77c69 -[NSApplication run] + 586 24 com.endrift.mgba-qt 0x000000010545d75f QCocoaEventDispatcher::processEvents(QFlags) + 2175 25 com.endrift.mgba-qt 0x000000010616f011 QEventLoop::exec(QFlags) + 401 26 com.endrift.mgba-qt 0x000000010617328a QCoreApplication::exec() + 346 27 com.endrift.mgba-qt 0x0000000104cd8d89 main + 2297 28 com.endrift.mgba-qt 0x0000000104cd8484 start + 52

patrickmetz commented 3 years ago

It just crashed again, and I realized that the connection to my Xbox One Controller, connected via Bluetooth, is cut off when this happens.

patrickmetz commented 3 years ago

I figured out, that actually mgba is crashing when the controller disconnects for whatever reason. I can manually provoke this exact crash, when I manually disconnect the controller via Bluetooth menu.

endrift commented 3 years ago

Duplicate of #2270.