libretro / RetroArch

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
http://www.libretro.com
GNU General Public License v3.0
10.25k stars 1.83k forks source link

App crashes when SteelSeries Nimbus controller connects // OS X 10.12.4 [$25] #4816

Open jonmcclay opened 7 years ago

jonmcclay commented 7 years ago

Description

As soon as my bluetooth controller connects to the computer, RetroArch crashes. If I re-open the app while the controller connects it crashes

Expected behavior

Controller to work

Actual behavior

App Crashes

I created a video demonstrating my issue: https://www.youtube.com/watch?v=qgNdsSXVO0E

--- There is a **[$25 open bounty](https://www.bountysource.com/issues/43961118-app-crashes-when-steelseries-nimbus-controller-connects-os-x-10-12-4?utm_campaign=plugin&utm_content=tracker%2F296058&utm_medium=issues&utm_source=github)** on this issue. Add to the bounty at [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F296058&utm_medium=issues&utm_source=github).
jonmcclay commented 7 years ago

bounty added

ml- commented 7 years ago

@jonmcclay Do you have any other controllers to test this behavior? I can reproduce this on Android (Fire TV) and the Fire TV-Gamecontroller, when the controller suddenly disconnects and reconnects.

jonmcclay commented 7 years ago

the only different bluetooth controller I have is a PS3 controller. I was able to pair that with my computer and verified it was working properly.

jonmcclay commented 7 years ago

I thought I would try a nightly build to see if there was any difference.

same problem with the nimbus controller

chillednems commented 7 years ago

If this can help I have a crash log for this issue. I have been having this one for a while too!

Process: RetroArch [38546] Path: /Applications/RetroArch.app/Contents/MacOS/RetroArch Identifier: libretro.RetroArch Version: 1.6.0 (1.6.0) Code Type: X86-64 (Native) Parent Process: ??? [1] Responsible: RetroArch [38546] User ID: 502

Date/Time: 2017-07-20 02:23:41.117 -0400 OS Version: Mac OS X 10.12.5 (16F73) Report Version: 12

Time Awake Since Boot: 100000 seconds Time Since Wake: 930 seconds

System Integrity Protection: disabled

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

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

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

VM Regions Near 0x8: --> __TEXT 0000000100000000-00000001001d4000 [ 1872K] r-x/rwx SM=COW /Applications/RetroArch.app/Contents/MacOS/RetroArch

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 libretro.RetroArch 0x00000001000d8a8c iohidmanager_hid_device_add + 1203 1 com.apple.framework.IOKit 0x00007fff86e421d8 IOHIDManagerDeviceApplier + 156 2 com.apple.CoreFoundation 0x00007fff84e7e9b2 CFSetApplyFunction_block_invoke + 18 3 com.apple.CoreFoundation 0x00007fff84e6ac8a CFBasicHashApply + 122 4 com.apple.CoreFoundation 0x00007fff84e7e959 CFSetApplyFunction + 185 5 com.apple.framework.IOKit 0x00007fff86e4343c IOHIDManagerInitialEnumCallback + 58 6 com.apple.CoreFoundation 0x00007fff84ed0321 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17 7 com.apple.CoreFoundation 0x00007fff84eb1197 CFRunLoopDoSources0 + 423 8 com.apple.CoreFoundation 0x00007fff84eb0716 __CFRunLoopRun + 934 9 com.apple.CoreFoundation 0x00007fff84eb0114 CFRunLoopRunSpecific + 420 10 com.apple.HIToolbox 0x00007fff84411ebc RunCurrentEventLoopInMode + 240 11 com.apple.HIToolbox 0x00007fff84411bf9 ReceiveNextEventCommon + 184 12 com.apple.HIToolbox 0x00007fff84411b26 _BlockUntilNextEventMatchingListInModeWithFilter + 71 13 com.apple.AppKit 0x00007fff829aaa54 _DPSNextEvent + 1120 14 com.apple.AppKit 0x00007fff831267ee -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 2796 15 com.apple.AppKit 0x00007fff8299f3db -[NSApplication run] + 926 16 com.apple.AppKit 0x00007fff82969e0e NSApplicationMain + 1237 17 libretro.RetroArch 0x0000000100001828 start + 52

Thread 1: 0 libsystem_kernel.dylib 0x00007fff9a75944e __workq_kernreturn + 10 1 libsystem_pthread.dylib 0x00007fff9a843621 _pthread_wqthread + 1426 2 libsystem_pthread.dylib 0x00007fff9a84307d start_wqthread + 13

Thread 2: 0 libsystem_kernel.dylib 0x00007fff9a75944e __workq_kernreturn + 10 1 libsystem_pthread.dylib 0x00007fff9a843621 _pthread_wqthread + 1426 2 libsystem_pthread.dylib 0x00007fff9a84307d start_wqthread + 13

Thread 3: 0 libsystem_kernel.dylib 0x00007fff9a75944e __workq_kernreturn + 10 1 libsystem_pthread.dylib 0x00007fff9a843621 _pthread_wqthread + 1426 2 libsystem_pthread.dylib 0x00007fff9a84307d start_wqthread + 13

Thread 4:: Dispatch queue: NSCGSDisableUpdates 0 libsystem_kernel.dylib 0x00007fff9a75134a mach_msg_trap + 10 1 libsystem_kernel.dylib 0x00007fff9a750797 mach_msg + 55 2 com.apple.SkyLight 0x00007fff96942db3 _CGSReenableUpdateForConnectionSync + 99 3 com.apple.SkyLight 0x00007fff96a8f52e CGSUpdateManager::enable_update(unsigned long long) + 532 4 libdispatch.dylib 0x00007fff9a5fd524 _dispatch_call_block_and_release + 12 5 libdispatch.dylib 0x00007fff9a5f48fc _dispatch_client_callout + 8 6 libdispatch.dylib 0x00007fff9a60a9a0 _dispatch_queue_serial_drain + 896 7 libdispatch.dylib 0x00007fff9a5fd306 _dispatch_queue_invoke + 1046 8 libdispatch.dylib 0x00007fff9a603020 _dispatch_queue_override_invoke + 369 9 libdispatch.dylib 0x00007fff9a5f66b5 _dispatch_root_queue_drain + 476 10 libdispatch.dylib 0x00007fff9a5f648c _dispatch_worker_thread3 + 99 11 libsystem_pthread.dylib 0x00007fff9a8435a2 _pthread_wqthread + 1299 12 libsystem_pthread.dylib 0x00007fff9a84307d start_wqthread + 13

Thread 5: 0 libsystem_kernel.dylib 0x00007fff9a75944e __workq_kernreturn + 10 1 libsystem_pthread.dylib 0x00007fff9a843621 _pthread_wqthread + 1426 2 libsystem_pthread.dylib 0x00007fff9a84307d start_wqthread + 13

Thread 6: 0 libsystem_kernel.dylib 0x00007fff9a75944e __workq_kernreturn + 10 1 libsystem_pthread.dylib 0x00007fff9a843621 _pthread_wqthread + 1426 2 libsystem_pthread.dylib 0x00007fff9a84307d start_wqthread + 13

Thread 7: 0 libsystem_kernel.dylib 0x00007fff9a75944e __workq_kernreturn + 10 1 libsystem_pthread.dylib 0x00007fff9a843621 _pthread_wqthread + 1426 2 libsystem_pthread.dylib 0x00007fff9a84307d start_wqthread + 13

Thread 8: 0 libsystem_kernel.dylib 0x00007fff9a75944e __workq_kernreturn + 10 1 libsystem_pthread.dylib 0x00007fff9a84348e _pthread_wqthread + 1023 2 libsystem_pthread.dylib 0x00007fff9a84307d start_wqthread + 13

Thread 9: 0 libsystem_kernel.dylib 0x00007fff9a758bf2 __psynch_cvwait + 10 1 libsystem_pthread.dylib 0x00007fff9a8447fa _pthread_cond_wait + 712 2 libretro.RetroArch 0x00000001000de6ad threaded_worker + 147 3 libretro.RetroArch 0x0000000100079620 thread_wrap + 20 4 libsystem_pthread.dylib 0x00007fff9a84393b _pthread_body + 180 5 libsystem_pthread.dylib 0x00007fff9a843887 _pthread_start + 286 6 libsystem_pthread.dylib 0x00007fff9a84308d thread_start + 13

Thread 10: 0 libsystem_kernel.dylib 0x00007fff9a75139e semaphore_timedwait_trap + 10 1 libdispatch.dylib 0x00007fff9a60cb09 _os_semaphore_timedwait + 72 2 libdispatch.dylib 0x00007fff9a5fd864 _dispatch_semaphore_wait_slow + 58 3 libdispatch.dylib 0x00007fff9a5f8290 _dispatch_worker_thread + 275 4 libsystem_pthread.dylib 0x00007fff9a84393b _pthread_body + 180 5 libsystem_pthread.dylib 0x00007fff9a843887 _pthread_start + 286 6 libsystem_pthread.dylib 0x00007fff9a84308d thread_start + 13

Thread 11:: com.apple.audio.IOThread.client 0 libsystem_kernel.dylib 0x00007fff9a75134a mach_msg_trap + 10 1 libsystem_kernel.dylib 0x00007fff9a750797 mach_msg + 55 2 com.apple.audio.CoreAudio 0x00007fff84a1b935 HALB_MachPort::SendMessageWithReply(unsigned int, unsigned int, unsigned int, unsigned int, mach_msg_header_t, bool, unsigned int) + 127 3 com.apple.audio.CoreAudio 0x00007fff84a1b8a6 HALB_MachPort::SendSimpleMessageWithSimpleReply(unsigned int, unsigned int, int, int&, bool, unsigned int) + 42 4 com.apple.audio.CoreAudio 0x00007fff84a188d0 HALC_ProxyIOContext::IOWorkLoop() + 1196 5 com.apple.audio.CoreAudio 0x00007fff84a18264 HALC_ProxyIOContext::IOThreadEntry(void) + 128 6 com.apple.audio.CoreAudio 0x00007fff84a17fa3 HALB_IOThread::Entry(void*) + 75 7 libsystem_pthread.dylib 0x00007fff9a84393b _pthread_body + 180 8 libsystem_pthread.dylib 0x00007fff9a843887 _pthread_start + 286 9 libsystem_pthread.dylib 0x00007fff9a84308d thread_start + 13

Thread 12:: com.apple.NSEventThread 0 libsystem_kernel.dylib 0x00007fff9a75134a mach_msg_trap + 10 1 libsystem_kernel.dylib 0x00007fff9a750797 mach_msg + 55 2 com.apple.CoreFoundation 0x00007fff84eb1434 CFRunLoopServiceMachPort + 212 3 com.apple.CoreFoundation 0x00007fff84eb08c1 CFRunLoopRun + 1361 4 com.apple.CoreFoundation 0x00007fff84eb0114 CFRunLoopRunSpecific + 420 5 com.apple.AppKit 0x00007fff82af7f02 _NSEventThread + 205 6 libsystem_pthread.dylib 0x00007fff9a84393b _pthread_body + 180 7 libsystem_pthread.dylib 0x00007fff9a843887 _pthread_start + 286 8 libsystem_pthread.dylib 0x00007fff9a84308d thread_start + 13

Thread 0 crashed with X86 Thread State (64-bit): rax: 0x0000000000000000 rbx: 0x0000000000000018 rcx: 0x0000000000000000 rdx: 0x00000001010d0ed0 rdi: 0x0000000000000000 rsi: 0x0000000000000000 rbp: 0x00007fff5fbfe430 rsp: 0x00007fff5fbfe3b0 r8: 0x0000000000000111 r9: 0x0000000000000018 r10: 0x00007fff9feccc30 r11: 0x000000010181de20 r12: 0x00000001028c0400 r13: 0x0000000000000004 r14: 0x00000001028c0410 r15: 0x000000000000000c rip: 0x00000001000d8a8c rfl: 0x0000000000010246 cr2: 0x0000000000000008

Logical CPU: 6 Error Code: 0x00000004 Trap Number: 14

Binary Images: 0x100000000 - 0x1001d3fff +libretro.RetroArch (1.6.0 - 1.6.0) /Applications/RetroArch.app/Contents/MacOS/RetroArch 0x104fa7000 - 0x104fd1fff GLRendererFloat (14.0.16) <8D11C08E-8249-38DB-9856-BFC01EEDE0CB> /System/Library/Frameworks/OpenGL.framework/Resources/GLRendererFloat.bundle/GLRendererFloat 0x1090b2000 - 0x109258fff GLEngine (14.0.16) <1999FBF9-0B82-34B1-8876-87B4F82101BB> /System/Library/Frameworks/OpenGL.framework/Resources/GLEngine.bundle/GLEngine 0x109400000 - 0x1094c6ffb com.apple.AMDRadeonX4000GLDriver (1.51.8 - 1.5.1) <2AADF4EB-5837-398B-A646-7FE59912E3F3> /System/Library/Extensions/AMDRadeonX4000GLDriver.bundle/Contents/MacOS/AMDRadeonX4000GLDriver 0x109600000 - 0x109678ff7 com.apple.driver.AppleIntelHD5000GraphicsMTLDriver (10.25.13 - 10.2.5) <77FF34DB-2688-393A-BBBA-456DF3834B7F> /System/Library/Extensions/AppleIntelHD5000GraphicsMTLDriver.bundle/Contents/MacOS/AppleIntelHD5000GraphicsMTLDriver 0x10a000000 - 0x10a55bff7 com.apple.driver.AppleIntelHD5000GraphicsGLDriver (10.25.13 - 10.2.5) <2C0CF883-843A-3CCF-BE6C-2AA7DE5F4E61> /System/Library/Extensions/AppleIntelHD5000GraphicsGLDriver.bundle/Contents/MacOS/AppleIntelHD5000GraphicsGLDriver 0x10a76e000 - 0x10acacff3 ATIRadeonX4000SCLib.dylib (1.51.8.1) <642EBBB8-5C6F-304F-BFBD-F6BE09DD2E9A> /System/Library/Extensions/AMDRadeonX4000GLDriver.bundle/Contents/MacOS/ATIRadeonX4000SCLib.dylib 0x10ccd4000 - 0x10cce1fff com.apple.iokit.IOHIDLib (2.0.0 - 2.0.0) /System/Library/Extensions/IOHIDFamily.kext/Contents/PlugIns/IOHIDLib.plugin/Contents/MacOS/IOHIDLib 0x10ccf3000 - 0x10ccf7fff com.apple.audio.AppleHDAHALPlugIn (279.48 - 279.48) /System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHALPlugIn.bundle/Contents/MacOS/AppleHDAHALPlugIn 0x10df81000 - 0x10dfbedc7 dyld (433.5) <322C06B7-8878-311D-888C-C8FD2CA96FF3> /usr/lib/dyld 0x10e27e000 - 0x10e3e5fff com.apple.audio.units.Components (1.14 - 1.14) /System/Library/Components/CoreAudio.component/Contents/MacOS/CoreAudio 0x7fff7fadb000 - 0x7fff7fe20ff7 com.apple.RawCamera.bundle (7.03 - 912) <1476F375-6C4B-382A-ABDB-99B7DCBF4F6D> /System/Library/CoreServices/RawCamera.bundle/Contents/MacOS/RawCamera 0x7fff7fe21000 - 0x7fff7ff54ffb com.apple.AMDMTLBronzeDriver (1.51.8 - 1.5.1) /System/Library/Extensions/AMDMTLBronzeDriver.bundle/Contents/MacOS/AMDMTLBronzeDriver 0x7fff81986000 - 0x7fff81986fff com.apple.Accelerate (1.11 - Accelerate 1.11) <916E360F-323C-3AE1-AB3D-D1F3B284AEE9> /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate 0x7fff81987000 - 0x7fff8199effb libCGInterfaces.dylib (331.5) <17109679-A284-3C72-AA60-DBA815D3062B> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/Libraries/libCGInterfaces.dylib 0x7fff8199f000 - 0x7fff81eb8feb com.apple.vImage (8.1 - ???) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage 0x7fff81eb9000 - 0x7fff8202aff3 libBLAS.dylib (1185.50.4) <4087FFE0-627E-3623-96B4-F0A9A1991E09> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib 0x7fff8202b000 - 0x7fff8203fffb libBNNS.dylib (15) <254698C7-7D36-3FFF-864E-ADEEEE543076> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib 0x7fff82040000 - 0x7fff82436fef libLAPACK.dylib (1185.50.4) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib 0x7fff82437000 - 0x7fff8244dfff libLinearAlgebra.dylib (1185.50.4) <345CAACF-7263-36EF-B69B-793EA8B390AF> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib 0x7fff8244e000 - 0x7fff82454fff libQuadrature.dylib (3) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib 0x7fff82455000 - 0x7fff82469ff7 libSparseBLAS.dylib (1185.50.4) <67BA432E-FB59-3C78-A8BE-ED4274CBC359> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib 0x7fff8246a000 - 0x7fff825f1fe7 libvDSP.dylib (600.60.1) <4155F45B-41CD-3782-AE8F-7AE740FD83C3> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib 0x7fff825f2000 - 0x7fff826a4fff libvMisc.dylib (600.60.1) <98F27D2D-E5DD-38EF-8747-0C4DE821A23D> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib 0x7fff826a5000 - 0x7fff826a5fff com.apple.Accelerate.vecLib (3.11 - vecLib 3.11) <7C5733E7-0568-3E7D-AF61-160F19FED544> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib 0x7fff82964000 - 0x7fff8373dff3 com.apple.AppKit (6.9 - 1504.83.101) /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit 0x7fff8374f000 - 0x7fff8374ffff com.apple.ApplicationServices (48 - 48) <4C71CBA8-47E4-38BF-BE3B-F20DF8667D5D> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices 0x7fff83750000 - 0x7fff837beff7 com.apple.ApplicationServices.ATS (377 - 422.2) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS 0x7fff83858000 - 0x7fff83987ff7 libFontParser.dylib (194.12) <73C3946D-EF92-3AC1-89C3-0E75B2A85325> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontParser.dylib 0x7fff83988000 - 0x7fff839d2fff libFontRegistry.dylib (196.4) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib 0x7fff83a2f000 - 0x7fff83a62fff libTrueTypeScaler.dylib (194.12) <8944A23A-EE36-3657-9B4F-933231C8FDEC> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libTrueTypeScaler.dylib 0x7fff83acf000 - 0x7fff83b79ff7 com.apple.ColorSync (4.12.0 - 502.2) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSync.framework/Versions/A/ColorSync 0x7fff83b7a000 - 0x7fff83bcbfff com.apple.HIServices (1.22 - 592.1) <7353E76E-9A3A-3693-87AF-41953585E024> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices 0x7fff83bcc000 - 0x7fff83bdbff3 com.apple.LangAnalysis (1.7.0 - 1.7.0) <2CBE7F61-2056-3F96-99A1-0D527796AFA6> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis 0x7fff83bdc000 - 0x7fff83c29fff com.apple.print.framework.PrintCore (12 - 491) <5027FD58-F0EE-33E4-8577-934CA06CD2AF> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore 0x7fff83c2a000 - 0x7fff83c65fff com.apple.QD (3.12 - 313) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD 0x7fff83c66000 - 0x7fff83c71fff com.apple.speech.synthesis.framework (6.6.2 - 6.6.2) <7853EFF4-62B9-394E-B7B8-41A645656820> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis 0x7fff83c72000 - 0x7fff83e7efff com.apple.audio.toolbox.AudioToolbox (1.14 - 1.14) <91D2BA22-B168-3A9A-9008-6FFC5A8FDC1E> /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox 0x7fff83e7f000 - 0x7fff83e7ffff com.apple.audio.units.AudioUnit (1.14 - 1.14) <8C0153FD-FEFF-309C-AACD-BF9657A31F8E> /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit 0x7fff83fe8000 - 0x7fff843c2fff com.apple.CFNetwork (811.5.4 - 811.5.4) <4DBF8932-6286-3B23-87D9-63615B9958D9> /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork 0x7fff843e1000 - 0x7fff846eafff com.apple.HIToolbox (2.1.1 - 857.8) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox 0x7fff846f5000 - 0x7fff8478cff3 com.apple.ink.framework (10.9 - 219) <1BD40B45-FD33-3177-A935-565EE5FC79D7> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink 0x7fff847ad000 - 0x7fff847b3ff7 com.apple.speech.recognition.framework (6.0.1 - 6.0.1) <082895DC-3AC7-3DEF-ADCA-5B018C19C9D3> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition 0x7fff84894000 - 0x7fff84894fff com.apple.Cocoa (6.11 - 22) <85EDFBE1-75F0-369E-8CA8-C6A639B98FA6> /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa 0x7fff849de000 - 0x7fff84a6bfff com.apple.audio.CoreAudio (4.3.0 - 4.3.0) <78767F88-91D4-31CE-AAC6-1F9407F479BB> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio 0x7fff84a6c000 - 0x7fff84a7ffff com.apple.CoreBluetooth (1.0 - 1) /System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth 0x7fff84a80000 - 0x7fff84d7bfff com.apple.CoreData (120 - 754.2) <4C9CAB2C-60D4-3694-A0A0-5B04B14BD14E> /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData 0x7fff84d7c000 - 0x7fff84e28ff7 com.apple.CoreDisplay (1.0 - 1) /System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay 0x7fff84e29000 - 0x7fff852c2ff7 com.apple.CoreFoundation (6.9 - 1349.8) <09ED473E-5DE8-307F-B55C-16F6419236D5> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation 0x7fff852c3000 - 0x7fff85945fff com.apple.CoreGraphics (2.0 - 1070.22) <78E7C882-837D-3CC3-B221-767B999873CE> /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics 0x7fff85946000 - 0x7fff85b89ffb com.apple.CoreImage (12.4.0 - 451.4.9) /System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage 0x7fff85cee000 - 0x7fff85ceefff com.apple.CoreServices (775.19 - 775.19) <7255917D-EFBB-3BE2-A8FD-DAD631BC0949> /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices 0x7fff85cef000 - 0x7fff85d40fff com.apple.AE (712.5 - 712.5) <61F2AE2C-E04E-3FDF-9E88-201325136C83> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE 0x7fff85d41000 - 0x7fff8601cff7 com.apple.CoreServices.CarbonCore (1159.6 - 1159.6) <08AC074C-965B-3EDF-8E45-0707C8DE9EAD> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore 0x7fff8601d000 - 0x7fff86050fff com.apple.DictionaryServices (1.2 - 274) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices 0x7fff86051000 - 0x7fff86059ff3 com.apple.CoreServices.FSEvents (1230.50.1 - 1230.50.1) <2AD1B0E5-7214-37C4-8D11-A27C9CAC0F74> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents 0x7fff8605a000 - 0x7fff861c6ff7 com.apple.LaunchServices (775.19 - 775.19) <94D15A2A-852C-3B4B-A701-43043C8F1527> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices 0x7fff861c7000 - 0x7fff86277ffb com.apple.Metadata (10.7.0 - 1075.40) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata 0x7fff86278000 - 0x7fff862d7fff com.apple.CoreServices.OSServices (775.19 - 775.19) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices 0x7fff862d8000 - 0x7fff86348fff com.apple.SearchKit (1.4.0 - 1.4.0) <7A6DDA2B-03F1-3137-BA9E-1CC211973E26> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit 0x7fff86349000 - 0x7fff8638eff7 com.apple.coreservices.SharedFileList (38 - 38) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList 0x7fff86417000 - 0x7fff86564ffb com.apple.CoreText (352.0 - 544.15) /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText 0x7fff86565000 - 0x7fff8659aff3 com.apple.CoreVideo (1.8 - 235.3) /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo 0x7fff8659b000 - 0x7fff8660cffb com.apple.framework.CoreWLAN (11.0 - 1200.31) /System/Library/Frameworks/CoreWLAN.framework/Versions/A/CoreWLAN 0x7fff8670a000 - 0x7fff8670ffff com.apple.DiskArbitration (2.7 - 2.7) <8AC72143-D3C4-3AA6-84DF-734E3AFAC49B> /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration 0x7fff868a1000 - 0x7fff86c47ff3 com.apple.Foundation (6.9 - 1349.81) <730B7944-BB43-35D5-A546-9F6CCED4B9F3> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation 0x7fff86c73000 - 0x7fff86ca4ff7 com.apple.GSS (4.0 - 2.0) <6FADED0B-0425-3567-A75A-040C5A4638EB> /System/Library/Frameworks/GSS.framework/Versions/A/GSS 0x7fff86d64000 - 0x7fff86e07ffb com.apple.Bluetooth (5.0.4 - 5.0.4f18) /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth 0x7fff86e08000 - 0x7fff86e9eff7 com.apple.framework.IOKit (2.0.2 - 1324.60.3) <7CE4C98B-107C-3AAA-B49A-F2ACFCBBF526> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit 0x7fff86e9f000 - 0x7fff86ea5ffb com.apple.IOSurface (159.7 - 159.7) <40550017-EF96-3C52-B400-806AFEE4B134> /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface 0x7fff86ef8000 - 0x7fff87058fef com.apple.ImageIO.framework (3.3.0 - 1599.10.2) <87AA4D39-0AFC-3A34-98EF-02710E2BF3CA> /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO 0x7fff87059000 - 0x7fff8705dfff libGIF.dylib (1599.10.2) <6ED05614-1301-3452-943B-118F00F20C8D> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib 0x7fff8705e000 - 0x7fff8714eff7 libJP2.dylib (1599.10.2) <72C00423-55F0-3CAD-B198-EF00950791E6> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib 0x7fff8714f000 - 0x7fff87172ffb libJPEG.dylib (1599.10.2) <78945614-990F-3705-A91C-46F717F7C635> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib 0x7fff87173000 - 0x7fff8719aff7 libPng.dylib (1599.10.2) /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib 0x7fff8719b000 - 0x7fff8719dff3 libRadiance.dylib (1599.10.2) <037D95B4-82A7-3A59-B3EB-0FF0977CF7A5> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib 0x7fff8719e000 - 0x7fff871ecfff libTIFF.dylib (1599.10.2) /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib 0x7fff87f53000 - 0x7fff87f6cff7 com.apple.Kerberos (3.0 - 1) /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos 0x7fff8874b000 - 0x7fff887a6fff com.apple.Metal (87.18 - 87.18) <5C2F12FB-45C1-3103-A827-3D225BF8D05A> /System/Library/Frameworks/Metal.framework/Versions/A/Metal 0x7fff8908f000 - 0x7fff89097fff com.apple.NetFS (6.0 - 4.0) <14A24D00-5673-330A-959D-87F72040DEFF> /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS 0x7fff8926e000 - 0x7fff89276ff7 libcldcpuengine.dylib (2.8.5) <73E1E526-01DF-3199-9B48-155F0329EF44> /System/Library/Frameworks/OpenCL.framework/Versions/A/Libraries/libcldcpuengine.dylib 0x7fff89277000 - 0x7fff892c5ff3 com.apple.opencl (2.8.6 - 2.8.6) <5FAF6F49-2648-39E6-922B-5630A5D7F7E4> /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL 0x7fff892c6000 - 0x7fff892dfffb com.apple.CFOpenDirectory (10.12 - 194) /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory 0x7fff892e0000 - 0x7fff892ebff7 com.apple.OpenDirectory (10.12 - 194) <4298FFD0-B1A7-3064-AF5B-708B3FA38671> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory 0x7fff892ec000 - 0x7fff892eefff libCVMSPluginSupport.dylib (14.0.16) /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib 0x7fff892ef000 - 0x7fff892f2ff7 libCoreFSCache.dylib (156.3) <687C4CC3-6537-344B-8BE1-5234C8CB2864> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib 0x7fff892f3000 - 0x7fff892f7fff libCoreVMClient.dylib (156.3) /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib 0x7fff892f8000 - 0x7fff89301ff7 libGFXShared.dylib (14.0.16) <63542E68-EB1A-3ECF-AAFB-E7B8AB313C70> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib 0x7fff89302000 - 0x7fff8930dfff libGL.dylib (14.0.16) <84BEED97-0A93-356D-A922-97EA311EA446> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib 0x7fff8930e000 - 0x7fff8934aff7 libGLImage.dylib (14.0.16) <3518A85C-6905-3511-A6C9-2F82C519D28F> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib 0x7fff8934b000 - 0x7fff894c1ff3 libGLProgrammability.dylib (14.0.16) <0EDA89D8-7C28-3D53-BDBA-7CB25232C329> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLProgrammability.dylib 0x7fff894c2000 - 0x7fff89503ff7 libGLU.dylib (14.0.16) <9860DCF7-56E0-3A8F-A377-52635C9D8B27> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib 0x7fff89e6b000 - 0x7fff89e79fff com.apple.opengl (14.0.16 - 14.0.16) <27E7D76E-A26B-39F8-8CF2-AB57920776A3> /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL 0x7fff8a9cb000 - 0x7fff8abcbfff com.apple.QuartzCore (1.11 - 453.39.3) /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore 0x7fff8b132000 - 0x7fff8b434ff7 com.apple.security (7.0 - 57740.60.18) <021AACF6-D15F-37E0-840B-88853684BA00> /System/Library/Frameworks/Security.framework/Versions/A/Security 0x7fff8b435000 - 0x7fff8b4aafff com.apple.securityfoundation (6.0 - 55132.50.7) <4433C0CC-FE90-3DD3-BAC1-CC31D515B510> /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation 0x7fff8b4d5000 - 0x7fff8b4d8ff3 com.apple.xpc.ServiceManagement (1.0 - 1) <9F285B19-B53B-3502-85A2-72C26DB40EA7> /System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement 0x7fff8b85f000 - 0x7fff8b8ceff7 com.apple.SystemConfiguration (1.14 - 1.14) <2412CDE0-C317-31EA-8F53-7A58BBFCC720> /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration 0x7fff8e123000 - 0x7fff8e13eff3 com.apple.AppContainer (4.0 - 307.50.21) /System/Library/PrivateFrameworks/AppContainer.framework/Versions/A/AppContainer 0x7fff8e13f000 - 0x7fff8e14cff3 com.apple.AppSandbox (4.0 - 307.50.21) /System/Library/PrivateFrameworks/AppSandbox.framework/Versions/A/AppSandbox 0x7fff8e14d000 - 0x7fff8e16fffb com.apple.framework.Apple80211 (12.0 - 1200.47) /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Apple80211 0x7fff8e170000 - 0x7fff8e17ffeb com.apple.AppleFSCompression (88.50.3 - 1.0) <478E8BFF-8BA2-375E-BE02-BA27F115C15A> /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression 0x7fff8e273000 - 0x7fff8e2fe97f com.apple.AppleJPEG (1.0 - 1) /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG 0x7fff8e731000 - 0x7fff8e7afff7 com.apple.backup.framework (1.8.5 - 1.8.5) /System/Library/PrivateFrameworks/Backup.framework/Versions/A/Backup 0x7fff8f43a000 - 0x7fff8f461ff3 com.apple.ChunkingLibrary (173 - 173) /System/Library/PrivateFrameworks/ChunkingLibrary.framework/Versions/A/ChunkingLibrary 0x7fff8fd86000 - 0x7fff8fd8fffb com.apple.CommonAuth (4.0 - 2.0) <216950CB-269F-3476-BA17-D6363AC49FBC> /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth 0x7fff904d7000 - 0x7fff904e7fff com.apple.CoreEmoji (1.0 - 40.3.3) /System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji 0x7fff90822000 - 0x7fff90852ff3 com.apple.CoreServicesInternal (276.2 - 276.2) <05EB7D45-DD4C-3A0F-AC63-A0C2A68E6481> /System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal 0x7fff90ae3000 - 0x7fff90b72ff7 com.apple.CoreSymbolication (62046) <7839CD8E-011D-3567-88DE-3D472C661136> /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication 0x7fff90b73000 - 0x7fff90cb2fe7 com.apple.coreui (2.1 - 431.3) <2E8FEC10-FC5B-3782-92DA-A85C24B7BF7C> /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI 0x7fff90cb3000 - 0x7fff90d83ff3 com.apple.CoreUtils (5.1 - 510.31) /System/Library/PrivateFrameworks/CoreUtils.framework/Versions/A/CoreUtils 0x7fff90dd3000 - 0x7fff90e38ff3 com.apple.framework.CoreWiFi (12.0 - 1200.31) /System/Library/PrivateFrameworks/CoreWiFi.framework/Versions/A/CoreWiFi 0x7fff90e39000 - 0x7fff90e47ff7 com.apple.CrashReporterSupport (10.12 - 827) <14037A71-ECFE-394A-8D6E-2CECE98F02EE> /System/Library/PrivateFrameworks/CrashReporterSupport.framework/Versions/A/CrashReporterSupport 0x7fff90eb9000 - 0x7fff90ec3ffb com.apple.framework.DFRFoundation (1.0 - 104.25) <7CFF896C-EF22-3941-BB3D-F3615CE4C908> /System/Library/PrivateFrameworks/DFRFoundation.framework/Versions/A/DFRFoundation 0x7fff90ec4000 - 0x7fff90ec8ff3 com.apple.DSExternalDisplay (3.1 - 380) /System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay 0x7fff90efe000 - 0x7fff90f73ffb com.apple.datadetectorscore (7.0 - 539.1) <9C312AAC-8AEE-3C72-BDE5-7FBF62452525> /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore 0x7fff90faf000 - 0x7fff90feefff com.apple.DebugSymbols (137 - 137) <58A70B66-2628-3CFE-B103-2200D95FC5F7> /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols 0x7fff90fef000 - 0x7fff91100fff com.apple.desktopservices (1.11.5 - 1.11.5) <46A9D4F3-1EF8-373C-98A4-AD48D285E484> /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv 0x7fff913e8000 - 0x7fff91819ff7 com.apple.vision.FaceCore (3.3.2 - 3.3.2) <9391D5A3-738C-3136-9D07-518CB43DBADA> /System/Library/PrivateFrameworks/FaceCore.framework/Versions/A/FaceCore 0x7fff92b70000 - 0x7fff92b70fff libmetal_timestamp.dylib (600.0.49.9) /System/Library/PrivateFrameworks/GPUCompiler.framework/libmetal_timestamp.dylib 0x7fff92b7d000 - 0x7fff92b88ff3 libGPUSupportMercury.dylib (14.0.16) <7E99C736-2F48-313E-BEF6-6F8BABFADD9F> /System/Library/PrivateFrameworks/GPUSupport.framework/Versions/A/Libraries/libGPUSupportMercury.dylib 0x7fff92e41000 - 0x7fff92e5dfff com.apple.GenerationalStorage (2.0 - 267.1) <3DE1C580-D089-362D-8582-8DE68A3C5F13> /System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/GenerationalStorage 0x7fff9356e000 - 0x7fff935e4ff3 com.apple.Heimdal (4.0 - 2.0) <8F9C9041-66D5-36C9-8A4C-1658035C311D> /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal 0x7fff93bf4000 - 0x7fff93bfefff com.apple.IOAccelMemoryInfo (1.0 - 1) <299393BE-294E-360B-AA4B-15766A8AEB49> /System/Library/PrivateFrameworks/IOAccelMemoryInfo.framework/Versions/A/IOAccelMemoryInfo 0x7fff93bff000 - 0x7fff93c06ffb com.apple.IOAccelerator (311.13 - 311.13) <40C04C41-A76A-3687-8D64-F76E8C46AA81> /System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator 0x7fff93c08000 - 0x7fff93c1cff7 com.apple.IOPresentment (1.0 - 29.10) /System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment 0x7fff93c1d000 - 0x7fff93c3ffff com.apple.IconServices (74.4 - 74.4) <218DDD05-35F4-3833-B98D-471ED0EBC031> /System/Library/PrivateFrameworks/IconServices.framework/Versions/A/IconServices 0x7fff93d26000 - 0x7fff93eddfff com.apple.LanguageModeling (1.0 - 123.2.5) /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling 0x7fff947fe000 - 0x7fff94877ff7 com.apple.MetalPerformanceShaders.MetalPerformanceShaders (1.0 - 1) /System/Library/PrivateFrameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders 0x7fff949f1000 - 0x7fff94a19ff7 com.apple.MultitouchSupport.framework (368.16 - 368.16) <512ADEC6-D694-3D73-A48A-6BE79CD39539> /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport 0x7fff94acb000 - 0x7fff94ad6fff com.apple.NetAuth (6.2 - 6.2) <97F487D6-8089-31A8-B68C-6C1EAC6ED1B5> /System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth 0x7fff953ae000 - 0x7fff953efff3 com.apple.PerformanceAnalysis (1.148.3 - 148.3) <6A21AB41-3AAA-32F3-9D46-2555A143A8B9> /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis 0x7fff95ad7000 - 0x7fff95af1fff com.apple.ProtocolBuffer (1 - 249.1) /System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer 0x7fff95b0a000 - 0x7fff95b2dff3 com.apple.RemoteViewServices (2.0 - 124) <6B967FDA-6591-302C-BA0A-76C4856E584E> /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices 0x7fff967f4000 - 0x7fff967f7fff com.apple.SecCodeWrapper (4.0 - 307.50.21) /System/Library/PrivateFrameworks/SecCodeWrapper.framework/Versions/A/SecCodeWrapper 0x7fff96886000 - 0x7fff96913fff com.apple.Sharing (696.2.67 - 696.2.67) /System/Library/PrivateFrameworks/Sharing.framework/Versions/A/Sharing 0x7fff96934000 - 0x7fff96b9afef com.apple.SkyLight (1.600.0 - 170.3) <83AB220F-48C0-3063-8ED3-ACDB69243B4D> /System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight 0x7fff96d79000 - 0x7fff96d85ff7 com.apple.SpeechRecognitionCore (3.3.2 - 3.3.2) <684BD1EA-8268-331C-A5A9-080EB375C658> /System/Library/PrivateFrameworks/SpeechRecognitionCore.framework/Versions/A/SpeechRecognitionCore 0x7fff97471000 - 0x7fff974e5fdf com.apple.Symbolication (62048.1) <1A30ED19-7532-3F46-9DD3-9879A973D0CF> /System/Library/PrivateFrameworks/Symbolication.framework/Versions/A/Symbolication 0x7fff97924000 - 0x7fff9792aff7 com.apple.TCC (1.0 - 1) <911B534B-4AC7-34E4-935E-E42ECD008CBC> /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC 0x7fff979b6000 - 0x7fff97a7cff7 com.apple.TextureIO (2.8 - 2.8) <3D61E533-4156-3B21-B7ED-CB823E680DFC> /System/Library/PrivateFrameworks/TextureIO.framework/Versions/A/TextureIO 0x7fff97af0000 - 0x7fff97af1fff com.apple.TrustEvaluationAgent (2.0 - 28.50.1) /System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent 0x7fff97af2000 - 0x7fff97c82ff3 com.apple.UIFoundation (1.0 - 490.7) <2A3063FE-1790-3510-8A0E-AEC581D42B7E> /System/Library/PrivateFrameworks/UIFoundation.framework/Versions/A/UIFoundation 0x7fff98751000 - 0x7fff98811fff com.apple.ViewBridge (283 - 283) <25A635B3-C87C-3D3A-ADF3-539713FA1048> /System/Library/PrivateFrameworks/ViewBridge.framework/Versions/A/ViewBridge 0x7fff98c5c000 - 0x7fff98c62fff com.apple.XPCService (2.0 - 1) <4B28B225-2105-33F4-9ED0-F04288FF4FB1> /System/Library/PrivateFrameworks/XPCService.framework/Versions/A/XPCService 0x7fff98d33000 - 0x7fff98d35ffb com.apple.loginsupport (1.0 - 1) /System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport 0x7fff98d8a000 - 0x7fff98da5ff7 libCRFSuite.dylib (34) /usr/lib/libCRFSuite.dylib 0x7fff98da6000 - 0x7fff98db1fff libChineseTokenizer.dylib (21) <0886E908-A825-36AF-B94B-2361FD8BC2A1> /usr/lib/libChineseTokenizer.dylib 0x7fff98e43000 - 0x7fff98e44ff3 libDiagnosticMessagesClient.dylib (102) <84A04D24-0E60-3810-A8C0-90A65E2DF61A> /usr/lib/libDiagnosticMessagesClient.dylib 0x7fff98e45000 - 0x7fff99058fff libFosl_dynamic.dylib (16.39) /usr/lib/libFosl_dynamic.dylib 0x7fff99074000 - 0x7fff9907bfff libMatch.1.dylib (27) <70D4BD2A-9383-37F2-B0D6-9B592D236601> /usr/lib/libMatch.1.dylib 0x7fff9907c000 - 0x7fff9907cfff libOpenScriptingUtil.dylib (172) <90743888-C1E8-34E3-924E-1A754B2B63B9> /usr/lib/libOpenScriptingUtil.dylib 0x7fff9907d000 - 0x7fff99081ffb libScreenReader.dylib (477.40.6) /usr/lib/libScreenReader.dylib 0x7fff99082000 - 0x7fff99083ffb libSystem.B.dylib (1238.60.2) /usr/lib/libSystem.B.dylib 0x7fff990ef000 - 0x7fff9911aff3 libarchive.2.dylib (41.50.2) /usr/lib/libarchive.2.dylib 0x7fff9911b000 - 0x7fff99197fc7 libate.dylib (1.12.13) /usr/lib/libate.dylib 0x7fff9919b000 - 0x7fff9919bff3 libauto.dylib (187) <34388D0B-C539-3C1B-9408-2BC152162E43> /usr/lib/libauto.dylib 0x7fff9919c000 - 0x7fff991acff3 libbsm.0.dylib (34) <20084796-B04D-3B35-A003-EA11459557A9> /usr/lib/libbsm.0.dylib 0x7fff991ad000 - 0x7fff991bbff7 libbz2.1.0.dylib (38) /usr/lib/libbz2.1.0.dylib 0x7fff991bc000 - 0x7fff99212ff7 libc++.1.dylib (307.5) <0B43BB5D-E6EB-3464-8DE9-B41AC8ED9D1C> /usr/lib/libc++.1.dylib 0x7fff99213000 - 0x7fff9923dfff libc++abi.dylib (307.3) <30199352-88BF-30BD-8CFF-2A4FBE247523> /usr/lib/libc++abi.dylib 0x7fff9923e000 - 0x7fff9924effb libcmph.dylib (6) <2B5D405E-2D0B-3320-ABD6-622934C86ABE> /usr/lib/libcmph.dylib 0x7fff9924f000 - 0x7fff99265fcf libcompression.dylib (39) /usr/lib/libcompression.dylib 0x7fff99266000 - 0x7fff99266ff7 libcoretls.dylib (121.50.4) <64B1001E-10F6-3542-A3B2-C4B49F51817F> /usr/lib/libcoretls.dylib 0x7fff99267000 - 0x7fff99268ff3 libcoretls_cfhelpers.dylib (121.50.4) <1A10303E-5EB0-3C7C-9165-021FCDFD934D> /usr/lib/libcoretls_cfhelpers.dylib 0x7fff99322000 - 0x7fff99407ff7 libcrypto.0.9.8.dylib (64.50.6) /usr/lib/libcrypto.0.9.8.dylib 0x7fff995a5000 - 0x7fff995f8ff7 libcups.2.dylib (450) <9950BFCB-7882-33C9-9ECF-CE66773C5657> /usr/lib/libcups.2.dylib 0x7fff99673000 - 0x7fff99673fff libenergytrace.dylib (15) /usr/lib/libenergytrace.dylib 0x7fff99683000 - 0x7fff99688ff7 libheimdal-asn1.dylib (498.50.8) /usr/lib/libheimdal-asn1.dylib 0x7fff99689000 - 0x7fff9977bff7 libiconv.2.dylib (50) <42125B35-81D7-3FC4-9475-A26DBE10884D> /usr/lib/libiconv.2.dylib 0x7fff9977c000 - 0x7fff999a1ffb libicucore.A.dylib (57165.0.1) <2931B842-2946-3576-AD1D-1CDA22FA1388> /usr/lib/libicucore.A.dylib 0x7fff999a7000 - 0x7fff999a8fff liblangid.dylib (126) <2085E7A7-9A34-3735-87F4-F174EF8EABF0> /usr/lib/liblangid.dylib 0x7fff999a9000 - 0x7fff999c2ffb liblzma.5.dylib (10) <44BD0279-99DD-36B5-8A6E-C11432E2098D> /usr/lib/liblzma.5.dylib 0x7fff999c3000 - 0x7fff999d9ff7 libmarisa.dylib (5) <9030D214-5D0F-30CB-AC03-902C63909362> /usr/lib/libmarisa.dylib 0x7fff999da000 - 0x7fff99c82ff7 libmecabra.dylib (744.8) /usr/lib/libmecabra.dylib 0x7fff99cb5000 - 0x7fff99d2fff3 libnetwork.dylib (856.60.1) <191E99F5-4723-3180-8013-02AF2F9AE4B8> /usr/lib/libnetwork.dylib 0x7fff99d30000 - 0x7fff9a102047 libobjc.A.dylib (709) /usr/lib/libobjc.A.dylib 0x7fff9a105000 - 0x7fff9a109fff libpam.2.dylib (21.30.1) <71EB0D88-DE84-3C8D-A2C5-58AA282BC5BC> /usr/lib/libpam.2.dylib 0x7fff9a10a000 - 0x7fff9a13bfff libpcap.A.dylib (67.60.1) /usr/lib/libpcap.A.dylib 0x7fff9a158000 - 0x7fff9a174ffb libresolv.9.dylib (64) /usr/lib/libresolv.9.dylib 0x7fff9a175000 - 0x7fff9a1aefff libsandbox.1.dylib (592.60.1) /usr/lib/libsandbox.1.dylib 0x7fff9a1c4000 - 0x7fff9a311ff7 libsqlite3.dylib (254.7) <07CD6DE3-394D-3C6A-A4B4-4CAB1054A041> /usr/lib/libsqlite3.dylib 0x7fff9a406000 - 0x7fff9a413fff libxar.1.dylib (357) <69547C64-E811-326F-BBED-490C6361BDCB> /usr/lib/libxar.1.dylib 0x7fff9a414000 - 0x7fff9a503ffb libxml2.2.dylib (30.16) /usr/lib/libxml2.2.dylib 0x7fff9a504000 - 0x7fff9a52dfff libxslt.1.dylib (15.9) <00735AD5-B62D-3E83-86AC-5533E4E2B102> /usr/lib/libxslt.1.dylib 0x7fff9a52e000 - 0x7fff9a53fff3 libz.1.dylib (67) <46E3FFA2-4328-327A-8D34-A03E20BFFB8E> /usr/lib/libz.1.dylib 0x7fff9a54e000 - 0x7fff9a552ff7 libcache.dylib (79) <093A4DAB-8385-3D47-A350-E20CB7CCF7BF> /usr/lib/system/libcache.dylib 0x7fff9a553000 - 0x7fff9a55dfff libcommonCrypto.dylib (60092.50.5) <8A64D1B0-C70E-385C-92F0-E669079FDA90> /usr/lib/system/libcommonCrypto.dylib 0x7fff9a55e000 - 0x7fff9a565fff libcompiler_rt.dylib (62) <55D47421-772A-32AB-B529-1A46C2F43B4D> /usr/lib/system/libcompiler_rt.dylib 0x7fff9a566000 - 0x7fff9a56efff libcopyfile.dylib (138) <819BEA3C-DF11-3E3D-A1A1-5A51C5BF1961> /usr/lib/system/libcopyfile.dylib 0x7fff9a56f000 - 0x7fff9a5f2fdf libcorecrypto.dylib (442.50.19) <65D7165E-2E71-335D-A2D6-33F78E2DF0C1> /usr/lib/system/libcorecrypto.dylib 0x7fff9a5f3000 - 0x7fff9a624fff libdispatch.dylib (703.50.37) <6582BAD6-ED27-3B30-B620-90B1C5A4AE3C> /usr/lib/system/libdispatch.dylib 0x7fff9a625000 - 0x7fff9a62affb libdyld.dylib (433.5) /usr/lib/system/libdyld.dylib 0x7fff9a62b000 - 0x7fff9a62bffb libkeymgr.dylib (28) <7AA011A9-DC21-3488-BF73-3B5B14D1FDD6> /usr/lib/system/libkeymgr.dylib 0x7fff9a62c000 - 0x7fff9a638ffb libkxld.dylib (3789.60.24) <5DFCDC05-6CBC-35A6-8B92-DF6803492E12> /usr/lib/system/libkxld.dylib 0x7fff9a639000 - 0x7fff9a639fff liblaunch.dylib (972.60.2) /usr/lib/system/liblaunch.dylib 0x7fff9a63a000 - 0x7fff9a63fff3 libmacho.dylib (898) <17D5D855-F6C3-3B04-B680-E9BF02EF8AED> /usr/lib/system/libmacho.dylib 0x7fff9a640000 - 0x7fff9a642ff3 libquarantine.dylib (85.50.1) <12448CC2-378E-35F3-BE33-9DC395A5B970> /usr/lib/system/libquarantine.dylib 0x7fff9a643000 - 0x7fff9a644ffb libremovefile.dylib (45) <38D4CB9C-10CD-30D3-8B7B-A515EC75FE85> /usr/lib/system/libremovefile.dylib 0x7fff9a645000 - 0x7fff9a65dff7 libsystem_asl.dylib (349.50.5) <096E4228-3B7C-30A6-8B13-EC909A64499A> /usr/lib/system/libsystem_asl.dylib 0x7fff9a65e000 - 0x7fff9a65eff7 libsystem_blocks.dylib (67) <10DC5404-73AB-35B3-A277-A8AFECB476EB> /usr/lib/system/libsystem_blocks.dylib 0x7fff9a65f000 - 0x7fff9a6ecfef libsystem_c.dylib (1158.50.2) /usr/lib/system/libsystem_c.dylib 0x7fff9a6ed000 - 0x7fff9a6f0ffb libsystem_configuration.dylib (888.60.2) /usr/lib/system/libsystem_configuration.dylib 0x7fff9a6f1000 - 0x7fff9a6f4fff libsystem_coreservices.dylib (41.4) <7D26DE79-B424-3450-85E1-F7FAB32714AB> /usr/lib/system/libsystem_coreservices.dylib 0x7fff9a6f5000 - 0x7fff9a70dfff libsystem_coretls.dylib (121.50.4) /usr/lib/system/libsystem_coretls.dylib 0x7fff9a70e000 - 0x7fff9a714fff libsystem_dnssd.dylib (765.50.9) /usr/lib/system/libsystem_dnssd.dylib 0x7fff9a715000 - 0x7fff9a73eff7 libsystem_info.dylib (503.50.4) <611DB84C-BF70-3F92-8702-B9F28A900920> /usr/lib/system/libsystem_info.dylib 0x7fff9a73f000 - 0x7fff9a761ff7 libsystem_kernel.dylib (3789.60.24) <6E9E485F-91F6-36B7-A125-AE91DC978BCC> /usr/lib/system/libsystem_kernel.dylib 0x7fff9a762000 - 0x7fff9a7a9fe7 libsystem_m.dylib (3121.6) <86D499B5-BBDC-3D3B-8A4E-97AE8E6672A4> /usr/lib/system/libsystem_m.dylib 0x7fff9a7aa000 - 0x7fff9a7c8ff7 libsystem_malloc.dylib (116.50.8) /usr/lib/system/libsystem_malloc.dylib 0x7fff9a7c9000 - 0x7fff9a822ffb libsystem_network.dylib (856.60.1) <369D0221-56CA-3C3E-9EDE-94B41CAE77B7> /usr/lib/system/libsystem_network.dylib 0x7fff9a823000 - 0x7fff9a82cff3 libsystem_networkextension.dylib (563.60.2) /usr/lib/system/libsystem_networkextension.dylib 0x7fff9a82d000 - 0x7fff9a836ff3 libsystem_notify.dylib (165.20.1) /usr/lib/system/libsystem_notify.dylib 0x7fff9a837000 - 0x7fff9a83ffe7 libsystem_platform.dylib (126.50.8) <897462FD-B318-321B-A554-E61982630F7E> /usr/lib/system/libsystem_platform.dylib 0x7fff9a840000 - 0x7fff9a84aff7 libsystem_pthread.dylib (218.60.3) /usr/lib/system/libsystem_pthread.dylib 0x7fff9a84b000 - 0x7fff9a84eff7 libsystem_sandbox.dylib (592.60.1) /usr/lib/system/libsystem_sandbox.dylib 0x7fff9a84f000 - 0x7fff9a850ff3 libsystem_secinit.dylib (24.50.4) /usr/lib/system/libsystem_secinit.dylib 0x7fff9a851000 - 0x7fff9a858ffb libsystem_symptoms.dylib (532.50.47) <3390E07C-C1CE-348F-ADBD-2C5440B45EAA> /usr/lib/system/libsystem_symptoms.dylib 0x7fff9a859000 - 0x7fff9a86cff7 libsystem_trace.dylib (518.60.2) <6B145B10-5874-3E89-90CD-D370DB475BA1> /usr/lib/system/libsystem_trace.dylib 0x7fff9a86d000 - 0x7fff9a872ffb libunwind.dylib (35.3) <3D50D8A8-C460-334D-A519-2DA841102C6B> /usr/lib/system/libunwind.dylib 0x7fff9a873000 - 0x7fff9a89cff7 libxpc.dylib (972.60.2) <1C9AF716-69DF-359F-85E9-7DFDE362F9A2> /usr/lib/system/libxpc.dylib

External Modification Summary: Calls made by other processes targeting this process: task_for_pid: 0 thread_create: 0 thread_set_state: 0 Calls made by this process: task_for_pid: 0 thread_create: 0 thread_set_state: 0 Calls made by all processes on this machine: task_for_pid: 64675 thread_create: 0 thread_set_state: 0

VM Region Summary: ReadOnly portion of Libraries: Total=266.1M resident=0K(0%) swapped_out_or_unallocated=266.1M(100%) Writable regions: Total=241.0M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=241.0M(100%)

                            VIRTUAL   REGION 

REGION TYPE SIZE COUNT (non-coalesced) =========== ======= ======= Accelerate framework 256K 3 Activity Tracing 256K 2 CG backing stores 17.2M 4 CG image 76K 7 CoreAnimation 104K 9 CoreUI image data 1696K 13 CoreUI image file 184K 5 Image IO 76K 4 Kernel Alloc Once 8K 2 MALLOC 188.5M 56 MALLOC guard page 48K 10 MALLOC_LARGE (reserved) 1408K 3 reserved VM address space (unallocated) Memory Tag 242 12K 2 Memory Tag 251 24K 2 OpenGL GLSL 256K 4 STACK GUARD 56.0M 14 Stack 14.1M 14 VM_ALLOCATE 132K 16 VM_ALLOCATE (reserved) 36K 2 reserved VM address space (unallocated) DATA 23.6M 223 GLSLBUILTINS 2588K 2 IMAGE 528K 2 LINKEDIT 117.6M 13 TEXT 148.6M 222 UNICODE 556K 2 mapped file 54.0M 15 shared memory 16.4M 13 =========== ======= ======= TOTAL 644.0M 637 TOTAL, minus reserved VM space 642.6M 637

Model: MacBookPro11,5, BootROM MBP114.0172.B16, 4 processors, Intel Core i7, 2.5 GHz, 16 GB, SMC 2.30f2 Graphics: AMD Radeon R9 M370X, AMD Radeon R9 M370X, PCIe, 2048 MB Graphics: Intel Iris Pro, Intel Iris Pro, Built-In Memory Module: BANK 0/DIMM0, 8 GB, DDR3, 1600 MHz, 0x802C, 0x31364B544631473634485A2D314736453120 Memory Module: BANK 1/DIMM0, 8 GB, DDR3, 1600 MHz, 0x802C, 0x31364B544631473634485A2D314736453120 AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x152), Broadcom BCM43xx 1.0 (7.21.171.126.1a2) Bluetooth: Version 5.0.4f18, 3 services, 27 devices, 1 incoming serial ports Network Service: Wi-Fi, AirPort, en0 Serial ATA Device: APPLE SSD SM0512G, 500.28 GB USB Device: USB 3.0 Bus USB Device: Apple Internal Keyboard / Trackpad USB Device: Bluetooth USB Host Controller Thunderbolt Bus: MacBook Pro, Apple Inc., 27.1

aaronouthier commented 6 years ago

@MarioEnthusiast: How did you create the CrashReport, or where did you find it on your system? Also, I have submitted some info in the Libretro forums, that may help identify the cause: https://forums.libretro.com/t/retroarch-crashes-after-connecting-steelseries-nimbus-controller-os-x/9724/16?u=aaronouthier

Edit: Disregard. Found the Crash Reports.

aaronouthier commented 6 years ago

Attaching my 2 most recent crash reports.

RetroArch 1.70 crash log.txt

chillednems commented 6 years ago

I'm glad! The more people reporting issues and logs the better it will be for the devs to tackle this issue!

yo6snap commented 6 years ago

Hi there, I found the problem and QUICK FIX it on my iMac. Now I can use my Nimbus controller and continue to use my SONY PS4 controller in RetroArch.

The following explanations are intend to developers.

I get the 1.7.0 version from repository, compile it with Xcode 9.2 and execute it on my iMac. When connecting the Nimbus controller, it executes code in HID driver located at : retroarch/input/drivers_hid/iohidmanager_hid.c in function iohidmanager_hid_device_add, and a segmentation fault occurs at line 670 :

669:   tmp = adapter->buttons;
670:   while(tmp->next)
671:     tmp = tmp->next;

because the "tmp" pointer is NULL. Why is it NULL? Because the detection code do not see the Nimbus buttons. The code recognize the Nimbus controller, Left and Right Axis, but it is blind to directional buttons and A/B/X/Y/L1/L2/R1/R2/MENU buttons.

FIX Explanations

My FIX modify switch cases and some conditionals in order to take account the Nimbus buttons. Unfortunately there is an another problem: "use" member values are not linear (i.e. 1, 2, 3, 4, 5, 6, 7, 8, 144, 145, 146, 147, 547) and later the controller button states shall be packed in a 32bits word: One button is mapped to one bit (For instance: Bit 0: D-Pad Up, Bit 1: D-Pad Down, .... Bit 31: MENU Button ...)

My workaround : The position of detected button linked list is the bit index in bits set. (instead of "use" member). Final version of this FIX may rely on another bits mapping because it depends on button detection order. (Further discussion: should we use directly 44, 145, 146, 147, 547 IDs ?)

How to FIX

Follow RetroArch instructions located here : https://docs.libretro.com/compilation/osx with this slight modification : After "Fetching RetroArch" step and before "Building RetroArch separately" step, replace in source file iohidmanager_hid.c located at /retroarch/input/drivers_hid build directory the 2 original functions :

iohidmanager_hid_device_input_callback function becomes:

iohidmanager_hid_t *hid                  = (iohidmanager_hid_t*)hid_driver_get_data();
struct iohidmanager_hid_adapter *adapter = (struct iohidmanager_hid_adapter*)data;
IOHIDElementRef element                  = IOHIDValueGetElement(value);
uint32_t type                            = (uint32_t)IOHIDElementGetType(element);
uint32_t page                            = (uint32_t)IOHIDElementGetUsagePage(element);
uint32_t use                             = (uint32_t)IOHIDElementGetUsage(element);
uint32_t cookie                          = (uint32_t)IOHIDElementGetCookie(element);
apple_input_rec_t *tmp                   = NULL;

if (type != kIOHIDElementTypeInput_Misc)
    if (type != kIOHIDElementTypeInput_Button)
        if (type != kIOHIDElementTypeInput_Axis)
            return;

/* Joystick handler.
 * TODO: Can GamePad work the same? */

int pushed_button = 0;

switch (page)
{
    case kHIDPage_GenericDesktop:
        switch (type)
    {
        case kIOHIDElementTypeInput_Misc:
            switch (use)
        {
            case kHIDUsage_GD_Hatswitch:
            {
                tmp = adapter->hats;

                while(tmp && tmp->cookie != (IOHIDElementCookie)cookie)
                    tmp = tmp->next;

                if(tmp->cookie == (IOHIDElementCookie)cookie)
                {
                    CFIndex range = IOHIDElementGetLogicalMax(element) - IOHIDElementGetLogicalMin(element);
                    CFIndex val   = IOHIDValueGetIntegerValue(value);

                    if(range == 3)
                        val *= 2;

                    switch(val)
                    {
                        case 0:
                            /* pos = up */
                            hid->hats[adapter->slot][0] = 0;
                            hid->hats[adapter->slot][1] = -1;
                            break;
                        case 1:
                            /* pos = up+right */
                            hid->hats[adapter->slot][0] = 1;
                            hid->hats[adapter->slot][1] = -1;
                            break;
                        case 2:
                            /* pos = right */
                            hid->hats[adapter->slot][0] = 1;
                            hid->hats[adapter->slot][1] = 0;
                            break;
                        case 3:
                            /* pos = down+right */
                            hid->hats[adapter->slot][0] = 1;
                            hid->hats[adapter->slot][1] = 1;
                            break;
                        case 4:
                            /* pos = down */
                            hid->hats[adapter->slot][0] = 0;
                            hid->hats[adapter->slot][1] = 1;
                            break;
                        case 5:
                            /* pos = down+left */
                            hid->hats[adapter->slot][0] = -1;
                            hid->hats[adapter->slot][1] = 1;
                            break;
                        case 6:
                            /* pos = left */
                            hid->hats[adapter->slot][0] = -1;
                            hid->hats[adapter->slot][1] = 0;
                            break;
                        case 7:
                            /* pos = up_left */
                            hid->hats[adapter->slot][0] = -1;
                            hid->hats[adapter->slot][1] = -1;
                            break;
                        default:
                            /* pos = centered */
                            hid->hats[adapter->slot][0] = 0;
                            hid->hats[adapter->slot][1] = 0;
                            break;
                    }
                }
            }
                break;
            default:
                tmp = adapter->axes;

                while(tmp && tmp->cookie != (IOHIDElementCookie)cookie)
                    tmp = tmp->next;

                if (tmp) {
                    if(tmp->cookie == (IOHIDElementCookie)cookie)
                    {
                        CFIndex min   = IOHIDElementGetPhysicalMin(element);
                        CFIndex state = IOHIDValueGetIntegerValue(value) - min;
                        CFIndex max   = IOHIDElementGetPhysicalMax(element) - min;
                        float val     = (float)state / (float)max;

                        hid->axes[adapter->slot][tmp->id] =
                        ((val * 2.0f) - 1.0f) * 32767.0f;
                    }
                } else {
                    pushed_button = 1;
                }
                break;
        }
            break;
    }
        break;
    case kHIDPage_Consumer:
    case kHIDPage_Button:
        switch (type)
    {
        case kIOHIDElementTypeInput_Misc:
        case kIOHIDElementTypeInput_Button:
            pushed_button = 1;
            break;
    }
        break;
}

if (pushed_button)
{
    tmp = adapter->buttons;

    uint8_t bit = 0;
    while(tmp && tmp->cookie != (IOHIDElementCookie)cookie)
    {
        bit++;
        tmp = tmp->next;
    }

    if(tmp && tmp->cookie == (IOHIDElementCookie)cookie)
    {
        CFIndex state = IOHIDValueGetIntegerValue(value);
        if (state)
            BIT64_SET(hid->buttons[adapter->slot], bit);
        else
            BIT64_CLEAR(hid->buttons[adapter->slot], bit);
    }
}

iohidmanager_hid_device_add function becomes:

int i;
IOReturn ret;
uint16_t dev_vid, dev_pid;
CFArrayRef elements_raw;
int count;
CFMutableArrayRef elements;
CFRange range;
bool found_axis[6] =
{ false, false, false, false, false, false };
apple_input_rec_t *tmp                   = NULL;
apple_input_rec_t *tmpButtons            = NULL;
apple_input_rec_t *tmpAxes               = NULL;
iohidmanager_hid_t                  *hid = (iohidmanager_hid_t*)
hid_driver_get_data();
struct iohidmanager_hid_adapter *adapter = (struct iohidmanager_hid_adapter*)
calloc(1, sizeof(*adapter));

if (!adapter)
    return;
if (!hid)
    goto error;

adapter->handle        = device;

ret = IOHIDDeviceOpen(device, kIOHIDOptionsTypeNone);

if (ret != kIOReturnSuccess)
    goto error;

/* Move the device's run loop to this thread. */
IOHIDDeviceScheduleWithRunLoop(device, CFRunLoopGetCurrent(),
                               kCFRunLoopCommonModes);
IOHIDDeviceRegisterRemovalCallback(device,
                                   iohidmanager_hid_device_remove, adapter);

#ifndef IOS
iohidmanager_hid_device_get_product_string(device, adapter->name,
                                           sizeof(adapter->name));
#endif

dev_vid = iohidmanager_hid_device_get_vendor_id  (device);
dev_pid = iohidmanager_hid_device_get_product_id (device);

adapter->slot = pad_connection_pad_init(hid->slots,
                                        adapter->name, dev_vid, dev_pid, adapter,
                                        &iohidmanager_hid);

if (adapter->slot == -1)
    goto error;

if (pad_connection_has_interface(hid->slots, adapter->slot))
    IOHIDDeviceRegisterInputReportCallback(device,
                                           adapter->data + 1, sizeof(adapter->data) - 1,
                                           iohidmanager_hid_device_report, adapter);
else
    IOHIDDeviceRegisterInputValueCallback(device,
                                          iohidmanager_hid_device_input_callback, adapter);

if (string_is_empty(adapter->name))
    goto error;

/* scan for buttons, axis, hats */
elements_raw = IOHIDDeviceCopyMatchingElements(device, NULL, kIOHIDOptionsTypeNone);
count        = (int)CFArrayGetCount(elements_raw);
elements     = CFArrayCreateMutableCopy(
                                        kCFAllocatorDefault,(CFIndex)count,elements_raw);
range        = CFRangeMake(0,count);

CFArraySortValues(elements,
                  range, iohidmanager_sort_elements, NULL);

for(i=0; i<count; i++)
{
    IOHIDElementRef element = (IOHIDElementRef)CFArrayGetValueAtIndex(elements, i);

    if (!element)
        continue;

    IOHIDElementType type = IOHIDElementGetType(element);
    uint32_t page         = (uint32_t)IOHIDElementGetUsagePage(element);
    uint32_t use          = (uint32_t)IOHIDElementGetUsage(element);
    uint32_t cookie       = (uint32_t)IOHIDElementGetCookie(element);

    int detected_button = 0;

    switch (page)
    {
        case kHIDPage_GenericDesktop:
            switch (type)
        {
            case kIOHIDElementTypeCollection:
            case kIOHIDElementTypeInput_ScanCodes:
            case kIOHIDElementTypeFeature:
            case kIOHIDElementTypeInput_Button:
            case kIOHIDElementTypeOutput:
            case kIOHIDElementTypeInput_Axis:
                /* TODO/FIXME */
                break;
            case kIOHIDElementTypeInput_Misc:
                switch (use)
            {
                case kHIDUsage_GD_Hatswitch:
                {
                    /* as far as I can tell, OSX only reports one Hat */
                    apple_input_rec_t *hat = (apple_input_rec_t *)malloc(sizeof(apple_input_rec_t));
                    hat->id                = 0;
                    hat->cookie            = (IOHIDElementCookie)cookie;
                    hat->next              = NULL;
                    adapter->hats          = hat;
                }
                    break;
                default:
                {
                    uint32_t i = 0;
                    static const uint32_t axis_use_ids[6] =
                    { 48, 49, 51, 52, 50, 53 };

                    while (i < 6 && axis_use_ids[i] != use)
                        i++;

                    if (i < 6)
                    {

                        apple_input_rec_t *axis = (apple_input_rec_t *)malloc(sizeof(apple_input_rec_t));
                        axis->id                = i;
                        axis->cookie            = (IOHIDElementCookie)cookie;
                        axis->next              = NULL;

                        if(iohidmanager_check_for_id(adapter->axes,i))
                        {
                            /* axis ID already exists, save to tmp for appending later */
                            if(tmpAxes)
                                iohidmanager_append_record(tmpAxes, axis);
                            else
                                tmpAxes = axis;
                        }
                        else
                        {
                            found_axis[axis->id] = true;
                            if(adapter->axes)
                                iohidmanager_append_record(adapter->axes, axis);
                            else
                                adapter->axes = axis;
                        }
                    } else {
                        detected_button = 1;
                    }
                }
                    break;
            }
                break;
        }
            break;
        case kHIDPage_Consumer:
        case kHIDPage_Button:
            switch (type)
        {
            case kIOHIDElementTypeCollection:
            case kIOHIDElementTypeFeature:
            case kIOHIDElementTypeInput_ScanCodes:
            case kIOHIDElementTypeInput_Axis:
            case kIOHIDElementTypeOutput:
                /* TODO/FIXME */
                break;
            case kIOHIDElementTypeInput_Misc:
            case kIOHIDElementTypeInput_Button:
                detected_button = 1;
                break;
        }
            break;
    }

    if (detected_button)
    {
        apple_input_rec_t *btn = (apple_input_rec_t *)malloc(sizeof(apple_input_rec_t));
        btn->id                = (uint32_t)use;
        btn->cookie            = (IOHIDElementCookie)cookie;
        btn->next              = NULL;

        if(iohidmanager_check_for_id(adapter->buttons,btn->id))
        {
            if(tmpButtons)
                iohidmanager_append_record(tmpButtons, btn);
            else
                tmpButtons = btn;
        }
        else
        {
            if(adapter->buttons)
                iohidmanager_append_record(adapter->buttons, btn);
            else
                adapter->buttons = btn;
        }
    }
}

/* take care of buttons/axes with duplicate 'use' values */
for(i=0; i<6; i++)
{
    if(found_axis[i] == false && tmpAxes)
    {
        apple_input_rec_t *next = tmpAxes->next;
        tmpAxes->id             = i;
        tmpAxes->next           = NULL;
        iohidmanager_append_record(adapter->axes, tmpAxes);
        tmpAxes = next;
    }
}

tmp = adapter->buttons;
if (tmp) {
    while(tmp->next)
        tmp = tmp->next;
}

while(tmpButtons)
{
    apple_input_rec_t *next = tmpButtons->next;

    tmpButtons->id          = tmp->id;
    tmpButtons->next        = NULL;
    tmp->next               = tmpButtons;

    tmp                     = tmp->next;
    tmpButtons              = next;
}

iohidmanager_hid_device_add_autodetect(adapter->slot,
                                       adapter->name, iohidmanager_hid.ident, dev_vid, dev_pid);

return;

error:
{
    apple_input_rec_t *tmp = NULL;
    while(adapter->hats != NULL)
    {
        tmp           = adapter->hats;
        adapter->hats = adapter->hats->next;
        free(tmp);
    }
    while(adapter->axes != NULL)
    {
        tmp           = adapter->axes;
        adapter->axes = adapter->axes->next;
        free(tmp);
    }
    while(adapter->buttons != NULL)
    {
        tmp              = adapter->buttons;
        adapter->buttons = adapter->buttons->next;
        free(tmp);
    }
    while(tmpAxes != NULL)
    {
        tmp     = tmpAxes;
        tmpAxes = tmpAxes->next;
        free(tmp);
    }
    while(tmpButtons != NULL)
    {
        tmp        = tmpButtons;
        tmpButtons = tmpButtons->next;
        free(tmp);
    }
    free(adapter);
}

For your convenience, the Nimbus.cfg autoconfig file (optional):

input_driver = "hid"
input_device = "Nimbus"
input_vendor_id = "273"
input_product_id = "5152"
input_b_btn = "4"
input_y_btn = "6"
input_select_btn = "8"
input_start_btn = "9"
input_up_btn = "0"
input_down_btn = "1"
input_left_btn = "3"
input_right_btn = "2"
input_a_btn = "5"
input_x_btn = "7"
input_l2_btn = "10"
input_r2_btn = "11"
input_l_x_plus_axis = "+0"
input_l_x_minus_axis = "-0"
input_l_y_plus_axis = "-1"
input_l_y_minus_axis = "+1"
input_r_x_plus_axis = "+4"
input_r_x_minus_axis = "-4"
input_r_y_plus_axis = "-5"
input_r_y_minus_axis = "+5"
input_b_btn_label = "A"
input_y_btn_label = "X"
input_select_btn_label = "L1"
input_start_btn_label = "L2"
input_up_btn_label = "D-Pad Up"
input_down_btn_label = "D-Pad Down"
input_left_btn_label = "D-Pad Left"
input_right_btn_label = "D-Pad Right"
input_a_btn_label = "B"
input_x_btn_label = "Y"
input_l2_btn_label = "L2"
input_r2_btn_label = "R2"
input_l_x_plus_axis_label = "Left Analog X+"
input_l_x_minus_axis_label = "Left Analog X-"
input_l_y_plus_axis_label = "Left Analog Y+"
input_l_y_minus_axis_label = "Left Analog Y-"
input_r_x_plus_axis_label = "Right Analog X+"
input_r_x_minus_axis_label = "Right Analog X-"
input_r_y_plus_axis_label = "Right Analog Y+"
input_r_y_minus_axis_label = "Right Analog Y-"
input_menu_toggle_btn_label = "MENU"
Mr-se7enX commented 6 years ago

I modified iohidmanager_hid.c file (input_callback and device_add) I get error. I able to build Retroarch without any problem before I edit the file. If you upload your build that would be nice.

`In file included from /Users/Home/retroarch/griffin/griffin.c:604: /Users/Home/retroarch/griffin/../input/drivers_hid/iohidmanager_hid.c:383:1: error: function definition is not allowed here { ^ /Users/Home/retroarch/griffin/../input/drivers_hid/iohidmanager_hid.c:426:1: error: function definition is not allowed here { ^ /Users/Home/retroarch/griffin/../input/drivers_hid/iohidmanager_hid.c:440:1: error: function definition is not allowed here { ^ /Users/Home/retroarch/griffin/../input/drivers_hid/iohidmanager_hid.c:446:1: error: function definition is not allowed here { ^ /Users/Home/retroarch/griffin/../input/drivers_hid/iohidmanager_hid.c:453:1: error: function definition is not allowed here { ^ /Users/Home/retroarch/griffin/../input/drivers_hid/iohidmanager_hid.c:464:1: error: function definition is not allowed here { ^ /Users/Home/retroarch/griffin/../input/drivers_hid/iohidmanager_hid.c:480:1: error: function definition is not allowed here { ^ /Users/Home/retroarch/griffin/griffin.c:1333:7: error: expected '}'

endif

  ^

In file included from /Users/Home/retroarch/griffin/griffin.c:604: /Users/Home/retroarch/griffin/../input/drivers_hid/iohidmanager_hid.c:229:1: note: to match this '{' { ^ 8 errors generated.

BUILD FAILED

The following build commands failed: CompileC build/RetroArch.build/Release/RetroArch.build/Objects-normal/x86_64/griffin.o /Users/Home/retroarch/griffin/griffin.c normal x86_64 c com.apple.compilers.llvm.clang.1_0.compiler (1 failure) `

aaronouthier commented 6 years ago

Try this! iohidmanager_hid.c.gz

aaronouthier commented 6 years ago

Backup/Archive existing file, and then replace with this one.

aaronouthier commented 6 years ago

Oh, and BTW, yes, I do have it working for me...

Mr-se7enX commented 6 years ago

thanks it built the app. I will try the controller later on because my iMac bluetooth not working at moment. BTW, where to locate the Nimbus.cfg file??

aaronouthier commented 6 years ago

On the Mac, locate your compiled RetroArch.app . Right-click (or Control-click, if necessary) on RetroArch, and select Show Contents, then open “Contents”->”Resources”->”assets”->”autoconf”. Then open Textedit, or equivelent (I use TextWrangler). Copy and Paste the contents provided above, and save somewhere convenient, like the Desktop. Then drag the newly created nimbus.cfg to the autoconf folder.

Done.

Mr-se7enX commented 6 years ago

thanks aaronouthier..

yo6snap commented 6 years ago

@aaronouthier Is it working fine for you? Do you met unexpected behavior? As I mentioned earlier, it is a QUICK FIX. A production FIX may enforce the detection robustness. If I have time, I will explain an improved algorithm...

yo6snap commented 6 years ago

@Mr-se7enX replacement code shall be located inside curly braces. What kind of problem you encountered with Bluetooth?

Mr-se7enX commented 6 years ago

thanks @yo6snap for your hard work. Mfi controllers are working fine. I tested two controllers. regarding my iMac bluetooth issue, it's common OSX issue (bluetooth not available). I tried everything, but nothing solve it. Anyway, I would like to have combo buttons input for "Select" input. I already have combo for menu toggle.

yo6snap commented 6 years ago

You're welcome @Mr-se7enX ! I used to play RetroArch on my PC/LINUX. Last night, I decided to retro play on my iMac. I was disappointed my MFI controller doesn't work on RetroArch/OSX. So I began to debug RetroArch under Xcode. When I found the issue, I decided to share my FIX on this thread.

Can you clarify:

I would like to have combo buttons input for "Select" input

Do you imagine a new entry in RetroArch menu like "Input>Menu Toggle Gamepad Combo" ?

Mr-se7enX commented 6 years ago

yes I mean a new entry in RetroArch menu like "Input>Menu Toggle Gamepad Combo" . Because MFi controllers have one button to use for either start or select input. I want to use (R2 + L2) for select input.

inactive123 commented 6 years ago

Hi there @yo6snap,

I committed your improvements to IOHIDManager to the code, and I submitted the Nimbus autoconfig file too, thank you very much.

In the future, might I suggest trying to send a pull request instead? That'd be a lot easier for us to merge.

yo6snap commented 6 years ago

@Mr-se7enX

I mean a new entry in RetroArch menu like "Input>Menu Toggle Gamepad Combo"

I can add a new entry in RetroArch, but I won't do it :( Because, if I implement this feature, it will have a big impact on RetroArch project. I think this feature is inside a bigger scope: Combo Button philosophy in RetroArch.

My FIX in HID detects all the Nimbus buttons. So, you can configure RetroArch in a regular way to setup combo buttons. As I know, there are only 2 ways to achieve this task: (@twinaphex: can you confirm ?)

  1. The "Input>Menu Toggle Gamepad Combo" entry (you already know)
  2. The "Input>Input Hotkey Binds>Enable hotkeys" entry (as suggested here, at "Input Settings" section)

Moreover :), I can do a Hack, only for personal use and Nimbus users. In my own opinion, Nimbus controller lacks of buttons. In your case (and in my case) I want to map "Select" button to a combo. The scope of this hack should be considered as: "Controllers which have less buttons than the RetroPad virtual controller". The Hack idea: At HID level (low level), I can create virtual button IDs which are combination of buttons. These virtual IDs retrieved on low level layer can be used directly on higher levels (e.g. the user interface menu) as they were a single button. This hack may have an alternative purpose: a Proof Of Concept of virtual buttons for controllers which lacks of buttons. (@twinaphex: what's your opinion ?) Maybe this post is out of scope of this thread, but consequences of my FIX may suggest this idea.

@twinaphex

I committed your improvements to IOHIDManager to the code, and I submitted the Nimbus autoconfig file too, thank you very much.

You're welcome ! I'm happy to share my FIX to RetroArch community (specially here for Apple users). But as I state before, this is a QUICK FIX. In my opinion, they are 2 improvements to do before releasing it:

  1. Test it on IOS devices (I saw in code C preprocessor directives which mentioned IOS)
  2. Add robustness in buttons detection code

The 2nd TODO list item refers to potential button IDs allocation determinism. The list which contains HID cookies rely on HID enumeration code. Implementation of the last one may be variable and button IDs may be variable, which is not acceptable. In order to improve button ID allocation, we may insert cookies in an "Ordered List" instead of simple linked list. The list may be sorted with help of the "use" member criterium. Example of button allocation IDs using an "Ordered List" for the Nimbus pad:

             +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
"Use" Member |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  | 144 | 145 | 146 | 147 | 547 |
   Button ID |  0  |  1  |  2  |  3  |  4  |  5  |  6  |  7  |  8  |  9  | 10  | 11  | 12  |
             +-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
      Ranges |<         X/Y/A/B/L1/L2/R1/R2 buttons         >|<        D-PAD        >|MENU |

In that way, HID button IDs allocation:

  1. becomes robust and determinist
  2. remains compatible with previous algorithm (i.e. btn->id = (uint32_t)(use - 1);) and so compatible with previous autoconfig files.

In the future, might I suggest trying to send a pull request instead? That'd be a lot easier for us to merge.

You're right, this is the regular way to submit a FIX. But I intentionally posted my code in order to share quickly the ability to use a MFI controller on OSX. This week-end, at least 2 persons (@Mr-se7enX and @aaronouthier) were playing with their Nimbus pad :) Also, I don't ask for the bounty associated to this issue ;)

yo6snap commented 6 years ago

@twinaphex: I see your commit on repository. It's great!

PS: Is it possible to mention (the way you want) my pseudonym or my real name in comments header of file iohidmanager_hid.c as a contributor ? (Now, there is a piece of me in this file:)

inactive123 commented 6 years ago

Just add it to the file as part of your next PR.

yo6snap commented 6 years ago

I tested RetroArch on real IOS device (iPad mini 1/iOS 9.3.5/Build and run from Xcode/RetroArch_iOS.xcodeproj) but I cannot test HID driver code. The -DHAVE_IOHIDMANAGER preprocessor directive is not set in project, so HID driver is not compiled. (I suppose It has been intentional. IOKit framework on iOS is an Apple Private Framework)

@twinaphex: A minor problem subsists: HID driver remains displayed on iOS user menu (even if it is not functional). So, "HID" may be removed from "Joypad Driver" menu options. Users may be confused. For now, iOS users must choose the MFI driver (which works well) in order to use their Nimbus controller.

Mr-se7enX commented 6 years ago

yo6snap@ I tested your fix for (iohidmanager_hid.c) on retroarch 1.7.0 mac and iOS 11. MFi works on both. I got retroarch version from https://github.com/libretro/RetroArch/tree/v1.7.0 . iCade doesn't work on ios 11, if you wanna take a look on it that would be great.

yo6snap commented 6 years ago

@Mr-se7enX Thank you for your feedback. I hope you’ll enjoy this FIX!

iCade: I have an iPad with iOS 11 installed but I don’t have iCade hardware (but I would have one:)

I want to help you, but can you give me references of a compatible controller? I you do, I will be able to debug the MFI RetroArch driver with iCade compatible hardware.

Mr-se7enX commented 6 years ago

any controller that has "iCade mode" like 8bitdo controllers. "RetroArch_iOS.xcodeproj" support iCade mode on ios 8, 9 and 10. But it can't be compiled on iOS 11. Only RetroArch_iOS10.xcodeproj compatible with iOS 11 but no iCade mode. You can go this website(https://github.com/libretro/RetroArch/tree/v1.7.0) and download Retroarch 1.7.0. Try to install RetroArch_iOS.xcodeproj on iOS 11 .

yoshisuga commented 6 years ago

iCade mode (or anything keyboard related) will not work on iOS 11. It stopped working on iOS 11 because RetroArch uses private header methods to read the keyboard and that stopped working in iOS 11.

The fix is to implement iCade support using the standard iOS APIs (UIKit) and send the keyboard events to RetroArch. I'd like to do this sometime but I haven't had the time to dedicate to it yet.

If anyone is willing to do this, here is an idea on how to do this:

In ui/drivers/cocoa/cocoa_common.m:

There;s some existing code that handles the key mapping between iCade inputs and RetroArch inputs so that can be used.

On Thu, Jan 25, 2018 at 9:59 AM, Mr-se7enX notifications@github.com wrote:

any controller that has "iCade mode" like 8bitdo controllers. "RetroArch_iOS.xcodeproj" support iCade mode on ios 8, 9 and 10. But it can't be compiled on iOS 11. Only RetroArch_iOS10.xcodeproj compatible with iOS 11 but no iCade mode. You can go this website(https://github.com/libretro/RetroArch/tree/v1.7.0) and download Retroarch 1.7.0. Try to install RetroArch_iOS.xcodeproj on iOS 11 .

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/libretro/RetroArch/issues/4816#issuecomment-360582832, or mute the thread https://github.com/notifications/unsubscribe-auth/AAieJsbLXkLJJ4os6lGTP2W4vmZ-HSTkks5tON0vgaJpZM4M4PQA .

yo6snap commented 6 years ago

Thank you @yoshisuga! In other words:

In order to implement and test iCade controller input handling, 2 hardware items are needed:

  1. An iDevice (iPhone|iPad|iPod touch) with iOS 11 installed
  2. A bluetooth keyboard (which acts as an iCade controller)

And a (iCade <-> keyboard) key mapping which can be found in Retroarch source code. (as you mentioned before)

@Mr-se7enX

I suggest you to create an another post, because iCade/iOS11 subject is out of this thread scope. (HID driver can't help on IOS11 and this thread was originally dedicated to OSX)

yo6snap commented 6 years ago

@Mr-se7enX: Good news! If you want, you can use your iCade controller on IOS 11! I've just open an issue here and post a technical solution.