https://bugs.kde.org/show_bug.cgi?id=488624
JATothrim <jarmo.tii...@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Status|RESOLVED |REOPENED Resolution|FIXED |--- --- Comment #4 from JATothrim <jarmo.tii...@gmail.com> --- >:( git version: 56034f129bb355418752ed89aa5166c216fbb161, built kdiff3 --version reports 1.11.70 (gdb) bt #0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44 #1 0x00007ffff64a5463 in __pthread_kill_internal (threadid=<optimized out>, signo=6) at pthread_kill.c:78 #2 0x00007ffff644c120 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #3 0x00007ffff64334c3 in __GI_abort () at abort.c:79 #4 0x00007ffff5a97b2c in __gnu_cxx::__verbose_terminate_handler () at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/vterminate.cc:95 #5 0x00007ffff5aadffa in __cxxabiv1::__terminate (handler=<optimized out>) at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:48 #6 0x00007ffff5a9752a in std::terminate () at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/eh_terminate.cc:58 #7 0x00007ffff5aae2b6 in __cxxabiv1::__cxa_throw (obj=<optimized out>, tinfo=0x7ffff5c76dc0 <typeinfo for std::out_of_range>, dest=0x7ffff5ac5810 <std::out_of_range::~out_of_range()>) at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/eh_throw.cc:98 #8 0x00007ffff5a9b423 in std::__throw_out_of_range_fmt (__fmt=0x55555579c8b0 "vector::_M_range_check: __n (which is %zu) >= this->size() (which is %zu)") at /usr/src/debug/gcc/gcc/libstdc++-v3/src/c++11/functexcept.cc:101 #9 0x00005555556632d0 in std::vector<LineData, std::allocator<LineData> >::_M_range_check (this=0x555555eeab50, __n=18446744073709551615) at /usr/include/c++/14.2.1/bits/stl_vector.h:1160 #10 0x0000555555662163 in std::vector<LineData, std::allocator<LineData> >::at (this=0x555555eeab50, __n=18446744073709551615) at /usr/include/c++/14.2.1/bits/stl_vector.h:1182 #11 0x0000555555661626 in Diff3Line::getLineData (this=0x55555655ccc0, src=e_SrcSelector::A) at /usr/src/debug/kdiff3-git/kdiff3/src/diff.h:336 #12 0x0000555555661731 in Diff3Line::getString (this=0x55555655ccc0, src=e_SrcSelector::A) at /usr/src/debug/kdiff3-git/kdiff3/src/diff.h:341 #13 0x000055555565fdf0 in Diff3LineList::findHistoryRange (this=0x5555560052a8, historyStart=..., bThreeFiles=true, range=...) at /usr/src/debug/kdiff3-git/kdiff3/src/diff.cpp:1628 #14 0x00005555556862b1 in MergeResultWindow::slotMergeHistory (this=0x5555559ca080) at /usr/src/debug/kdiff3-git/kdiff3/src/mergeresultwindow.cpp:1149 #15 0x00005555556814d0 in MergeResultWindow::merge (this=0x5555559ca080, bAutoSolve=true, defaultSelector=e_SrcSelector::Min, bConflictsOnly=false, bWhiteSpaceOnly=false) at /usr/src/debug/kdiff3-git/kdiff3/src/mergeresultwindow.cpp:361 #16 0x000055555567d768 in MergeResultWindow::init (this=0x5555559ca080, pLineDataA=std::shared_ptr<std::vector<LineData, std::allocator<LineData> >> (use count 5, weak count 0) = {...}, sizeA=..., pLineDataB=std::shared_ptr<std::vector<LineData, std::allocator<LineData> >> (use count 4, weak count 0) = {...}, sizeB=..., pLineDataC=std::shared_ptr<std::vector<LineData, std::allocator<LineData> >> (use count 5, weak count 0) = {...}, sizeC=..., pDiff3LineList=0x5555560052a8, pTotalDiffStatus=0x555555eeaa30, bAutoSolve=true) at /usr/src/debug/kdiff3-git/kdiff3/src/mergeresultwindow.cpp:131 #17 0x000055555561429d in KDiff3App::mainInit (this=0x555556004f00, pTotalDiffStatus=0x555555eeaa30, inFlags=...) at /usr/src/debug/kdiff3-git/kdiff3/src/pdiff.cpp:389 #18 0x00005555555bbeff in KDiff3App::doFileCompare (this=0x555556004f00) at /usr/src/debug/kdiff3-git/kdiff3/src/kdiff3.cpp:610 #19 0x00005555555bc26f in KDiff3App::completeInit (this=0x555556004f00) at /usr/src/debug/kdiff3-git/kdiff3/src/kdiff3.cpp:647 #20 0x00005555555a95f1 in KDiff3Shell::KDiff3Shell (this=0x555555ac9520, fn1=..., fn2=..., fn3=..., __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at /usr/src/debug/kdiff3-git/kdiff3/src/kdiff3_shell.cpp:39 #21 0x00005555555a32a9 in operator() (__closure=0x5555560908d0) at /usr/src/debug/kdiff3-git/kdiff3/src/main.cpp:192 #22 0x00005555555a5dff in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, main(qint32, char**)::<lambda()> >::call(struct {...} &, void **) (f=..., arg=0x555555dc21a8) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:137 #23 0x00005555555a5dd1 in QtPrivate::FunctorCallable<main(qint32, char**)::<lambda()> >::call<QtPrivate::List<>, void>(struct {...} &, void *, void **) (f=..., arg=0x555555dc21a8) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:345 #24 0x00005555555a5d92 in QtPrivate::QCallableObject<main(qint32, char**)::<lambda()>, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=1, this_=0x5555560908c0, r=0x7fffffffdb90, a=0x555555dc21a8, ret=0x0) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:555 #25 0x00007ffff5f8d89f in QObject::event (this=0x7fffffffdb90, e=0x555555dc2160) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:1452 #26 0x00007ffff70fc8cc in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x7fffffffdb90, e=0x555555dc2160) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3287 #27 0x00007ffff5f45aa8 in QCoreApplication::notifyInternal2 (receiver=0x7fffffffdb90, event=event@entry=0x555555dc2160) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1142 #28 0x00007ffff5f45e6b in QCoreApplication::sendEvent (receiver=<optimized out>, event=0x555555dc2160) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1583 #29 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x5555558d1ba0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1940 #30 0x00007ffff61aa00c in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1797 #31 postEventSourceDispatch (s=0x555555941700) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:244 #32 0x00007ffff5511299 in g_main_dispatch (context=0x7fffe8000f00) at ../glib/glib/gmain.c:3344 #33 0x00007ffff5573ec7 in g_main_context_dispatch_unlocked (context=0x7fffe8000f00) at ../glib/glib/gmain.c:4152 #34 g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x7fffe8000f00, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4217 #35 0x00007ffff5510795 in g_main_context_iteration (context=0x7fffe8000f00, may_block=1) at ../glib/glib/gmain.c:4282 #36 0x00007ffff61a82bd in QEventDispatcherGlib::processEvents (this=0x555555a96e70, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:394 #37 0x00007ffff5f4ff66 in QEventLoop::processEvents (this=0x7fffffffdaa0, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:100 #38 QEventLoop::exec (this=0x7fffffffdaa0, flags=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventloop.cpp:182 #39 0x00007ffff5f4a11d in QCoreApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/corelib/global/qflags.h:74 #40 0x00007ffff70f86aa in QApplication::exec () at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:2555 #41 0x00005555555a4d57 in main (argc=13, argv=0x7fffffffdf18) at /usr/src/debug/kdiff3-git/kdiff3/src/main.cpp:195 (gdb) frame 11 #11 0x0000555555661626 in Diff3Line::getLineData (this=0x55555655ccc0, src=e_SrcSelector::A) at /usr/src/debug/kdiff3-git/kdiff3/src/diff.h:336 336 return m_pDiffBufferInfo->getLineData(src)->at(lineC); (gdb) p lineC $3 = {static invalid = -1, mLineNumber = {m_t = -1}} (gdb) info args this = 0x55555655ccc0 src = e_SrcSelector::A I rejoiced too early. Reeves (or who is the responsible maintainer), seriously, by all respect how this is not staying fixed? How/why did this break/regress again? The kdiff3 dies to ->at(size_t(-1)) which will throw std::out_of_range because of accessing at index 18446744073709551615, and this bug is reproduced by simply doing a three-way merge. -- You are receiving this mail because: You are watching all bug changes.