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.

Reply via email to