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
Attachment:
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 <submit@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