Pulse-Eight / libcec

USB CEC Adapter communication Library http://libcec.pulse-eight.com/
Other
704 stars 282 forks source link

FindAdaptersUdev causing assert with systemd 256 #658

Open heitbaum opened 3 weeks ago

heitbaum commented 3 weeks ago

https://github.com/Pulse-Eight/libcec/blob/bf5a97d7673033ef6228c63109f6baf2bdbe1a0c/src/libcec/adapter/Pulse-Eight/USBCECAdapterDetection.cpp#L373

Thread 1 (Thread 0x7f5628a006c0 (LWP 3651)):
#0  0x00007f5665cbc93c in ?? () from /usr/lib/libc.so.6
No symbol table info available.
#1  0x00007f5665c6ca12 in raise () from /usr/lib/libc.so.6
No symbol table info available.
#2  0x00007f5665c574a2 in abort () from /usr/lib/libc.so.6
No symbol table info available.
#3  0x00007f56691c6cb5 in ?? () from /usr/lib/libudev.so.1
No symbol table info available.
#4  0x00007f56691e5ad7 in ?? () from /usr/lib/libudev.so.1
No symbol table info available.
#5  0x00007f56691c76cf in udev_device_get_parent () from /usr/lib/libudev.so.1
No symbol table info available.
#6  0x00007f5669994c60 in CEC::CUSBCECAdapterDetection::FindAdaptersUdev(CEC::cec_adapter_descriptor*, unsigned char, char const*) () from /usr/lib/libcec.so.6
No symbol table info available.
#7  0x00007f566999592e in CEC::CUSBCECAdapterDetection::FindAdapters(CEC::cec_adapter_descriptor*, unsigned char, char const*) () from /usr/lib/libcec.so.6
No symbol table info available.
#8  0x00007f5669984aad in CEC::CAdapterFactory::DetectAdapters(CEC::cec_adapter_descriptor*, unsigned char, char const*) () from /usr/lib/libcec.so.6
No symbol table info available.
#9  0x00007f566997d6ff in CEC::CLibCEC::DetectAdapters(CEC::cec_adapter_descriptor*, unsigned char, char const*, bool) () from /usr/lib/libcec.so.6
No symbol table info available.
#10 0x00000000012dfdec in PERIPHERALS::CPeripheralBusCEC::PerformDeviceScan(PERIPHERALS::PeripheralScanResults&) ()
No symbol table info available.
#11 0x00000000012dc689 in PERIPHERALS::CPeripheralBus::ScanForDevices() ()
No symbol table info available.
#12 0x00000000012dce0a in PERIPHERALS::CPeripheralBus::Process() ()
No symbol table info available.
#13 0x0000000000df0373 in CThread::Action() ()
No symbol table info available.
#14 0x0000000000df404e in ?? ()
No symbol table info available.
#15 0x00007f5665edfe34 in ?? () from /usr/lib/libstdc++.so.6
No symbol table info available.
#16 0x00007f5665cbaeaa in ?? () from /usr/lib/libc.so.6
No symbol table info available.
#17 0x00007f5665d305a8 in ?? () from /usr/lib/libc.so.6
No symbol table info available.
rax            0x0                 0
rbx            0xe43               3651
rcx            0x7f5665cbc93c      140009051769148
rdx            0x6                 6
rsi            0xe43               3651
rdi            0xe11               3601
rbp            0x7f5628a006c0      0x7f5628a006c0
rsp            0x7f56289fa400      0x7f56289fa400
r8             0x0                 0
r9             0x0                 0
r10            0x8                 8
r11            0x246               582
r12            0x7f56691f0783      140009107556227
r13            0x6                 6
r14            0x7f56691f300a      140009107566602
r15            0x7f56691f4430      140009107571760
rip            0x7f5665cbc93c      0x7f5665cbc93c
eflags         0x246               [ PF ZF IF ]
cs             0x33                51
ss             0x2b                43
ds             0x0                 0
es             0x0                 0
fs             0x0                 0
gs             0x0                 0
fs_base        0x7f5628a006c0      140008025491136
gs_base        0x0                 0

causing crash with systemd 256 (works in systemd 255.7) - assert_return_errno(udev_device, NULL, EINVAL); looking at the code, an initial return of NULL in the inner parent call would trigger this.

https://github.com/systemd/systemd/blob/21f51d877fefd380c7ea388d579f1cc7dc19b226/src/libudev/libudev-device.c#L407

Jun 12 11:20:21 nuc12 kodi.sh[3601]: Assertion 'udev_device' failed at src/libudev/libudev-device.c:407, function udev_device_get_parent(). Aborting.
Jun 12 11:20:22 nuc12 kodi.sh[3550]: Aborted (core dumped)

https://github.com/systemd/systemd/issues/33292