ref: https://unity3d.atlassian.net/servicedesk/customer/portal/2/IN-151285
#11 NativeMethodsLibudev1_udev_enumerate_unref
#12 LinuxHidManager_GetDeviceKeys
#13 HidManager_GetDevices
#14 HidManager_GetDevices
#15 DeviceList_GetHidDevices
#16 IODetector_Init
#17 GameManager_StartInternal (coroutine)
#18 GameManager_Start
#20 il2cpp::vm::Runtime::InvokeWithThrow
Frames #11-#15 belong to HidSharp: its Linux backend (LinuxHidManager) and its libudev.so.1 P/Invoke bindings (NativeMethodsLibudev1). Frames #16-#19 are your own code, where > IODetector.Init calls into HidSharp from a coroutine started in GameManager.Start.
The double free occurs inside libudev, reached directly from HidSharp's udev_enumerate_unref call. There is no engine code between your script and libudev; the engine's only > involvement is il2cpp::vm::Runtime::Invoke dispatching your MonoBehaviour's Start(). This also explains why the crash is identical with the Input System package and with the > old Input Manager, as HidSharp communicates with libudev directly and does not use Unity's input stack.
ref: https://unity3d.atlassian.net/servicedesk/customer/portal/2/IN-151285