[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    deadlock in image provider when application quits
From:       Sander van Grieken <sander () outrightsolutions ! nl>
Date:       2022-08-23 10:46:02
Message-ID: 3508126.52vHKpl0GG () sputnik
[Download RAW message or body]

Hi,


I'm running into what looks like a deadlock situation when using asynchronous: 
true on an QtQuick Image component when the application quits.


Strangely this only happens when the image is 'big' (e.g. >256x256 png), not 
when the image was small (128x128 png)


It doesn't matter if the Image is destroyed or still alive, once it is used 
asynchronously once, the deadlock on exit happens


Using PyQt5-5.15.7 with Qt5 from Debian testing.



[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
0x00007faef9d690fa in __futex_abstimed_wait_common64 
(futex_word=futex_word@entry=0x5592902730b0, 
expected=expected@entry=0, clockid=clockid@entry=0, 
abstime=abstime@entry=0x0, private=private@entry=0, 
cancel=cancel@entry=true) at ../sysdeps/nptl/futex-internal.c:74
74      ../sysdeps/nptl/futex-internal.c: No such file or directory.
(gdb) bt
#0  0x00007faef9d690fa in __futex_abstimed_wait_common64 
(futex_word=futex_word@entry=0x5592902730b0, 
expected=expected@entry=0, clockid=clockid@entry=0, 
abstime=abstime@entry=0x0, 
    private=private@entry=0, cancel=cancel@entry=true) at ../sysdeps/nptl/futex-
internal.c:74
#1  0x00007faef9d6915b in __GI___futex_abstimed_wait_cancelable64 
(futex_word=futex_word@entry=0x5592902730b0, 
expected=expected@entry=0, clockid=clockid@entry=0, 
    abstime=abstime@entry=0x0, private=private@entry=0) at ../sysdeps/nptl/
futex-internal.c:123
#2  0x00007faef9d62c30 in __pthread_cond_wait_common (abstime=0x0, 
clockid=0, mutex=0x559290273060, cond=0x559290273088) at 
pthread_cond_wait.c:504
#3  __pthread_cond_wait (cond=0x559290273088, mutex=0x559290273060) 
at pthread_cond_wait.c:619
#4  0x00007faef48d195b in QWaitCondition::wait(QMutex*, QDeadlineTimer) () 
from /lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007faef48cb9a1 in QThread::wait(QDeadlineTimer) () from /lib/x86_64-
linux-gnu/libQt5Core.so.5
#6  0x00007faee694faea in ?? () from /lib/x86_64-linux-gnu/libQt5Quick.so.5
#7  0x00007faee694fd79 in ?? () from /lib/x86_64-linux-gnu/libQt5Quick.so.5
#8  0x00007faef4adae6e in QObjectPrivate::deleteChildren() () from /lib/
x86_64-linux-gnu/libQt5Core.so.5
#9  0x00007faef4ae6a40 in QObject::~QObject() () from /lib/x86_64-linux-gnu/
libQt5Core.so.5
#10 0x00007faef5ca7469 in ?? () from /usr/lib/python3/dist-packages/PyQt5/
QtQml.abi3.so
#11 0x00007faef4adae6e in QObjectPrivate::deleteChildren() () from /lib/
x86_64-linux-gnu/libQt5Core.so.5
#12 0x00007faef4ae6a40 in QObject::~QObject() () from /lib/x86_64-linux-gnu/
libQt5Core.so.5
#13 0x00007faee7dd8ca9 in ?? () from /usr/lib/python3/dist-packages/PyQt5/
QtGui.abi3.so
#14 0x00007faeed81c5b9 in ?? () from /usr/lib/python3/dist-packages/PyQt5/
QtCore.abi3.so
#15 0x000055928df6390e in ?? ()
#16 0x000055928e05a7f4 in ?? ()
#17 0x000055928e059cba in Py_FinalizeEx ()
#18 0x000055928e06bc08 in Py_Exit ()
#19 0x000055928e05bcfb in ?? ()
#20 0x000055928e05bc29 in PyErr_PrintEx ()
#21 0x000055928e058e62 in _PyRun_SimpleFileObject ()
#22 0x000055928e058b93 in _PyRun_AnyFileObject ()
#23 0x000055928e04c80a in Py_RunMain ()
#24 0x000055928e027319 in Py_BytesMain ()
#25 0x00007faef9b9d81d in __libc_start_main (main=0x55928e0272e0, 
argc=10, argv=0x7ffdc00db078, init=<optimized out>, fini=<optimized out>, 
rtld_fini=<optimized out>, 
    stack_end=0x7ffdc00db068) at ../csu/libc-start.c:332
#26 0x000055928e02721a in _start ()



[Attachment #3 (unknown)]

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body><p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">Hi,</p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;"><br /></p>
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">I'm running \
into what looks like a deadlock situation when using asynchronous: true on an QtQuick \
Image component when the application quits.</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;"><br /></p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">Strangely this \
only happens when the image is 'big' (e.g. &gt;256x256 png), not when the image was \
small (128x128 png)</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;"><br /></p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">It doesn't matter \
if the Image is destroyed or still alive, once it is used asynchronously once, the \
deadlock on exit happens</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;"><br /></p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">Using PyQt5-5.15.7 \
with Qt5 from Debian testing.</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;"><br /><br /></p> \
<p style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">[Thread \
debugging using libthread_db enabled]</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">Using host \
libthread_db library &quot;/lib/x86_64-linux-gnu/libthread_db.so.1&quot;.</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">0x00007faef9d690fa \
in __futex_abstimed_wait_common64 (futex_word=futex_word@entry=0x5592902730b0, \
expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, \
private=private@entry=0, cancel=cancel@entry=true) at \
../sysdeps/nptl/futex-internal.c:74</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">74      \
../sysdeps/nptl/futex-internal.c: No such file or directory.</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">(gdb) bt</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#0  \
0x00007faef9d690fa in __futex_abstimed_wait_common64 \
(futex_word=futex_word@entry=0x5592902730b0, expected=expected@entry=0, \
clockid=clockid@entry=0, abstime=abstime@entry=0x0, </p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">    \
private=private@entry=0, cancel=cancel@entry=true) at \
../sysdeps/nptl/futex-internal.c:74</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#1  \
0x00007faef9d6915b in __GI___futex_abstimed_wait_cancelable64 \
(futex_word=futex_word@entry=0x5592902730b0, expected=expected@entry=0, \
clockid=clockid@entry=0, </p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">    \
abstime=abstime@entry=0x0, private=private@entry=0) at \
../sysdeps/nptl/futex-internal.c:123</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#2  \
0x00007faef9d62c30 in __pthread_cond_wait_common (abstime=0x0, clockid=0, \
mutex=0x559290273060, cond=0x559290273088) at pthread_cond_wait.c:504</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#3  \
__pthread_cond_wait (cond=0x559290273088, mutex=0x559290273060) at \
pthread_cond_wait.c:619</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#4  \
0x00007faef48d195b in QWaitCondition::wait(QMutex*, QDeadlineTimer) () from \
/lib/x86_64-linux-gnu/libQt5Core.so.5</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#5  \
0x00007faef48cb9a1 in QThread::wait(QDeadlineTimer) () from \
/lib/x86_64-linux-gnu/libQt5Core.so.5</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#6  \
0x00007faee694faea in ?? () from /lib/x86_64-linux-gnu/libQt5Quick.so.5</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#7  \
0x00007faee694fd79 in ?? () from /lib/x86_64-linux-gnu/libQt5Quick.so.5</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#8  \
0x00007faef4adae6e in QObjectPrivate::deleteChildren() () from \
/lib/x86_64-linux-gnu/libQt5Core.so.5</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#9  \
0x00007faef4ae6a40 in QObject::~QObject() () from \
/lib/x86_64-linux-gnu/libQt5Core.so.5</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#10 \
0x00007faef5ca7469 in ?? () from \
/usr/lib/python3/dist-packages/PyQt5/QtQml.abi3.so</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#11 \
0x00007faef4adae6e in QObjectPrivate::deleteChildren() () from \
/lib/x86_64-linux-gnu/libQt5Core.so.5</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#12 \
0x00007faef4ae6a40 in QObject::~QObject() () from \
/lib/x86_64-linux-gnu/libQt5Core.so.5</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#13 \
0x00007faee7dd8ca9 in ?? () from \
/usr/lib/python3/dist-packages/PyQt5/QtGui.abi3.so</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#14 \
0x00007faeed81c5b9 in ?? () from \
/usr/lib/python3/dist-packages/PyQt5/QtCore.abi3.so</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#15 \
0x000055928df6390e in ?? ()</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#16 \
0x000055928e05a7f4 in ?? ()</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#17 \
0x000055928e059cba in Py_FinalizeEx ()</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#18 \
0x000055928e06bc08 in Py_Exit ()</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#19 \
0x000055928e05bcfb in ?? ()</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#20 \
0x000055928e05bc29 in PyErr_PrintEx ()</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#21 \
0x000055928e058e62 in _PyRun_SimpleFileObject ()</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#22 \
0x000055928e058b93 in _PyRun_AnyFileObject ()</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#23 \
0x000055928e04c80a in Py_RunMain ()</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#24 \
0x000055928e027319 in Py_BytesMain ()</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#25 \
0x00007faef9b9d81d in __libc_start_main (main=0x55928e0272e0, argc=10, \
argv=0x7ffdc00db078, init=&lt;optimized out&gt;, fini=&lt;optimized out&gt;, \
rtld_fini=&lt;optimized out&gt;, </p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">    \
stack_end=0x7ffdc00db068) at ../csu/libc-start.c:332</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;">#26 \
0x000055928e02721a in _start ()</p> <p \
style="margin-top:0;margin-bottom:0;margin-left:0;margin-right:0;"><br /></p> </body>
</html>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic