https://bugs.kde.org/show_bug.cgi?id=473399
Bug ID: 473399 Summary: On Git master/1.10, application crashes when word wrap is enabled, selecting text, and refreshing diff Classification: Applications Product: kdiff3 Version: unspecified Platform: Other OS: Linux Status: REPORTED Severity: normal Priority: NOR Component: application Assignee: reeves...@gmail.com Reporter: nyanpas...@tuta.io Target Milestone: --- SUMMARY If I open the application to compare two files with word wrap enabled, make a selection, then press F5 or Ctrl+Shift+Y to reload the document, it crashes. STEPS TO REPRODUCE 1. `kdiff3 1.txt 2.txt` (can be 1 paragraph or more than 1 page, same or different). 2. Check that word wrap is enabled. 3. Double-click the text to select a word. 4. Press F5. Alternatively enable word wrap, then double-click a word and press Ctrl+Y to add a manual alignment. OBSERVED RESULT Crash with SIGABRT: ASSERT failure in QVector<T>::operator[]: "index out of range", file /usr/include/qt/QtCore/qvector.h, line 457 #0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44 #1 0x00007ffff568e8a3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78 #2 0x00007ffff563e668 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #3 0x00007ffff56264b8 in __GI_abort () at abort.c:79 #4 0x00007ffff5ea0098 in qt_assert(char const*, char const*, int) () at /usr/lib/libQt5Core.so.5 #5 0x00007ffff5ea0157 in () at /usr/lib/libQt5Core.so.5 #6 0x0000555555763f60 in QVector<Diff3WrapLine>::operator[](int) (this=0x5555560cc350, i=0) at /usr/include/qt/QtCore/qvector.h:457 #7 0x000055555575b290 in DiffTextWindow::convertLineCoordsToD3LCoords(LineRef, int, int&, int&) const (this=0x5555560cc010, line=..., pos=31, d3LIdx=@0x7fffffffd24c: 3, d3LPos=@0x7fffffffd250: 31) at /home/nyanpasu64/code/kdiff3/src/difftextwindow.cpp:1529 #8 0x000055555575bd04 in DiffTextWindow::convertSelectionToD3LCoords() const (this=0x5555560cc010) at /home/nyanpasu64/code/kdiff3/src/difftextwindow.cpp:1641 #9 0x000055555573cbfe in KDiff3App::recalcWordWrap(int) (this=0x555555a7f660, visibleTextWidthForPrinting=-1) at /home/nyanpasu64/code/kdiff3/src/pdiff.cpp:1477 #10 0x000055555573cb0f in KDiff3App::slotRecalcWordWrap() (this=0x555555a7f660) at /home/nyanpasu64/code/kdiff3/src/pdiff.cpp:1459 #11 0x00005555556f626e in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, void (KDiff3App::*)()>::call(void (KDiff3App::*)(), KDiff3App*, void**) (f=(void (KDiff3App::*)(class KDiff3App * const)) 0x55555573caf2 <KDiff3App::slotRecalcWordWrap()>, o=0x555555a7f660, arg=0x5555561f16d8) at /usr/include/qt/QtCore/qobjectdefs_impl.h:152 #12 0x00005555556f38fc in QtPrivate::FunctionPointer<void (KDiff3App::*)()>::call<QtPrivate::List<>, void>(void (KDiff3App::*)(), KDiff3App*, void**) (f=(void (KDiff3App::*)(class KDiff3App * const)) 0x55555573caf2 <KDiff3App::slotRecalcWordWrap()>, o=0x555555a7f660, arg=0x5555561f16d8) at /usr/include/qt/QtCore/qobjectdefs_impl.h:185 #13 0x00005555556f16f1 in QtPrivate::QSlotObject<void (KDiff3App::*)(), QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (which=1, this_=0x55555601c240, r=0x555555a7f660, a=0x5555561f16d8, ret=0x0) at /usr/include/qt/QtCore/qobjectdefs_impl.h:418 #14 0x00007ffff60c4174 in QObject::event(QEvent*) () at /usr/lib/libQt5Core.so.5 #15 0x00007ffff6d7893f in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/libQt5Widgets.so.5 #16 0x00007ffff609c6f8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib/libQt5Core.so.5 #17 0x00007ffff60a165b in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib/libQt5Core.so.5 #18 0x00007ffff60e76d8 in () at /usr/lib/libQt5Core.so.5 #19 0x00007ffff450fa31 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0 #20 0x00007ffff456ccc9 in () at /usr/lib/libglib-2.0.so.0 #21 0x00007ffff450d0e2 in g_main_context_iteration () at /usr/lib/libglib-2.0.so.0 #22 0x00007ffff60eb51c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5 #23 0x00007ffff609b404 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5 #24 0x00007ffff609c8a3 in QCoreApplication::exec() () at /usr/lib/libQt5Core.so.5 #25 0x00005555556d2cf7 in main(int, char**) (argc=3, argv=0x7fffffffdac8) at /home/nyanpasu64/code/kdiff3/src/main.cpp:210 EXPECTED RESULT No crash. SOFTWARE/OS VERSIONS Operating System: Arch Linux KDE Plasma Version: 5.27.7 KDE Frameworks Version: 5.108.0 Qt Version: 5.15.10 Kernel Version: 6.4.9-arch1-1 (64-bit) Graphics Platform: Wayland Processors: 12 × AMD Ryzen 5 5600X 6-Core Processor Memory: 15.5 GiB of RAM Graphics Processor: AMD Radeon RX 570 Series Manufacturer: Gigabyte Technology Co., Ltd. Product Name: B550M DS3H This bug occurs on kdiff3 1.10+git 06a3487d030ba7fc401fc56280f96129a53c2fea and master bd8ad0d72538bcc2a6490ebb93ce21ced5aa0cc5, but not on the tagged 1.10.5. This could probably be bisected if needed, though that won't necessarily tell *why* the change crashes. ADDITIONAL INFORMATION -- You are receiving this mail because: You are watching all bug changes.