https://bugs.kde.org/show_bug.cgi?id=500951

--- Comment #3 from Jona Wagner <j...@jonawagner.me> ---
I did some more debugging (coredump available if needed)

the Display Lock Record of libddcutil has this data:
(gdb) p dlr
$1 = (Display_Lock_Record *) 0x5b97091df140
(gdb) p *dlr
$2 = {marker = "DDSC", io_path = {io_mode = DDCA_IO_I2C, path = {i2c_busno = 4,
hiddev_devno = 4}}, display_mutex = {p = 0x1, i = {1, 0}}, display_mutex_thread
= 0x7602b8000de0, linux_thread_id = 20887}

The noted linux_thread_id is still active, the backtrace follows:
```
(gdb) thr 2
[Switching to thread 2 (Thread 0x7602c5ffb6c0 (LWP 20887))]
#0  __syscall_cancel_arch () at
../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
56              ret
(gdb) bt
#0  __syscall_cancel_arch () at
../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
#1  0x00007602e7a9fe33 in __internal_syscall_cancel (a1=<optimized out>,
a2=<optimized out>, a3=<optimized out>, a4=<optimized out>, a5=a5@entry=8,
a6=a6@entry=0, nr=271) at cancellation.c:49
#2  0x00007602e7a9fe74 in __syscall_cancel (a1=<optimized out>, a2=<optimized
out>, a3=<optimized out>, a4=<optimized out>, a5=a5@entry=8, a6=a6@entry=0,
nr=271) at cancellation.c:75
#3  0x00007602e7b1aa06 in __GI_ppoll (fds=fds@entry=0x5b9709222c90,
nfds=nfds@entry=1, timeout=<optimized out>, timeout@entry=0x0,
sigmask=sigmask@entry=0x0) at ../sysdeps/unix/sysv/linux/ppoll.c:42
#4  0x00007602e689f6a7 in ppoll (__fds=0x5b9709222c90, __nfds=1, __timeout=0x0,
__ss=0x0) at /usr/include/bits/poll2.h:101
#5  g_main_context_poll_unlocked (priority=<optimized out>,
context=0x7602b8000c40, timeout_usec=<optimized out>, fds=0x5b9709222c90,
n_fds=1) at ../glib/glib/gmain.c:4591
#6  g_main_context_iterate_unlocked.isra.0
(context=context@entry=0x7602b8000c40, block=block@entry=1,
dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4268
#7  0x00007602e683be15 in g_main_context_iteration (context=0x7602b8000c40,
may_block=1) at ../glib/glib/gmain.c:4338
#8  0x00007602e77c575d in QEventDispatcherGlib::processEvents
(this=0x7602b8001010, flags=...) at
/usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:399
#9  0x00007602e75606a6 in QEventLoop::processEvents (this=0x7602c5ffaa70,
flags=...) at
/usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:103
#10 QEventLoop::exec (this=0x7602c5ffaa70, flags=...) at
/usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:185
#11 0x00007602e7657999 in QThread::exec (this=<optimized out>) at
/usr/src/debug/qt6-base/qtbase/src/corelib/thread/qthread.cpp:590
#12 QThread::run (this=<optimized out>) at
/usr/src/debug/qt6-base/qtbase/src/corelib/thread/qthread.cpp:711
#13 0x00007602e76d8a9b in operator() (__closure=<optimized out>) at
/usr/src/debug/qt6-base/qtbase/src/corelib/thread/qthread_unix.cpp:375
#14 (anonymous
namespace)::terminate_on_exception<QThreadPrivate::start(void*)::<lambda()> >
(t=...) at
/usr/src/debug/qt6-base/qtbase/src/corelib/thread/qthread_unix.cpp:311
#15 QThreadPrivate::start (arg=0x7602d801f188) at
/usr/src/debug/qt6-base/qtbase/src/corelib/thread/qthread_unix.cpp:339
#16 0x00007602e7aa370a in start_thread (arg=<optimized out>) at
pthread_create.c:448
#17 0x00007602e7b27aac in __GI___clone3 () at
../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
```

I also checked the callback thread
Mar 02 10:30:14 r9950 org_kde_powerdevil[1989]: [ 20885] libddcutil callback
thread 0x7602bc002e00 started

while the thread meta information still resides in memory
```
(gdb) p *(GThreadPosix*)0x7602bc002e00 
$11 = {thread = {thread = {func = 0x7602e6ce4980 <dw_execute_callback_func>,
data = 0x7602bc002a40, joinable = 1, priority = G_THREAD_PRIORITY_LOW},
ref_count = 1, ours = 1, name = 0x0, retval = 0x0}, 
  system_thread = 129754267096768, joined = 0, lock = {p = 0x0, i = {0, 0}},
proxy = 0x7602e6871f10 <g_thread_proxy>}
(gdb) p (pthread_t*) 129754267096768
$13 = (pthread_t *) 0x7602c4ff96c0
```
the thread is no longer running
```
(gdb) info thr
  Id   Target Id                         Frame 
  1    Thread 0x7602df5c4ac0 (LWP 1989)  __syscall_cancel_arch () at
../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
* 2    Thread 0x7602c5ffb6c0 (LWP 20887) __syscall_cancel_arch () at
../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
  3    Thread 0x7602dc9fa6c0 (LWP 2023)  __syscall_cancel_arch () at
../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
  4    Thread 0x7602dd1fb6c0 (LWP 2022)  __syscall_cancel_arch () at
../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
  5    Thread 0x7602dd9fc6c0 (LWP 2021)  syscall () at
../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
  6    Thread 0x7602de1fd6c0 (LWP 2020)  __syscall_cancel_arch () at
../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
  7    Thread 0x7602de9fe6c0 (LWP 2019)  __syscall_cancel_arch () at
../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
  8    Thread 0x7602df1ff6c0 (LWP 2005)  __syscall_cancel_arch () at
../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
```

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to