Package: libqt5gui5 Version: 5.11.3+dfsg1-1 Severity: wishlist Tags: upstream Affects: konsole orca
Dear Maintainer, I noted some recent additions to bug #594506 which I guess describe a different problem. I did some investigations and tripped on the issue with following steps: - Installed in a qemu VM a minimal Buster/amd64 system, plus plasma-desktop, konsole, mc and orca. - In systemsettings activate orca and changed orca to read the text below the mouse. - Restarted - Open konsole - Inside that console, start "mc" - Move the mouse over the konsole window - Now konsole is frozen, endless looping in QAccessibleTextInterface::textAtOffset. As far as I see the problem might be that boundary.position() returns -1, therefore the condition to leave the second loop in QAccessibleTextInterface::textAtOffset is never reached. I could create a minimal reproducer that demonstrates the issue. (reproduzer.tar.gz) A workaround could be the attached patch that just leaves the function in this situation with some logging. (Leave-QAccessibleTextInterface__textAtOffset.patch) Kind regards, Bernhard Thread 1 (Thread 0x7f2babb65840 (LWP 1312)): #0 0x00007f2bb0f08a34 in QTextBoundaryFinder::toNextBoundary (this=this@entry=0x7fff257d6d60) at tools/qtextboundaryfinder.cpp:366 #1 0x00007f2bb14443ac in QAccessibleTextInterface::textAtOffset (this=<optimized out>, offset=0, boundaryType=QAccessible::WordBoundary, startOffset=0x7fff257d6e08, endOffset=0x7fff257d6e0c) at accessible/qaccessible.cpp:2321 #2 0x00007f2bab7f28df in AtSpiAdaptor::textInterface (this=<optimized out>, interface=<optimized out>, function=..., message=..., connection=...) at atspiadaptor.cpp:1908 #3 0x00007f2bab7f321d in AtSpiAdaptor::handleMessage (this=this@entry=0x5619664085d0, message=..., connection=...) at atspiadaptor.cpp:1284 #4 0x00007f2bb072bdf9 in QDBusConnectionPrivate::activateObject (this=0x7f2b9c014520, node=..., msg=..., pathStartPos=27) at qdbusconnection_p.h:345 #5 0x00007f2bb072e8ce in QDBusActivateObjectEvent::placeMetaCall (this=0x7f2b9c01ed00) at qdbusintegrator.cpp:1597 #6 0x00007f2bb1056182 in QObject::event (this=0x5619664085d0, e=<optimized out>) at kernel/qobject.cpp:1251 #7 0x00007f2bb1a474b1 in QApplicationPrivate::notify_helper (this=this@entry=0x561965f3e270, receiver=receiver@entry=0x5619664085d0, e=e@entry=0x7f2b9c01ed00) at kernel/qapplication.cpp:3726 #8 0x00007f2bb1a4e950 in QApplication::notify (this=0x561965f3e030, receiver=0x5619664085d0, e=0x7f2b9c01ed00) at kernel/qapplication.cpp:3485 #9 0x00007f2bb102c5a9 in QCoreApplication::notifyInternal2 (receiver=0x5619664085d0, event=0x7f2b9c01ed00) at ../../include/QtCore/5.11.3/QtCore/private/../../../../../src/corelib/thread/qthread_p.h:307 #10 0x00007f2bb102f59b in QCoreApplication::sendEvent (event=0x7f2b9c01ed00, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:234 #11 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x561965f3d600) at kernel/qcoreapplication.cpp:1744 #12 0x00007f2bb107e233 in postEventSourceDispatch (s=0x561965f95a00) at kernel/qeventdispatcher_glib.cpp:276 #13 0x00007f2baf2dff2e in g_main_dispatch (context=0x7f2ba4004ff0) at ../../../glib/gmain.c:3182 #14 g_main_context_dispatch (context=context@entry=0x7f2ba4004ff0) at ../../../glib/gmain.c:3847 #15 0x00007f2baf2e01c8 in g_main_context_iterate (context=context@entry=0x7f2ba4004ff0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:3920 #16 0x00007f2baf2e025c in g_main_context_iteration (context=0x7f2ba4004ff0, may_block=may_block@entry=1) at ../../../glib/gmain.c:3981 #17 0x00007f2bb107d863 in QEventDispatcherGlib::processEvents (this=0x561965f8d0c0, flags=...) at kernel/qeventdispatcher_glib.cpp:422 #18 0x00007f2bab7c93e1 in QPAEventDispatcherGlib::processEvents (this=0x561965f8d0c0, flags=...) at qeventdispatcher_glib.cpp:69 #19 0x00007f2bb102b27b in QEventLoop::exec (this=this@entry=0x7fff257d7580, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:140 #20 0x00007f2bb1033262 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:120 #21 0x00007f2bb146cbdc in QGuiApplication::exec () at kernel/qguiapplication.cpp:1762 #22 0x00007f2bb1a47425 in QApplication::exec () at kernel/qapplication.cpp:2900 #23 0x00007f2bb2a94827 in kdemain (argc=<optimized out>, argv=<optimized out>) at ./src/main.cpp:190 #24 0x00007f2bb28cf09b in __libc_start_main (main=0x5619659be730 <main>, argc=1, argv=0x7fff257d7838, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff257d7828) at ../csu/libc-start.c:308 #25 0x00005619659be76a in _start () -- System Information: Debian Release: 10.0 APT prefers stable-debug APT policy: (500, 'stable-debug'), (500, 'stable') Architecture: amd64 (x86_64) Kernel: Linux 4.19.0-5-amd64 (SMP w/12 CPU cores) Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8), LANGUAGE=de_DE.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages libqt5gui5 depends on: ii fontconfig 2.13.1-2 ii libc6 2.28-10 ii libdrm2 2.4.97-1 ii libegl1 1.1.0-1 ii libfontconfig1 2.13.1-2 ii libfreetype6 2.9.1-3 ii libgbm1 18.3.6-2 ii libgcc1 1:8.3.0-6 ii libgl1 1.1.0-1 ii libharfbuzz0b 2.3.1-1 ii libice6 2:1.0.9-2 ii libinput10 1.12.6-2 ii libjpeg62-turbo 1:1.5.2-2+b1 ii libmtdev1 1.1.5-1+b1 ii libpng16-16 1.6.36-6 ii libqt5core5a [qtbase-abi-5-11-3] 5.11.3+dfsg1-1 ii libqt5dbus5 5.11.3+dfsg1-1 ii libqt5network5 5.11.3+dfsg1-1 ii libsm6 2:1.2.3-1 ii libstdc++6 8.3.0-6 ii libudev1 241-5 ii libx11-6 2:1.6.7-1 ii libx11-xcb1 2:1.6.7-1 ii libxcb-glx0 1.13.1-2 ii libxcb-icccm4 0.4.1-1.1 ii libxcb-image0 0.4.0-1+b2 ii libxcb-keysyms1 0.4.0-1+b2 ii libxcb-randr0 1.13.1-2 ii libxcb-render-util0 0.3.9-1+b1 ii libxcb-render0 1.13.1-2 ii libxcb-shape0 1.13.1-2 ii libxcb-shm0 1.13.1-2 ii libxcb-sync1 1.13.1-2 ii libxcb-xfixes0 1.13.1-2 ii libxcb-xinerama0 1.13.1-2 ii libxcb-xkb1 1.13.1-2 ii libxcb1 1.13.1-2 ii libxi6 2:1.7.9-1 ii libxkbcommon-x11-0 0.8.2-1 ii libxkbcommon0 0.8.2-1 ii libxrender1 1:0.9.10-1 ii zlib1g 1:1.2.11.dfsg-1 Versions of packages libqt5gui5 recommends: ii libqt5svg5 5.11.3-2 ii qt5-gtk-platformtheme 5.11.3+dfsg1-1 Versions of packages libqt5gui5 suggests: pn qt5-image-formats-plugins <none> ii qtwayland5 5.11.3-2 -- no debconf information
reproducer.tar.gz
Description: application/gzip
diff -Nurp orig/qtbase-opensource-src-5.11.3+dfsg1/src/gui/accessible/qaccessible.cpp try1/qtbase-opensource-src-5.11.3+dfsg1/src/gui/accessible/qaccessible.cpp --- orig/qtbase-opensource-src-5.11.3+dfsg1/src/gui/accessible/qaccessible.cpp 2018-11-25 13:51:11.000000000 +0100 +++ try1/qtbase-opensource-src-5.11.3+dfsg1/src/gui/accessible/qaccessible.cpp 2019-07-11 01:28:09.705785549 +0200 @@ -2316,6 +2316,10 @@ QString QAccessibleTextInterface::textAt break; } while (boundary.toPreviousBoundary() > 0); Q_ASSERT(boundary.position() >= 0); + if (boundary.position() < 0) { + qCWarning(lcAccessibilityCore) << "Invalid boundary.position() reached."; + return QString(); + } *startOffset = boundary.position(); while (boundary.toNextBoundary() < txt.length()) {
# Buster/stable amd64 qemu VM 2019-07-10 apt update apt dist-upgrade apt install systemd-coredump xserver-xorg sddm plasma-desktop konsole orca gstreamer1.0-plugins-good mc htop git fakeroot qtcreator gdb tmux xterm konsole-dbgsym libqt5core5a-dbgsym libqt5gui5-dbgsym libglib2.0-0-dbgsym libqt5widgets5-dbgsym libqt5dbus5-dbgsym apt build-dep konsole apt build-dep qtbase-opensource-src reboot mkdir /home/benutzer/source/libqt5gui5/orig -p cd /home/benutzer/source/libqt5gui5/orig apt source libqt5gui5 cd # retrive Qt pretty printer mkdir .gdb cd .gdb git clone https://github.com/Lekensteyn/qt5printers.git cat << EOF > qt5-gdbinit python import sys, os.path sys.path.insert(0, os.path.expanduser('~/.gdb')) import qt5printers qt5printers.register_printers(gdb.current_objfile()) end EOF cd .. ########### # login # raise volume a little # systemsettings - Zugangshilfen - Screenreader enable, Configure Orca - Objects below the mouse # reboot # too see the ouput on stdout/stderr: # start xterm script -c "/usr/bin/python3 /usr/bin/orca --replace" -a "/home/benutzer/orca_$(date +%Y-%m-%d_%H-%M-%S).log" # start another xterm script -c "konsole" -a "/home/benutzer/konsole_$(date +%Y-%m-%d_%H-%M-%S).log" # in konsole: mc # move mouse over that mc -> konsole hangs ############## htop: PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 1312 benutzer 20 0 1259M 87644 70436 R 100. 2.9 13:43.75 konsole ############## /home/benutzer/konsole_2019-07-10_23-45-24.log QSpiApplication::keyEventError "org.freedesktop.DBus.Error.NoReply" "Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken." ... ... message repeats a few times ... ############## /home/benutzer/orca_2019-07-10_23-43-38.log Traceback (most recent call last): File "/usr/lib/python3/dist-packages/pyatspi/registry.py", line 209, in eventWrapper return callback(event) File "/usr/lib/python3/dist-packages/orca/mouse_review.py", line 417, in _listener self._on_mouse_moved(event) File "/usr/lib/python3/dist-packages/orca/mouse_review.py", line 405, in _on_mouse_moved new = _ItemContext(pX, pY, obj, window, script) File "/usr/lib/python3/dist-packages/orca/mouse_review.py", line 114, in __init__ self._string = self._getStringContext() File "/usr/lib/python3/dist-packages/orca/mouse_review.py", line 167, in _getStringContext self._obj, self._x, self._y, boundary=boundary) File "/usr/lib/python3/dist-packages/orca/script_utilities.py", line 4055, in textAtPoint string, start, end = text.getTextAtOffset(offset, boundary) File "/usr/lib/python3/dist-packages/pyatspi/text.py", line 465, in getTextAtOffset ret = Atspi.Text.get_text_at_offset(self.obj, offset, type) gi.repository.GLib.Error: atspi_error: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken. (1) Traceback (most recent call last): File "/usr/lib/python3/dist-packages/pyatspi/registry.py", line 209, in eventWrapper return callback(event) File "/usr/lib/python3/dist-packages/orca/mouse_review.py", line 417, in _listener self._on_mouse_moved(event) File "/usr/lib/python3/dist-packages/orca/mouse_review.py", line 383, in _on_mouse_moved window = self._accessible_window_at_point(pX, pY) File "/usr/lib/python3/dist-packages/orca/mouse_review.py", line 363, in _accessible_window_at_point candidates = [o for o in app if self._contains_point(o, pX, pY)] File "/usr/lib/python3/dist-packages/orca/mouse_review.py", line 363, in <listcomp> candidates = [o for o in app if self._contains_point(o, pX, pY)] File "/usr/lib/python3/dist-packages/pyatspi/Accessibility.py", line 41, in Accessible_getitem len=self.get_child_count() gi.repository.GLib.Error: atspi_error: The process appears to be hung. (1) ... ... this paragraphs repeats now always the mouse is moved ... ############## gdb -q --pid $(pidof konsole) set width 0 set pagination off directory /home/benutzer/source/libqt5gui5/orig/qtbase-opensource-src-5.11.3+dfsg1/src/corelib directory /home/benutzer/source/libqt5gui5/orig/qtbase-opensource-src-5.11.3+dfsg1/src/gui directory /home/benutzer/source/libqt5gui5/orig/qtbase-opensource-src-5.11.3+dfsg1/src/platformsupport/linuxaccessibility source /home/benutzer/.gdb/qt5-gdbinit thread apply all bt detach q benutzer@debian:~$ gdb -q --pid $(pidof konsole) Attaching to process 1312 [New LWP 1313] [New LWP 1314] [New LWP 1315] [New LWP 1316] [New LWP 1317] [New LWP 1318] [New LWP 1319] [New LWP 1320] [New LWP 1321] [New LWP 1322] [New LWP 1323] [New LWP 1324] [New LWP 1325] [New LWP 1326] [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". 0x00007f2bb14443b1 in QAccessibleTextInterface::textAtOffset(int, QAccessible::TextBoundaryType, int*, int*) const () from /lib/x86_64-linux-gnu/libQt5Gui.so.5 (gdb) set width 0 (gdb) set pagination off (gdb) thread apply all bt Thread 15 (Thread 0x7f2b955e4700 (LWP 1326)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x561966107648) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x5619661075f8, cond=0x561966107620) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x561966107620, mutex=0x5619661075f8) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 14 (Thread 0x7f2b95de5700 (LWP 1325)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x5619661074e8) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x561966107498, cond=0x5619661074c0) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x5619661074c0, mutex=0x561966107498) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 13 (Thread 0x7f2b965e6700 (LWP 1324)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x561966107388) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x561966107338, cond=0x561966107360) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x561966107360, mutex=0x561966107338) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 12 (Thread 0x7f2b96de7700 (LWP 1323)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x561966107228) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x5619661071d8, cond=0x561966107200) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x561966107200, mutex=0x5619661071d8) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 11 (Thread 0x7f2b975e8700 (LWP 1322)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x5619661070c8) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x561966107078, cond=0x5619661070a0) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x5619661070a0, mutex=0x561966107078) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 10 (Thread 0x7f2b97de9700 (LWP 1321)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x561966106f68) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x561966106f18, cond=0x561966106f40) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x561966106f40, mutex=0x561966106f18) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 9 (Thread 0x7f2b985ea700 (LWP 1320)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x561966106e08) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x561966106db8, cond=0x561966106de0) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x561966106de0, mutex=0x561966106db8) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 8 (Thread 0x7f2ba0d0b700 (LWP 1319)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x561966106ca8) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x561966106c58, cond=0x561966106c80) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x561966106c80, mutex=0x561966106c58) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 7 (Thread 0x7f2ba150c700 (LWP 1318)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x561966106b48) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x561966106af8, cond=0x561966106b20) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x561966106b20, mutex=0x561966106af8) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 6 (Thread 0x7f2ba1d0d700 (LWP 1317)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x5619661069e8) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x561966106998, cond=0x5619661069c0) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x5619661069c0, mutex=0x561966106998) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 5 (Thread 0x7f2ba250e700 (LWP 1316)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x561966106888) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x561966106838, cond=0x561966106860) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x561966106860, mutex=0x561966106838) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 4 (Thread 0x7f2ba2d0f700 (LWP 1315)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x561966106728) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x5619661066d8, cond=0x561966106700) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x561966106700, mutex=0x5619661066d8) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 3 (Thread 0x7f2ba92e8700 (LWP 1314)): #0 0x00007f2bb2999819 in __GI___poll (fds=0x7f2b9c004db0, nfds=3, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29 #1 0x00007f2baf2e0136 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #2 0x00007f2baf2e025c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #3 0x00007f2bb107d863 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #4 0x00007f2bb102b27b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #5 0x00007f2bb0e7aec6 in QThread::exec() () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #6 0x00007f2bb071c545 in ?? () from /lib/x86_64-linux-gnu/libQt5DBus.so.5 #7 0x00007f2bb0e84aa7 in ?? () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #8 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #9 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 2 (Thread 0x7f2baada2700 (LWP 1313)): #0 0x00007f2bb2999819 in __GI___poll (fds=0x7f2baada1c78, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29 #1 0x00007f2baff31cf7 in ?? () from /lib/x86_64-linux-gnu/libxcb.so.1 #2 0x00007f2baff3391a in xcb_wait_for_event () from /lib/x86_64-linux-gnu/libxcb.so.1 #3 0x00007f2bab732d79 in ?? () from /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 #4 0x00007f2bb0e84aa7 in ?? () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 1 (Thread 0x7f2babb65840 (LWP 1312)): #0 0x00007f2bb14443b1 in QAccessibleTextInterface::textAtOffset(int, QAccessible::TextBoundaryType, int*, int*) const () from /lib/x86_64-linux-gnu/libQt5Gui.so.5 #1 0x00007f2bab7f28df in ?? () from /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 #2 0x00007f2bab7f321d in ?? () from /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 #3 0x00007f2bb072bdf9 in ?? () from /lib/x86_64-linux-gnu/libQt5DBus.so.5 #4 0x00007f2bb072e8ce in ?? () from /lib/x86_64-linux-gnu/libQt5DBus.so.5 #5 0x00007f2bb1056182 in QObject::event(QEvent*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #6 0x00007f2bb1a474b1 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #7 0x00007f2bb1a4e950 in QApplication::notify(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5 #8 0x00007f2bb102c5a9 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #9 0x00007f2bb102f59b in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #10 0x00007f2bb107e233 in ?? () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #11 0x00007f2baf2dff2e in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #12 0x00007f2baf2e01c8 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #13 0x00007f2baf2e025c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #14 0x00007f2bb107d863 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #15 0x00007f2bab7c93e1 in ?? () from /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 #16 0x00007f2bb102b27b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #17 0x00007f2bb1033262 in QCoreApplication::exec() () from /lib/x86_64-linux-gnu/libQt5Core.so.5 #18 0x00007f2bb2a94827 in kdemain () from /lib/x86_64-linux-gnu/libkdeinit5_konsole.so #19 0x00007f2bb28cf09b in __libc_start_main (main=0x5619659be730, argc=1, argv=0x7fff257d7838, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff257d7828) at ../csu/libc-start.c:308 #20 0x00005619659be76a in _start () ########## With dbgsym's: (gdb) thread apply all bt Thread 15 (Thread 0x7f2b955e4700 (LWP 1326)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x561966107648) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x5619661075f8, cond=0x561966107620) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x561966107620, mutex=0x5619661075f8) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 14 (Thread 0x7f2b95de5700 (LWP 1325)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x5619661074e8) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x561966107498, cond=0x5619661074c0) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x5619661074c0, mutex=0x561966107498) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 13 (Thread 0x7f2b965e6700 (LWP 1324)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x561966107388) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x561966107338, cond=0x561966107360) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x561966107360, mutex=0x561966107338) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 12 (Thread 0x7f2b96de7700 (LWP 1323)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x561966107228) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x5619661071d8, cond=0x561966107200) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x561966107200, mutex=0x5619661071d8) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 11 (Thread 0x7f2b975e8700 (LWP 1322)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x5619661070c8) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x561966107078, cond=0x5619661070a0) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x5619661070a0, mutex=0x561966107078) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 10 (Thread 0x7f2b97de9700 (LWP 1321)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x561966106f68) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x561966106f18, cond=0x561966106f40) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x561966106f40, mutex=0x561966106f18) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 9 (Thread 0x7f2b985ea700 (LWP 1320)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x561966106e08) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x561966106db8, cond=0x561966106de0) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x561966106de0, mutex=0x561966106db8) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 8 (Thread 0x7f2ba0d0b700 (LWP 1319)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x561966106ca8) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x561966106c58, cond=0x561966106c80) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x561966106c80, mutex=0x561966106c58) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 7 (Thread 0x7f2ba150c700 (LWP 1318)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x561966106b48) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x561966106af8, cond=0x561966106b20) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x561966106b20, mutex=0x561966106af8) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 6 (Thread 0x7f2ba1d0d700 (LWP 1317)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x5619661069e8) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x561966106998, cond=0x5619661069c0) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x5619661069c0, mutex=0x561966106998) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 5 (Thread 0x7f2ba250e700 (LWP 1316)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x561966106888) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x561966106838, cond=0x561966106860) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x561966106860, mutex=0x561966106838) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 4 (Thread 0x7f2ba2d0f700 (LWP 1315)): #0 futex_wait_cancelable (private=0, expected=0, futex_word=0x561966106728) at ../sysdeps/unix/sysv/linux/futex-internal.h:88 #1 __pthread_cond_wait_common (abstime=0x0, mutex=0x5619661066d8, cond=0x561966106700) at pthread_cond_wait.c:502 #2 __pthread_cond_wait (cond=0x561966106700, mutex=0x5619661066d8) at pthread_cond_wait.c:655 #3 0x00007f2ba2f23f3b in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #4 0x00007f2ba2f23db7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 3 (Thread 0x7f2ba92e8700 (LWP 1314)): #0 0x00007f2bb2999819 in __GI___poll (fds=0x7f2b9c004db0, nfds=3, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29 #1 0x00007f2baf2e0136 in g_main_context_poll (priority=<optimized out>, n_fds=3, fds=0x7f2b9c004db0, timeout=<optimized out>, context=0x7f2b9c000bf0) at ../../../glib/gmain.c:4221 #2 g_main_context_iterate (context=context@entry=0x7f2b9c000bf0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:3915 #3 0x00007f2baf2e025c in g_main_context_iteration (context=0x7f2b9c000bf0, may_block=may_block@entry=1) at ../../../glib/gmain.c:3981 #4 0x00007f2bb107d863 in QEventDispatcherGlib::processEvents (this=0x7f2b9c000b20, flags=...) at kernel/qeventdispatcher_glib.cpp:422 #5 0x00007f2bb102b27b in QEventLoop::exec (this=this@entry=0x7f2ba92e7d30, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:140 #6 0x00007f2bb0e7aec6 in QThread::exec (this=this@entry=0x7f2bb079cd60 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at ../../include/QtCore/../../src/corelib/global/qflags.h:120 #7 0x00007f2bb071c545 in QDBusConnectionManager::run (this=0x7f2bb079cd60 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:178 #8 0x00007f2bb0e84aa7 in QThreadPrivate::start (arg=0x7f2bb079cd60 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at thread/qthread_unix.cpp:367 #9 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #10 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 2 (Thread 0x7f2baada2700 (LWP 1313)): #0 0x00007f2bb2999819 in __GI___poll (fds=0x7f2baada1c78, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29 #1 0x00007f2baff31cf7 in ?? () from /lib/x86_64-linux-gnu/libxcb.so.1 #2 0x00007f2baff3391a in xcb_wait_for_event () from /lib/x86_64-linux-gnu/libxcb.so.1 #3 0x00007f2bab732d79 in QXcbEventReader::run (this=0x561965f4e9e0) at qxcbconnection.h:409 #4 0x00007f2bb0e84aa7 in QThreadPrivate::start (arg=0x561965f4e9e0) at thread/qthread_unix.cpp:367 #5 0x00007f2bafd08fa3 in start_thread (arg=<optimized out>) at pthread_create.c:486 #6 0x00007f2bb29a44cf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95 Thread 1 (Thread 0x7f2babb65840 (LWP 1312)): #0 0x00007f2bb0f08a34 in QTextBoundaryFinder::toNextBoundary (this=this@entry=0x7fff257d6d60) at tools/qtextboundaryfinder.cpp:366 #1 0x00007f2bb14443ac in QAccessibleTextInterface::textAtOffset (this=<optimized out>, offset=0, boundaryType=QAccessible::WordBoundary, startOffset=0x7fff257d6e08, endOffset=0x7fff257d6e0c) at accessible/qaccessible.cpp:2321 #2 0x00007f2bab7f28df in AtSpiAdaptor::textInterface (this=<optimized out>, interface=<optimized out>, function=..., message=..., connection=...) at atspiadaptor.cpp:1908 #3 0x00007f2bab7f321d in AtSpiAdaptor::handleMessage (this=this@entry=0x5619664085d0, message=..., connection=...) at atspiadaptor.cpp:1284 #4 0x00007f2bb072bdf9 in QDBusConnectionPrivate::activateObject (this=0x7f2b9c014520, node=..., msg=..., pathStartPos=27) at qdbusconnection_p.h:345 #5 0x00007f2bb072e8ce in QDBusActivateObjectEvent::placeMetaCall (this=0x7f2b9c01ed00) at qdbusintegrator.cpp:1597 #6 0x00007f2bb1056182 in QObject::event (this=0x5619664085d0, e=<optimized out>) at kernel/qobject.cpp:1251 #7 0x00007f2bb1a474b1 in QApplicationPrivate::notify_helper (this=this@entry=0x561965f3e270, receiver=receiver@entry=0x5619664085d0, e=e@entry=0x7f2b9c01ed00) at kernel/qapplication.cpp:3726 #8 0x00007f2bb1a4e950 in QApplication::notify (this=0x561965f3e030, receiver=0x5619664085d0, e=0x7f2b9c01ed00) at kernel/qapplication.cpp:3485 #9 0x00007f2bb102c5a9 in QCoreApplication::notifyInternal2 (receiver=0x5619664085d0, event=0x7f2b9c01ed00) at ../../include/QtCore/5.11.3/QtCore/private/../../../../../src/corelib/thread/qthread_p.h:307 #10 0x00007f2bb102f59b in QCoreApplication::sendEvent (event=0x7f2b9c01ed00, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:234 #11 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x561965f3d600) at kernel/qcoreapplication.cpp:1744 #12 0x00007f2bb107e233 in postEventSourceDispatch (s=0x561965f95a00) at kernel/qeventdispatcher_glib.cpp:276 #13 0x00007f2baf2dff2e in g_main_dispatch (context=0x7f2ba4004ff0) at ../../../glib/gmain.c:3182 #14 g_main_context_dispatch (context=context@entry=0x7f2ba4004ff0) at ../../../glib/gmain.c:3847 #15 0x00007f2baf2e01c8 in g_main_context_iterate (context=context@entry=0x7f2ba4004ff0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:3920 #16 0x00007f2baf2e025c in g_main_context_iteration (context=0x7f2ba4004ff0, may_block=may_block@entry=1) at ../../../glib/gmain.c:3981 #17 0x00007f2bb107d863 in QEventDispatcherGlib::processEvents (this=0x561965f8d0c0, flags=...) at kernel/qeventdispatcher_glib.cpp:422 #18 0x00007f2bab7c93e1 in QPAEventDispatcherGlib::processEvents (this=0x561965f8d0c0, flags=...) at qeventdispatcher_glib.cpp:69 #19 0x00007f2bb102b27b in QEventLoop::exec (this=this@entry=0x7fff257d7580, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:140 #20 0x00007f2bb1033262 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:120 #21 0x00007f2bb146cbdc in QGuiApplication::exec () at kernel/qguiapplication.cpp:1762 #22 0x00007f2bb1a47425 in QApplication::exec () at kernel/qapplication.cpp:2900 #23 0x00007f2bb2a94827 in kdemain (argc=<optimized out>, argv=<optimized out>) at ./src/main.cpp:190 #24 0x00007f2bb28cf09b in __libc_start_main (main=0x5619659be730 <main>, argc=1, argv=0x7fff257d7838, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff257d7828) at ../csu/libc-start.c:308 #25 0x00005619659be76a in _start () (gdb) next 2321 while (boundary.toNextBoundary() < txt.length()) { (gdb) step QTextBoundaryFinder::toNextBoundary (this=this@entry=0x7fff257d6d60) at tools/qtextboundaryfinder.cpp:366 366 if (!d || pos < 0 || pos >= length) { (gdb) print d $6 = (QTextBoundaryFinderPrivate *) 0x5619665ebcc0 (gdb) print pos $7 = -1 (gdb) print length $8 = 2476 (gdb) finish Run till exit from #0 QTextBoundaryFinder::toNextBoundary (this=this@entry=0x7fff257d6d60) at tools/qtextboundaryfinder.cpp:366 QAccessibleTextInterface::textAtOffset (this=<optimized out>, offset=0, boundaryType=QAccessible::WordBoundary, startOffset=0x7fff257d6e08, endOffset=0x7fff257d6e0c) at accessible/qaccessible.cpp:2321 2321 while (boundary.toNextBoundary() < txt.length()) { Value returned is $9 = -1 (gdb) print boundary $10 = {t = QTextBoundaryFinder::Word, s = " Links Datei Befehl Optionen Rechts\n┌<─ ~ ", '─' <repeats 32 times>, ".[^]>┐┌<─ ~ ", '─' <repeats 32 times>, ".[^]>┐\n│.n Name │ Größe │Modifikations││.n Name "..., chars = 0x7f2b9c02de18, length = 2476, pos = -1, freePrivate = 1, unused = 314488604, d = 0x5619665ebcc0} (gdb) print txt $11 = " Links Datei Befehl Optionen Rechts\n┌<─ ~ ", '─' <repeats 32 times>, ".[^]>┐┌<─ ~ ", '─' <repeats 32 times>, ".[^]>┐\n│.n Name │ Größe │Modifikations││.n Name "... (gdb) next 2322 if ((boundary.boundaryReasons() & (QTextBoundaryFinder::StartOfItem | QTextBoundaryFinder::EndOfItem))) (gdb) step QTextBoundaryFinder::boundaryReasons (this=this@entry=0x7fff257d6d60) at tools/qtextboundaryfinder.cpp:457 457 if (!d || pos < 0 || pos > length) (gdb) QAccessibleTextInterface::textAtOffset (this=<optimized out>, offset=0, boundaryType=QAccessible::WordBoundary, startOffset=0x7fff257d6e08, endOffset=0x7fff257d6e0c) at ../../include/QtCore/../../src/corelib/global/qflags.h:144 144 Q_DECL_CONSTEXPR inline QFlags operator&(uint mask) const Q_DECL_NOTHROW { return QFlags(QFlag(i & mask)); } (gdb) 2321 while (boundary.toNextBoundary() < txt.length()) { ############## #0 0x00007f2bb0f08a34 in QTextBoundaryFinder::toNextBoundary (this=this@entry=0x7fff257d6d60) at tools/qtextboundaryfinder.cpp:366 (gdb) list 359 /*! 360 Moves the QTextBoundaryFinder to the next boundary position and returns that position. 361 362 Returns -1 if there is no next boundary. 363 */ 364 int QTextBoundaryFinder::toNextBoundary() 365 { 366 if (!d || pos < 0 || pos >= length) { 367 pos = -1; 368 return pos; 369 } 370 371 ++pos; 372 switch(t) { 373 case Grapheme: 374 while (pos < length && !d->attributes[pos].graphemeBoundary) 375 ++pos; 376 break; 377 case Word: 378 while (pos < length && !d->attributes[pos].wordBreak) 379 ++pos; 380 break; 381 case Sentence: 382 while (pos < length && !d->attributes[pos].sentenceBoundary) 383 ++pos; 384 break; 385 case Line: 386 while (pos < length && !d->attributes[pos].lineBreak) 387 ++pos; 388 break; 389 } 390 391 return pos; 392 } ########### #1 0x00007f2bb14443ac in QAccessibleTextInterface::textAtOffset (this=<optimized out>, offset=0, boundaryType=QAccessible::WordBoundary, startOffset=0x7fff257d6e08, endOffset=0x7fff257d6e0c) at accessible/qaccessible.cpp:2321 2253 /*! 2254 Returns the text item of type \a boundaryType at offset \a offset 2255 and sets \a startOffset and \a endOffset values to the start and end positions 2256 of that item; returns an empty string if there is no such an item. 2257 Sets \a startOffset and \a endOffset values to -1 on error. 2258 2259 This default implementation is provided for small text edits. A word processor or 2260 text editor should provide their own efficient implementations. This function makes no 2261 distinction between paragraphs and lines. 2262 2263 \note this function can not take the cursor position into account. By convention 2264 an \a offset of -2 means that this function should use the cursor position as offset. 2265 Thus an offset of -2 must be converted to the cursor position before calling this 2266 function. 2267 An offset of -1 is used for the text length and custom implementations of this function 2268 have to return the result as if the length was passed in as offset. 2269 */ 2270 QString QAccessibleTextInterface::textAtOffset(int offset, QAccessible::TextBoundaryType boundaryType, 2271 int *startOffset, int *endOffset) const 2272 { 2273 const QString txt = text(0, characterCount()); 2274 2275 if (offset == -1) 2276 offset = txt.length(); 2277 2278 *startOffset = *endOffset = -1; 2279 if (txt.isEmpty() || offset < 0 || offset > txt.length()) 2280 return QString(); 2281 2282 if (offset == txt.length() && boundaryType == QAccessible::CharBoundary) 2283 return QString(); 2284 2285 // type initialized just to silence a compiler warning [-Werror=maybe-uninitialized] 2286 QTextBoundaryFinder::BoundaryType type = QTextBoundaryFinder::Grapheme; 2287 switch (boundaryType) { 2288 case QAccessible::CharBoundary: 2289 type = QTextBoundaryFinder::Grapheme; 2290 break; 2291 case QAccessible::WordBoundary: 2292 type = QTextBoundaryFinder::Word; 2293 break; 2294 case QAccessible::SentenceBoundary: 2295 type = QTextBoundaryFinder::Sentence; 2296 break; 2297 case QAccessible::LineBoundary: 2298 case QAccessible::ParagraphBoundary: 2299 // Lines can not use QTextBoundaryFinder since Line there means any potential line-break. 2300 return textLineBoundary(0, txt, offset, startOffset, endOffset); 2301 case QAccessible::NoBoundary: 2302 *startOffset = 0; 2303 *endOffset = txt.length(); 2304 return txt; 2305 default: 2306 Q_UNREACHABLE(); 2307 } 2308 2309 // keep behavior in sync with QTextCursor::movePosition()! 2310 2311 QTextBoundaryFinder boundary(type, txt); 2312 boundary.setPosition(offset); 2313 2314 do { 2315 if ((boundary.boundaryReasons() & (QTextBoundaryFinder::StartOfItem | QTextBoundaryFinder::EndOfItem))) 2316 break; 2317 } while (boundary.toPreviousBoundary() > 0); 2318 Q_ASSERT(boundary.position() >= 0); 2319 *startOffset = boundary.position(); 2320 2321 while (boundary.toNextBoundary() < txt.length()) { 2322 if ((boundary.boundaryReasons() & (QTextBoundaryFinder::StartOfItem | QTextBoundaryFinder::EndOfItem))) 2323 break; 2324 } 2325 Q_ASSERT(boundary.position() <= txt.length()); 2326 *endOffset = boundary.position(); 2327 2328 return txt.mid(*startOffset, *endOffset - *startOffset); 2329 } # boundary.toNextBoundary() returns -1 ################# (gdb) up #1 0x00007f2bab7f28df in AtSpiAdaptor::textInterface (this=<optimized out>, interface=<optimized out>, function=..., message=..., connection=...) at atspiadaptor.cpp:1908 1908 switch (atspiTextBoundaryType) { (gdb) list 1769,1905 1769 1770 // Text interface 1771 bool AtSpiAdaptor::textInterface(QAccessibleInterface *interface, const QString &function, const QDBusMessage &message, const QDBusConnection &connection) 1772 { 1773 if (!interface->textInterface()) 1774 return false; 1775 1776 // properties 1777 if (function == QLatin1String("GetCaretOffset")) { 1778 sendReply(connection, message, QVariant::fromValue(QDBusVariant(QVariant::fromValue(interface->textInterface()->cursorPosition())))); 1779 } else if (function == QLatin1String("GetCharacterCount")) { 1780 sendReply(connection, message, QVariant::fromValue(QDBusVariant(QVariant::fromValue(interface->textInterface()->characterCount())))); 1781 1782 // functions 1783 } else if (function == QLatin1String("AddSelection")) { 1784 int startOffset = message.arguments().at(0).toInt(); 1785 int endOffset = message.arguments().at(1).toInt(); 1786 int lastSelection = interface->textInterface()->selectionCount(); 1787 interface->textInterface()->setSelection(lastSelection, startOffset, endOffset); 1788 sendReply(connection, message, (interface->textInterface()->selectionCount() > lastSelection)); 1789 } else if (function == QLatin1String("GetAttributeRun")) { 1790 int offset = message.arguments().at(0).toInt(); 1791 bool includeDefaults = message.arguments().at(1).toBool(); 1792 Q_UNUSED(includeDefaults) 1793 connection.send(message.createReply(getAttributes(interface, offset, includeDefaults))); 1794 } else if (function == QLatin1String("GetAttributeValue")) { 1795 int offset = message.arguments().at(0).toInt(); 1796 QString attributeName = message.arguments().at(1).toString(); 1797 connection.send(message.createReply(getAttributeValue(interface, offset, attributeName))); 1798 } else if (function == QLatin1String("GetAttributes")) { 1799 int offset = message.arguments().at(0).toInt(); 1800 connection.send(message.createReply(getAttributes(interface, offset, true))); 1801 } else if (function == QLatin1String("GetBoundedRanges")) { 1802 int x = message.arguments().at(0).toInt(); 1803 int y = message.arguments().at(1).toInt(); 1804 int width = message.arguments().at(2).toInt(); 1805 int height = message.arguments().at(3).toInt(); 1806 uint coordType = message.arguments().at(4).toUInt(); 1807 uint xClipType = message.arguments().at(5).toUInt(); 1808 uint yClipType = message.arguments().at(6).toUInt(); 1809 Q_UNUSED(x) Q_UNUSED (y) Q_UNUSED(width) 1810 Q_UNUSED(height) Q_UNUSED(coordType) 1811 Q_UNUSED(xClipType) Q_UNUSED(yClipType) 1812 qCDebug(lcAccessibilityAtspi) << "Not implemented: QSpiAdaptor::GetBoundedRanges"; 1813 sendReply(connection, message, QVariant::fromValue(QSpiTextRangeList())); 1814 } else if (function == QLatin1String("GetCharacterAtOffset")) { 1815 int offset = message.arguments().at(0).toInt(); 1816 int start; 1817 int end; 1818 QString result = interface->textInterface()->textAtOffset(offset, QAccessible::CharBoundary, &start, &end); 1819 sendReply(connection, message, (int) *(qPrintable (result))); 1820 } else if (function == QLatin1String("GetCharacterExtents")) { 1821 int offset = message.arguments().at(0).toInt(); 1822 int coordType = message.arguments().at(1).toUInt(); 1823 connection.send(message.createReply(getCharacterExtents(interface, offset, coordType))); 1824 } else if (function == QLatin1String("GetDefaultAttributeSet") || function == QLatin1String("GetDefaultAttributes")) { 1825 // GetDefaultAttributes is deprecated in favour of GetDefaultAttributeSet. 1826 // Empty set seems reasonable. There is no default attribute set. 1827 sendReply(connection, message, QVariant::fromValue(QSpiAttributeSet())); 1828 } else if (function == QLatin1String("GetNSelections")) { 1829 sendReply(connection, message, interface->textInterface()->selectionCount()); 1830 } else if (function == QLatin1String("GetOffsetAtPoint")) { 1831 qCDebug(lcAccessibilityAtspi) << message.signature(); 1832 Q_ASSERT(!message.signature().isEmpty()); 1833 QPoint point(message.arguments().at(0).toInt(), message.arguments().at(1).toInt()); 1834 uint coordType = message.arguments().at(2).toUInt(); 1835 if (coordType == ATSPI_COORD_TYPE_WINDOW) { 1836 QWindow *win = interface->window(); 1837 point -= QPoint(win->x(), win->y()); 1838 } 1839 int offset = interface->textInterface()->offsetAtPoint(point); 1840 sendReply(connection, message, offset); 1841 } else if (function == QLatin1String("GetRangeExtents")) { 1842 int startOffset = message.arguments().at(0).toInt(); 1843 int endOffset = message.arguments().at(1).toInt(); 1844 uint coordType = message.arguments().at(2).toUInt(); 1845 connection.send(message.createReply(getRangeExtents(interface, startOffset, endOffset, coordType))); 1846 } else if (function == QLatin1String("GetSelection")) { 1847 int selectionNum = message.arguments().at(0).toInt(); 1848 int start, end; 1849 interface->textInterface()->selection(selectionNum, &start, &end); 1850 if (start < 0) 1851 start = end = interface->textInterface()->cursorPosition(); 1852 QVariantList sel; 1853 sel << start << end; 1854 connection.send(message.createReply(sel)); 1855 } else if (function == QLatin1String("GetText")) { 1856 int startOffset = message.arguments().at(0).toInt(); 1857 int endOffset = message.arguments().at(1).toInt(); 1858 if (endOffset == -1) // AT-SPI uses -1 to signal all characters 1859 endOffset = interface->textInterface()->characterCount(); 1860 sendReply(connection, message, interface->textInterface()->text(startOffset, endOffset)); 1861 } else if (function == QLatin1String("GetTextAfterOffset")) { 1862 int offset = message.arguments().at(0).toInt(); 1863 int type = message.arguments().at(1).toUInt(); 1864 int startOffset, endOffset; 1865 QString text = interface->textInterface()->textAfterOffset(offset, qAccessibleBoundaryType(type), &startOffset, &endOffset); 1866 QVariantList ret; 1867 ret << text << startOffset << endOffset; 1868 connection.send(message.createReply(ret)); 1869 } else if (function == QLatin1String("GetTextAtOffset")) { 1870 int offset = message.arguments().at(0).toInt(); 1871 int type = message.arguments().at(1).toUInt(); 1872 int startOffset, endOffset; 1873 QString text = interface->textInterface()->textAtOffset(offset, qAccessibleBoundaryType(type), &startOffset, &endOffset); 1874 QVariantList ret; 1875 ret << text << startOffset << endOffset; 1876 connection.send(message.createReply(ret)); 1877 } else if (function == QLatin1String("GetTextBeforeOffset")) { 1878 int offset = message.arguments().at(0).toInt(); 1879 int type = message.arguments().at(1).toUInt(); 1880 int startOffset, endOffset; 1881 QString text = interface->textInterface()->textBeforeOffset(offset, qAccessibleBoundaryType(type), &startOffset, &endOffset); 1882 QVariantList ret; 1883 ret << text << startOffset << endOffset; 1884 connection.send(message.createReply(ret)); 1885 } else if (function == QLatin1String("RemoveSelection")) { 1886 int selectionNum = message.arguments().at(0).toInt(); 1887 interface->textInterface()->removeSelection(selectionNum); 1888 sendReply(connection, message, true); 1889 } else if (function == QLatin1String("SetCaretOffset")) { 1890 int offset = message.arguments().at(0).toInt(); 1891 interface->textInterface()->setCursorPosition(offset); 1892 sendReply(connection, message, true); 1893 } else if (function == QLatin1String("SetSelection")) { 1894 int selectionNum = message.arguments().at(0).toInt(); 1895 int startOffset = message.arguments().at(1).toInt(); 1896 int endOffset = message.arguments().at(2).toInt(); 1897 interface->textInterface()->setSelection(selectionNum, startOffset, endOffset); 1898 sendReply(connection, message, true); 1899 } else { 1900 qCDebug(lcAccessibilityAtspi) << "WARNING: AtSpiAdaptor::textInterface does not implement " << function << message.path(); 1901 return false; 1902 } 1903 return true; 1904 } 1905 (gdb) print function $13 = "GetTextAtOffset" ################ (gdb) up #2 0x00007f2bab7f321d in AtSpiAdaptor::handleMessage (this=this@entry=0x5619664085d0, message=..., connection=...) at atspiadaptor.cpp:1284 1284 return textInterface(accessible, function, message, connection); 1240 /*! 1241 Handle incoming DBus message. 1242 This function dispatches the dbus message to the right interface handler. 1243 */ 1244 bool AtSpiAdaptor::handleMessage(const QDBusMessage &message, const QDBusConnection &connection) 1245 { 1246 // get accessible interface 1247 QAccessibleInterface * accessible = interfaceFromPath(message.path()); 1248 if (!accessible) { 1249 qCDebug(lcAccessibilityAtspi) << "WARNING Qt AtSpiAdaptor: Could not find accessible on path: " << message.path(); 1250 return false; 1251 } 1252 if (!accessible->isValid()) { 1253 qCWarning(lcAccessibilityAtspi) << "WARNING Qt AtSpiAdaptor: Accessible invalid: " << accessible << message.path(); 1254 return false; 1255 } 1256 1257 QString interface = message.interface(); 1258 QString function = message.member(); 1259 1260 // qCDebug(lcAccessibilityAtspi) << "AtSpiAdaptor::handleMessage: " << interface << function; 1261 1262 if (function == QLatin1String("Introspect")) { 1263 //introspect(message.path()); 1264 return false; 1265 } 1266 1267 // handle properties like regular functions 1268 if (interface == QLatin1String("org.freedesktop.DBus.Properties")) { 1269 interface = message.arguments().at(0).toString(); 1270 // Get/Set + Name 1271 function = message.member() + message.arguments().at(1).toString(); 1272 } 1273 1274 // switch interface to call 1275 if (interface == QLatin1String(ATSPI_DBUS_INTERFACE_ACCESSIBLE)) 1276 return accessibleInterface(accessible, function, message, connection); 1277 if (interface == QLatin1String(ATSPI_DBUS_INTERFACE_APPLICATION)) 1278 return applicationInterface(accessible, function, message, connection); 1279 if (interface == QLatin1String(ATSPI_DBUS_INTERFACE_COMPONENT)) 1280 return componentInterface(accessible, function, message, connection); 1281 if (interface == QLatin1String(ATSPI_DBUS_INTERFACE_ACTION)) 1282 return actionInterface(accessible, function, message, connection); 1283 if (interface == QLatin1String(ATSPI_DBUS_INTERFACE_TEXT)) 1284 return textInterface(accessible, function, message, connection); 1285 if (interface == QLatin1String(ATSPI_DBUS_INTERFACE_EDITABLE_TEXT)) 1286 return editableTextInterface(accessible, function, message, connection); 1287 if (interface == QLatin1String(ATSPI_DBUS_INTERFACE_VALUE)) 1288 return valueInterface(accessible, function, message, connection); 1289 if (interface == QLatin1String(ATSPI_DBUS_INTERFACE_TABLE)) 1290 return tableInterface(accessible, function, message, connection); 1291 1292 qCDebug(lcAccessibilityAtspi) << "AtSpiAdaptor::handleMessage with unknown interface: " << message.path() << interface << function; 1293 return false; 1294 } 1295 (gdb) print message.d_ptr $18 = (QDBusMessagePrivate *) 0x7f2b9c023430 (gdb) print *message.d_ptr $19 = {arguments = {0, 1}, service = ":1.20", path = "/org/a11y/atspi/accessible/2147483657", interface = "org.a11y.atspi.Text", name = "GetTextAtOffset", message = "", signature = "iu", msg = 0x7f2b9c016470, reply = 0x0, localReply = 0x0, ref = {<QAtomicInteger<int>> = {<QBasicAtomicInteger<int>> = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = 1}, static is_always_lock_free = true}}, <No data fields>}, <No data fields>}, type = QDBusMessage::MethodCallMessage, delayedReply = 0, localMessage = 0, parametersValidated = 0, autoStartService = 1} (gdb) print this $20 = (AtSpiAdaptor * const) 0x5619664085d0 (gdb) print *this $21 = {<QDBusVirtualObject> = {<QObject> = {_vptr.QObject = 0x7f2bab867498 <vtable for AtSpiAdaptor+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7f2bb11ae740 <qt_meta_stringdata_QObject>, data = 0x7f2bb11ae620 <qt_meta_data_QObject>, static_metacall = 0x7f2bb105c860 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x5619662155b0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7f2bb11b1500 <qt_meta_stringdata_Qt>, data = 0x7f2bb11ae860 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7f2bb12aca40 <QObject::staticMetaObject>, stringdata = 0x7f2bb0787840 <qt_meta_stringdata_QDBusVirtualObject>, data = 0x7f2bb0787800 <qt_meta_data_QDBusVirtualObject>, static_metacall = 0x7f2bb0780160 <QDBusVirtualObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7f2bb079b920 <QDBusVirtualObject::staticMetaObject>, stringdata = 0x7f2bab815300 <qt_meta_stringdata_AtSpiAdaptor>, data = 0x7f2bab815240 <qt_meta_data_AtSpiAdaptor>, static_metacall = 0x7f2bab7f68d0 <AtSpiAdaptor::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, accessibilityRegistry = {service = ":1.9", path = {m_path = "/org/a11y/atspi/accessible/root"}}, m_dbus = 0x5619660c7ff0, m_applicationAdaptor = 0x56196640c590, m_applicationId = 20, sendFocus = 1, sendObject = 0, sendObject_active_descendant_changed = 1, sendObject_attributes_changed = 0, sendObject_bounds_changed = 0, sendObject_children_changed = 1, sendObject_column_deleted = 0, sendObject_column_inserted = 0, sendObject_column_reordered = 1, sendObject_link_selected = 0, sendObject_model_changed = 0, sendObject_property_change = 0, sendObject_property_change_accessible_description = 0, sendObject_property_change_accessible_name = 1, sendObject_property_change_accessible_parent = 0, sendObject_property_change_accessible_role = 0, sendObject_property_change_accessible_table_caption = 0, sendObject_property_change_accessible_table_column_description = 0, sendObject_property_change_accessible_table_column_header = 0, sendObject_property_change_accessible_table_row_description = 0, sendObject_property_change_accessible_table_row_header = 0, sendObject_property_change_accessible_table_summary = 0, sendObject_property_change_accessible_value = 1, sendObject_row_deleted = 0, sendObject_row_inserted = 0, sendObject_row_reordered = 1, sendObject_selection_changed = 1, sendObject_state_changed = 1, sendObject_text_attributes_changed = 1, sendObject_text_bounds_changed = 0, sendObject_text_caret_moved = 1, sendObject_text_changed = 1, sendObject_text_selection_changed = 1, sendObject_value_changed = 1, sendObject_visible_data_changed = 0, sendWindow = 0, sendWindow_activate = 1, sendWindow_close = 0, sendWindow_create = 1, sendWindow_deactivate = 1, sendWindow_lower = 0, sendWindow_maximize = 0, sendWindow_minimize = 0, sendWindow_move = 0, sendWindow_raise = 0, sendWindow_reparent = 0, sendWindow_resize = 0, sendWindow_restore = 0, sendWindow_restyle = 0, sendWindow_shade = 0, sendWindow_unshade = 0} ############### 451 /*! 452 Returns the reasons for the boundary finder to have chosen the current position as a boundary. 453 */ 454 QTextBoundaryFinder::BoundaryReasons QTextBoundaryFinder::boundaryReasons() const 455 { 456 BoundaryReasons reasons = NotAtBoundary; 457 if (!d || pos < 0 || pos > length) 458 return reasons; 459 460 const QCharAttributes attr = d->attributes[pos]; 461 switch (t) { 462 case Grapheme: 463 if (attr.graphemeBoundary) { 464 reasons |= BreakOpportunity | StartOfItem | EndOfItem; 465 if (pos == 0) 466 reasons &= (~EndOfItem); 467 else if (pos == length) 468 reasons &= (~StartOfItem); 469 } 470 break; 471 case Word: 472 if (attr.wordBreak) { 473 reasons |= BreakOpportunity; 474 if (attr.wordStart) 475 reasons |= StartOfItem; 476 if (attr.wordEnd) 477 reasons |= EndOfItem; 478 } 479 break; 480 case Sentence: 481 if (attr.sentenceBoundary) { 482 reasons |= BreakOpportunity | StartOfItem | EndOfItem; 483 if (pos == 0) 484 reasons &= (~EndOfItem); 485 else if (pos == length) 486 reasons &= (~StartOfItem); 487 } 488 break; 489 case Line: 490 // ### TR#14 LB2 prohibits break at sot 491 if (attr.lineBreak || pos == 0) { 492 reasons |= BreakOpportunity; 493 if (attr.mandatoryBreak || pos == 0) { 494 reasons |= MandatoryBreak | StartOfItem | EndOfItem; 495 if (pos == 0) 496 reasons &= (~EndOfItem); 497 else if (pos == length) 498 reasons &= (~StartOfItem); 499 } else if (pos > 0 && chars[pos - 1].unicode() == QChar::SoftHyphen) { 500 reasons |= SoftHyphen; 501 } 502 } 503 break; 504 default: 505 break; 506 } 507 508 return reasons; 509 } ############## (gdb) bt full #0 QAccessibleTextInterface::textAtOffset (this=<optimized out>, offset=0, boundaryType=QAccessible::WordBoundary, startOffset=0x7fff257d6e08, endOffset=0x7fff257d6e0c) at accessible/qaccessible.cpp:2321 txt = " Links Datei Befehl Optionen Rechts\n┌<─ ~ ", '─' <repeats 32 times>, ".[^]>┐┌<─ ~ ", '─' <repeats 32 times>, ".[^]>┐\n│.n Name │ Größe │Modifikations││.n Name "... type = QTextBoundaryFinder::Word boundary = {t = QTextBoundaryFinder::Word, s = " Links Datei Befehl Optionen Rechts\n┌<─ ~ ", '─' <repeats 32 times>, ".[^]>┐┌<─ ~ ", '─' <repeats 32 times>, ".[^]>┐\n│.n Name │ Größe │Modifikations││.n Name "..., chars = 0x7f2b9c02de18, length = 2476, pos = -1, freePrivate = 1, unused = 314488604, d = 0x5619665ebcc0} #1 0x00007f2bab7f28df in AtSpiAdaptor::textInterface (this=<optimized out>, interface=<optimized out>, function=..., message=..., connection=...) at atspiadaptor.cpp:1908 type = <optimized out> startOffset = -1 ret = {<error reading variable ret (Cannot access memory at address 0xb0)> offset = <optimized out> endOffset = -1 text = <error reading variable: Cannot access memory at address 0xfffe4afadd40> #2 0x00007f2bab7f321d in AtSpiAdaptor::handleMessage (this=this@entry=0x5619664085d0, message=..., connection=...) at atspiadaptor.cpp:1284 accessible = 0x5619662b1dc0 interface = "org.a11y.atspi.Text" function = "GetTextAtOffset" #3 0x00007f2bb072bdf9 in QDBusConnectionPrivate::activateObject (this=0x7f2b9c014520, node=..., msg=..., pathStartPos=27) at qdbusconnection_p.h:345 connector = <optimized out> newflags = <optimized out> it = <optimized out> end = <optimized out> it = <optimized out> interfaceFound = <optimized out> #4 0x00007f2bb072e8ce in QDBusActivateObjectEvent::placeMetaCall (this=0x7f2b9c01ed00) at qdbusintegrator.cpp:1597 that = <optimized out> #5 0x00007f2bb1056182 in QObject::event (this=0x5619664085d0, e=<optimized out>) at kernel/qobject.cpp:1251 mce = <optimized out> sw = {receiver = 0x5619664085d0, previousSender = 0x0, currentSender = {sender = 0x7f2b9c014520, signal = -1, ref = 1}, switched = true} #6 0x00007f2bb1a474b1 in QApplicationPrivate::notify_helper (this=this@entry=0x561965f3e270, receiver=receiver@entry=0x5619664085d0, e=e@entry=0x7f2b9c01ed00) at kernel/qapplication.cpp:3726 consumed = <optimized out> #7 0x00007f2bb1a4e950 in QApplication::notify (this=0x561965f3e030, receiver=0x5619664085d0, e=0x7f2b9c01ed00) at kernel/qapplication.cpp:3485 w = <optimized out> extra = <optimized out> isProxyWidget = <optimized out> d = <optimized out> res = false me = <optimized out> #8 0x00007f2bb102c5a9 in QCoreApplication::notifyInternal2 (receiver=0x5619664085d0, event=0x7f2b9c01ed00) at ../../include/QtCore/5.11.3/QtCore/private/../../../../../src/corelib/thread/qthread_p.h:307 selfRequired = true result = false cbdata = {0x5619664085d0, 0x7f2b9c01ed00, 0x7fff257d726f} d = <optimized out> threadData = 0x561965f3d600 scopeLevelCounter = {threadData = 0x561965f3d600} #9 0x00007f2bb102f59b in QCoreApplication::sendEvent (event=0x7f2b9c01ed00, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:234 No locals. #10 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x561965f3d600) at kernel/qcoreapplication.cpp:1744 e = 0x7f2b9c01ed00 pe = <optimized out> r = <optimized out> unlocker = {m = <synthetic pointer><error reading variable>} event_deleter = {d = 0x7f2b9c01ed00} locker = {val = 94667084650032} startOffset = 0 i = @0x561965f3d624: 3 cleanup = <optimized out> #11 0x00007f2bb107e233 in postEventSourceDispatch (s=0x561965f95a00) at kernel/qeventdispatcher_glib.cpp:276 source = 0x561965f95a00 #12 0x00007f2baf2dff2e in g_main_dispatch (context=0x7f2ba4004ff0) at ../../../glib/gmain.c:3182 dispatch = 0x7f2bb107e220 <postEventSourceDispatch(GSource*, GSourceFunc, gpointer)> prev_source = 0x0 was_in_call = 0 user_data = 0x0 callback = 0x0 cb_funcs = <optimized out> cb_data = <optimized out> need_destroy = <optimized out> source = 0x561965f95a00 current = 0x561965f9ed70 i = 0 current = <optimized out> i = <optimized out> __FUNCTION__ = "g_main_dispatch" source = <optimized out> _g_boolean_var_ = <optimized out> was_in_call = <optimized out> user_data = <optimized out> callback = <optimized out> cb_funcs = <optimized out> cb_data = <optimized out> need_destroy = <optimized out> dispatch = <optimized out> prev_source = <optimized out> _g_boolean_var_ = <optimized out> #13 g_main_context_dispatch (context=context@entry=0x7f2ba4004ff0) at ../../../glib/gmain.c:3847 No locals. #14 0x00007f2baf2e01c8 in g_main_context_iterate (context=context@entry=0x7f2ba4004ff0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:3920 max_priority = 2147483647 timeout = 152 some_ready = 1 nfds = <optimized out> allocated_nfds = 7 fds = 0x5619663eae30 #15 0x00007f2baf2e025c in g_main_context_iteration (context=0x7f2ba4004ff0, may_block=may_block@entry=1) at ../../../glib/gmain.c:3981 retval = <optimized out> #16 0x00007f2bb107d863 in QEventDispatcherGlib::processEvents (this=0x561965f8d0c0, flags=...) at kernel/qeventdispatcher_glib.cpp:422 d = 0x561965f968b0 canWait = true savedFlags = {i = 0} result = <optimized out> #17 0x00007f2bab7c93e1 in QPAEventDispatcherGlib::processEvents (this=0x561965f8d0c0, flags=...) at qeventdispatcher_glib.cpp:69 didSendEvents = <optimized out> #18 0x00007f2bb102b27b in QEventLoop::exec (this=this@entry=0x7fff257d7580, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:140 d = 0x5619663eada0 locker = {val = 94667084650256} ref = {d = 0x5619663eada0, locker = @0x7fff257d7508, exceptionCaught = true} app = <optimized out> #19 0x00007f2bb1033262 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:120 threadData = 0x561965f3d600 eventLoop = {<QObject> = {_vptr.QObject = 0x7f2bb12b43c8 <vtable for QEventLoop+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7f2bb11ae740 <qt_meta_stringdata_QObject>, data = 0x7f2bb11ae620 <qt_meta_data_QObject>, static_metacall = 0x7f2bb105c860 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x5619663eada0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7f2bb11b1500 <qt_meta_stringdata_Qt>, data = 0x7f2bb11ae860 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7f2bb12aca40 <QObject::staticMetaObject>, stringdata = 0x7f2bb11a91e0 <qt_meta_stringdata_QEventLoop>, data = 0x7f2bb11a9180 <qt_meta_data_QEventLoop>, static_metacall = 0x7f2bb102afa0 <QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}} returnCode = <optimized out> #20 0x00007f2bb146cbdc in QGuiApplication::exec () at kernel/qguiapplication.cpp:1762 No locals. #21 0x00007f2bb1a47425 in QApplication::exec () at kernel/qapplication.cpp:2900 No locals. #22 0x00007f2bb2a94827 in kdemain (argc=<optimized out>, argv=<optimized out>) at ./src/main.cpp:190 startupOption = <optimized out> app = <optimized out> about = {d = 0x561965fab500} parser = {value = 0x561965fad4f0, d = <optimized out>} args = {"konsole"} customCommand = <empty> dbusService = <incomplete type> migrate = {d = 0x561965fb3420} konsoleApp = {<QObject> = {_vptr.QObject = 0x7f2bb2cb27d8 <vtable for Konsole::Application+16>, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7f2bb11ae740 <qt_meta_stringdata_QObject>, data = 0x7f2bb11ae620 <qt_meta_data_QObject>, static_metacall = 0x7f2bb105c860 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x561965fb4940}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7f2bb11b1500 <qt_meta_stringdata_Qt>, data = 0x7f2bb11ae860 <qt_meta_data_Qt>, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7f2bb12aca40 <QObject::staticMetaObject>, stringdata = 0x7f2bb2aacc40 <qt_meta_stringdata_Konsole__Application>, data = 0x7f2bb2aacb60 <qt_meta_data_Konsole__Application>, static_metacall = 0x7f2bb2aa40c0 <Konsole::Application::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, _backgroundInstance = 0x0, m_parser = {value = 0x561965fad4f0, d = 0x561965fa1f10}, m_customCommand = <empty>} ret = <optimized out> #23 0x00007f2bb28cf09b in __libc_start_main (main=0x5619659be730 <main>, argc=1, argv=0x7fff257d7838, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fff257d7828) at ../csu/libc-start.c:308 self = <optimized out> result = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, -1230442228432872180, 94667078887232, 140733822367792, 0, 0, -4818826850335826676, -4861291230606631668}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x7fff257d7848, 0x7f2bb2cf4190}, data = {prev = 0x0, cleanup = 0x0, canceltype = 628979784}}} not_first_call = <optimized out> #24 0x00005619659be76a in _start () No symbol table info available. ############ ############ ############ ############ $ diff -Nurp orig try1 diff -Nurp orig/qtbase-opensource-src-5.11.3+dfsg1/src/gui/accessible/qaccessible.cpp try1/qtbase-opensource-src-5.11.3+dfsg1/src/gui/accessible/qaccessible.cpp --- orig/qtbase-opensource-src-5.11.3+dfsg1/src/gui/accessible/qaccessible.cpp 2018-11-25 13:51:11.000000000 +0100 +++ try1/qtbase-opensource-src-5.11.3+dfsg1/src/gui/accessible/qaccessible.cpp 2019-07-11 01:28:09.705785549 +0200 @@ -2316,6 +2316,10 @@ QString QAccessibleTextInterface::textAt break; } while (boundary.toPreviousBoundary() > 0); Q_ASSERT(boundary.position() >= 0); + if (boundary.position() < 0) { + qCWarning(lcAccessibilityCore) << "Invalid boundary.position() reached."; + return QString(); + } *startOffset = boundary.position(); while (boundary.toNextBoundary() < txt.length()) { ############ ############ ############ ############ gdb -q --pid $(pidof konsole) set width 0 set pagination off directory /home/benutzer/source/libqt5gui5/orig/qtbase-opensource-src-5.11.3+dfsg1/src/corelib directory /home/benutzer/source/libqt5gui5/orig/qtbase-opensource-src-5.11.3+dfsg1/src/gui directory /home/benutzer/source/libqt5gui5/orig/qtbase-opensource-src-5.11.3+dfsg1/src/platformsupport/linuxaccessibility source /home/benutzer/.gdb/qt5-gdbinit set print repeats 0 set print elements 20000 (gdb) info b Num Type Disp Enb Address What 4 breakpoint keep y 0x00007f157f29a3a4 accessible/qaccessible.cpp:2321 stop only if *startOffset < 0 (gdb) show print elements Limit on string chars or array elements to print is 200. (gdb) show print repeats Threshold for repeated print elements is 10. (gdb) set print repeats 0 (gdb) set print elements 20000 (gdb) print txt $7 = " Links Datei Befehl Optionen Rechts\n┌<─ ~ ────────────────────────────────.[^]>┐┌<─ ~ ────────────────────────────────.[^]>┐\n│.n Name │ Größe │Modifikations││.n Name │ Größe │Modifikations│\n│/.. │ÜBERVZ.│07. Jul 11:40││/.. │ÜBERVZ.│07. Jul 11:40│\n│/.cache │ 4096│11. Jul 10:24││/.cache │ 4096│11. Jul 10:24│\n│/.config │ 4096│10. Jul 23:41││/.config │ 4096│10. Jul 23:41│\n│/.gdb │ 4096│11. Jul 00:31││/.gdb │ 4096│11. Jul 00:31│\n│/.gnupg │ 4096│11. Jul 01:57││/.gnupg │ 4096│11. Jul 01:57│\n│/.kde │ 4096│10. Jul 23:31││/.kde │ 4096│10. Jul 23:31│\n│/.local │ 4096│10. Jul 23:31││/.local │ 4096│10. Jul 23:31│\n│/Bilder │ 4096│10. Jul 23:31││/Bilder │ 4096│10. Jul 23:31│\n│/Dokumente │ 4096│10. Jul 23:31││/Dokumente │ 4096│10. Jul 23:31│\n│/Downloads │ 4096│10. Jul 23:31││/Downloads │ 4096│10. Jul 23:31│\n│/Musik │ 4096│10. Jul 23:31││/Musik │ 4096│10. Jul 23:31│\n│/Öffentlich │ 4096│10. Jul 23:31││/Öffentlich │ 4096│10. Jul 23:31│\n│/Schreibtisch │ 4096│10. Jul 23:31││/Schreibtisch │ 4096│10. Jul 23:31│\n│/Videos │ 4096│10. Jul 23:31││/Videos │ 4096│10. Jul 23:31│\n│/Vorlagen │ 4096│10. Jul 23:31││/Vorlagen │ 4096│10. Jul 23:31│\n│/source │ 4096│11. Jul 00:07││/source │ 4096│11. Jul 00:07│\n│ .Xauthority │ 51│10. Jul 23:41││ .Xauthority │ 51│10. Jul 23:41│\n│ .bash_history │ 175│11. Jul 01:30││ .bash_history │ 175│11. Jul 01:30│\n│ .bash_logout │ 220│07. Jul 11:40││ .bash_logout │ 220│07. Jul 11:40│\n│ .bashrc │ 3526│07. Jul 11:40││ .bashrc │ 3526│07. Jul 11:40│\n├──────────────────────────────────────────┤├──────────────────────────────────────────┤\n│ÜBERVZ. ││ÜBERVZ. │\n└──────────────────────── 1713M/17G (10%) ─┘└──────────────────────── 1713M/17G (10%) ─┘\nHinweis: Verzeichnisse Auswählen: Füge am Ende des Mustervergleichs einen Schrägstrich h\nbenutzer@debian:~$\n 1Hilfe 2Menü 3Ansicht 4Bea~ten 5Kop~ren 6Ver~en 7Mkdir 8Löschen 9Menüs 10Beenden\n\n" (gdb) print type $8 = QTextBoundaryFinder::Word ############ ############ ############ ############ ############ $ cat main.cpp #include <QCoreApplication> #include <QTextBoundaryFinder> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QTextBoundaryFinder::BoundaryType type = QTextBoundaryFinder::Word; QString txt = " Links Datei Befehl Optionen Rechts\n┌<─ ~ ────────────────────────────────.[^]>┐┌<─ ~ ────────────────────────────────.[^]>┐\n│.n Name │ Größe │Modifikations││.n Name │ Größe │Modifikations│\n│/.. │ÜBERVZ.│07. Jul 11:40││/.. │ÜBERVZ.│07. Jul 11:40│\n│/.cache │ 4096│11. Jul 10:24││/.cache │ 4096│11. Jul 10:24│\n│/.config │ 4096│10. Jul 23:41││/.config │ 4096│10. Jul 23:41│\n│/.gdb │ 4096│11. Jul 00:31││/.gdb │ 4096│11. Jul 00:31│\n│/.gnupg │ 4096│11. Jul 01:57││/.gnupg │ 4096│11. Jul 01:57│\n│/.kde │ 4096│10. Jul 23:31││/.kde │ 4096│10. Jul 23:31│\n│/.local │ 4096│10. Jul 23:31││/.local │ 4096│10. Jul 23:31│\n│/Bilder │ 4096│10. Jul 23:31││/Bilder │ 4096│10. Jul 23:31│\n│/Dokumente │ 4096│10. Jul 23:31││/Dokumente │ 4096│10. Jul 23:31│\n│/Downloads │ 4096│10. Jul 23:31││/Downloads │ 4096│10. Jul 23:31│\n│/Musik │ 4096│10. Jul 23:31││/Musik │ 4096│10. Jul 23:31│\n│/Öffentlich │ 4096│10. Jul 23:31││/Öffentlich │ 4096│10. Jul 23:31│\n│/Schreibtisch │ 4096│10. Jul 23:31││/Schreibtisch │ 4096│10. Jul 23:31│\n│/Videos │ 4096│10. Jul 23:31││/Videos │ 4096│10. Jul 23:31│\n│/Vorlagen │ 4096│10. Jul 23:31││/Vorlagen │ 4096│10. Jul 23:31│\n│/source │ 4096│11. Jul 00:07││/source │ 4096│11. Jul 00:07│\n│ .Xauthority │ 51│10. Jul 23:41││ .Xauthority │ 51│10. Jul 23:41│\n│ .bash_history │ 175│11. Jul 01:30││ .bash_history │ 175│11. Jul 01:30│\n│ .bash_logout │ 220│07. Jul 11:40││ .bash_logout │ 220│07. Jul 11:40│\n│ .bashrc │ 3526│07. Jul 11:40││ .bashrc │ 3526│07. Jul 11:40│\n├──────────────────────────────────────────┤├──────────────────────────────────────────┤\n│ÜBERVZ. ││ÜBERVZ. │\n└──────────────────────── 1713M/17G (10%) ─┘└──────────────────────── 1713M/17G (10%) ─┘\nHinweis: Verzeichnisse Auswählen: Füge am Ende des Mustervergleichs einen Schrägstrich h\nbenutzer@debian:~$\n 1Hilfe 2Menü 3Ansicht 4Bea~ten 5Kop~ren 6Ver~en 7Mkdir 8Löschen 9Menüs 10Beenden\n\n"; int offset = 0; /* like in src/gui/accessible/qaccessible.cpp:2311 */ QTextBoundaryFinder boundary(type, txt); boundary.setPosition(offset); do { if ((boundary.boundaryReasons() & (QTextBoundaryFinder::StartOfItem | QTextBoundaryFinder::EndOfItem))) break; } while (boundary.toPreviousBoundary() > 0); while (boundary.toNextBoundary() < txt.length()) { if ((boundary.boundaryReasons() & (QTextBoundaryFinder::StartOfItem | QTextBoundaryFinder::EndOfItem))) break; } return a.exec(); } ############ ############ ############ ############ ############ A stop job is running for Session 3 of user benutzer (1min 22s / 1min 30s) ################ $ reportbug --template libqt5gui5 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Benutzer <benutzer@debian> To: Debian Bug Tracking System <sub...@bugs.debian.org> Subject: libqt5gui5: none Package: libqt5gui5 Version: 5.11.3+dfsg1-1 Severity: wishlist Dear Maintainer, *** Reporter, please consider answering these questions, where appropriate *** * What led up to the situation? * What exactly did you do (or not do) that was effective (or ineffective)? * What was the outcome of this action? * What outcome did you expect instead? *** End of the template - remove these template lines *** -- System Information: Debian Release: 10.0 APT prefers stable-debug APT policy: (500, 'stable-debug'), (500, 'stable') Architecture: amd64 (x86_64) Kernel: Linux 4.19.0-5-amd64 (SMP w/12 CPU cores) Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8), LANGUAGE=de_DE.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages libqt5gui5 depends on: ii fontconfig 2.13.1-2 ii libc6 2.28-10 ii libdrm2 2.4.97-1 ii libegl1 1.1.0-1 ii libfontconfig1 2.13.1-2 ii libfreetype6 2.9.1-3 ii libgbm1 18.3.6-2 ii libgcc1 1:8.3.0-6 ii libgl1 1.1.0-1 ii libharfbuzz0b 2.3.1-1 ii libice6 2:1.0.9-2 ii libinput10 1.12.6-2 ii libjpeg62-turbo 1:1.5.2-2+b1 ii libmtdev1 1.1.5-1+b1 ii libpng16-16 1.6.36-6 ii libqt5core5a [qtbase-abi-5-11-3] 5.11.3+dfsg1-1 ii libqt5dbus5 5.11.3+dfsg1-1 ii libqt5network5 5.11.3+dfsg1-1 ii libsm6 2:1.2.3-1 ii libstdc++6 8.3.0-6 ii libudev1 241-5 ii libx11-6 2:1.6.7-1 ii libx11-xcb1 2:1.6.7-1 ii libxcb-glx0 1.13.1-2 ii libxcb-icccm4 0.4.1-1.1 ii libxcb-image0 0.4.0-1+b2 ii libxcb-keysyms1 0.4.0-1+b2 ii libxcb-randr0 1.13.1-2 ii libxcb-render-util0 0.3.9-1+b1 ii libxcb-render0 1.13.1-2 ii libxcb-shape0 1.13.1-2 ii libxcb-shm0 1.13.1-2 ii libxcb-sync1 1.13.1-2 ii libxcb-xfixes0 1.13.1-2 ii libxcb-xinerama0 1.13.1-2 ii libxcb-xkb1 1.13.1-2 ii libxcb1 1.13.1-2 ii libxi6 2:1.7.9-1 ii libxkbcommon-x11-0 0.8.2-1 ii libxkbcommon0 0.8.2-1 ii libxrender1 1:0.9.10-1 ii zlib1g 1:1.2.11.dfsg-1 Versions of packages libqt5gui5 recommends: ii libqt5svg5 5.11.3-2 ii qt5-gtk-platformtheme 5.11.3+dfsg1-1 Versions of packages libqt5gui5 suggests: pn qt5-image-formats-plugins <none> ii qtwayland5 5.11.3-2 -- no debconf information