[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#931844: libqt5gui5: Endless loop in konsole showing midnight commander with activated orca screenreader.



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

Reply to: