lazd / VoodooI2CGoodix

VoodooI2C satellite driver for Goodix touchscreens in C++
GNU General Public License v3.0
24 stars 7 forks source link

Occasional kernel panic on unload #3

Closed lazd closed 4 years ago

lazd commented 4 years ago

Steps

  1. Assuming the kexts are available in ~/tmp, load and unload the kernel extension over and over with the following:
sudo chown -R root:wheel ~/tmp/VoodooI2C*.kext
sudo kextutil -d ~/tmp/VoodooI2C.kext ~/tmp/VoodooI2CGoodix.kext
sudo kextunload -b net.lazd.VoodooI2CGoodix
  1. Observe kernel panic:
panic(cpu 2 caller 0xffffff801a66520a): Kernel trap at 0xffffff7f9e11f7cf, type 14=page fault, registers:
CR0: 0x000000008001003b, CR2: 0x0000000000000000, CR3: 0x0000000030941000, CR4: 0x00000000003626e0
RAX: 0x0000000000000000, RBX: 0xffffff80670dbeb0, RCX: 0xffffff7f9e11f79a, RDX: 0x0000000000000000
RSP: 0xffffff821c48bf90, RBP: 0xffffff821c48bfa0, RSI: 0xffffff7f9e11f7f0, RDI: 0x0000000000000000
R8:  0x0000000000000001, R9:  0x0000000000989680, R10: 0x0000000000000000, R11: 0x0000000000000004
R12: 0xffffff7f9e11f79a, R13: 0xffffff80670dbeb0, R14: 0x0000000000000000, R15: 0xffffff80670dbeb0
RFL: 0x0000000000010246, RIP: 0xffffff7f9e11f7cf, CS:  0x0000000000000008, SS:  0x0000000000000010
Fault CR2: 0x0000000000000000, Error code: 0x0000000000000000, Fault CPU: 0x2, PL: 0, VF: 1

Backtrace (CPU 2), Frame : Return Address
0xffffff821c48b9f0 : 0xffffff801a53bb1b mach_kernel : _handle_debugger_trap + 0x47b
0xffffff821c48ba40 : 0xffffff801a6733e5 mach_kernel : _kdp_i386_trap + 0x155
0xffffff821c48ba80 : 0xffffff801a664e5e mach_kernel : _kernel_trap + 0x4ee
0xffffff821c48bad0 : 0xffffff801a4e2a40 mach_kernel : _return_from_trap + 0xe0
0xffffff821c48baf0 : 0xffffff801a53b207 mach_kernel : _DebuggerTrapWithState + 0x17
0xffffff821c48bbf0 : 0xffffff801a53b5eb mach_kernel : _panic_trap_to_debugger + 0x21b
0xffffff821c48bc40 : 0xffffff801acd24f9 mach_kernel : _panic + 0x61
0xffffff821c48bcb0 : 0xffffff801a66520a mach_kernel : _sync_iss_to_iks + 0x2aa
0xffffff821c48be30 : 0xffffff801a664f08 mach_kernel : _kernel_trap + 0x598
0xffffff821c48be80 : 0xffffff801a4e2a40 mach_kernel : _return_from_trap + 0xe0
0xffffff821c48bea0 : 0xffffff7f9e11f7cf net.lazd.VoodooI2CGoodix : __ZN26VoodooI2CGoodixTouchDriver21handle_input_threadedEv + 0x35
0xffffff821c48bfa0 : 0xffffff801a4e213e mach_kernel : _call_continuation + 0x2e
      Kernel Extensions in backtrace:
         net.lazd.VoodooI2CGoodix(1.0)[37A7426B-E9F7-3C27-8DB9-1080650F00FC]@0xffffff7f9e11e000->0xffffff7f9e126fff
            dependency: com.apple.iokit.IOHIDFamily(2.0.0)[9A2A89A2-62FE-373E-8520-F6BBCBE4CB6A]@0xffffff7f9b2cf000
            dependency: com.alexandred.VoodooI2C(2.3)[1336B4AF-CDDD-3F3F-978C-7C13EAB53E54]@0xffffff7f9d7fa000
            dependency: com.apple.iokit.IOACPIFamily(1.4)[3467C105-9354-3BD2-85F3-E5AEF94BD275]@0xffffff7f9b635000

BSD process name corresponding to current thread: kernel_task
Boot args: -cdfon -igfxmlr -igfxhdmidivs -v keepsyms=1 

Mac OS version:
19C57

Kernel version:
Darwin Kernel Version 19.2.0: Sat Nov  9 03:47:04 PST 2019; root:xnu-6153.61.1~20/RELEASE_X86_64
Kernel UUID: C3E7E405-C692-356B-88D3-C30041FD1E72
Kernel slide:     0x000000001a200000
Kernel text base: 0xffffff801a400000
__HIB  text base: 0xffffff801a300000
System model name: MacBook10,1 (Mac-EE2EBD4B90B839A8)
System shutdown begun: NO
Panic diags file available: YES (0x0)

Notes

This may be related to the fact that event_driver->stop() is not called from within VoodooI2CGoodixTouchDriver::release_resources() (causes a kernel panic of its own).