Bug 475176 - crash from std::bad_alloc when comparing folders with a huge file and "Full Analysis" File Comparison Mode
Summary: crash from std::bad_alloc when comparing folders with a huge file and "Full A...
Status: RESOLVED FIXED
Alias: None
Product: kdiff3
Classification: Applications
Component: application (show other bugs)
Version: 1.10.6
Platform: Slackware Linux
: NOR crash
Target Milestone: ---
Assignee: michael
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-10-03 14:29 UTC by Erich
Modified: 2023-12-12 19:11 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In: 1.10.7


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Erich 2023-10-03 14:29:05 UTC
SUMMARY

When comparing 2 folders which contain a huge file (>1 GB) and the "Full Analysis" File Comparison Mode option set, kdiff3 will eventually crash (before the initial folder diff comparison is finished, i.e. before the user can interact with the program).  When "Binary Comparison" File Comparison Mode option is set, kdiff3 does not crash.


STEPS TO REPRODUCE
1. Create 2 folders with a huge file (this will take a LOOONG time; feel free to create the files some other way):
$ cat do_test.sh
#!/bin/bash

mkdir tmp1
mkdir tmp2

for outer in {1..20000} ; do
        echo "outer=$outer" >> tmp1/tmp.dat
        echo "outer=$outer" >> tmp2/tmp.dat
        echo $RANDOM >> tmp1/tmp.dat
        echo $RANDOM >> tmp2/tmp.dat
        for _inner in {1..9999} ; do
                VAL=$RANDOM
                echo $VAL >> tmp1/tmp.dat
                echo $VAL >> tmp2/tmp.dat
        done
done

for outer in {1..100} ; do
        for _inner in {1..999} ; do
                VAL=$RANDOM
                echo $VAL >> tmp1/"tmp$outer.dat"
                echo $VAL >> tmp2/"tmp$outer.dat"
        done
done

kdiff3 tmp1 tmp2
# EOF

$ ls -lh tmp1/tmp.dat 
-rw-r--r-- 1 erich erich 1.1G Oct  3 08:04 tmp1/tmp.dat
$ ls -lh tmp1/tmp1.dat 
-rw-r--r-- 1 erich erich 5.5K Oct  3 08:04 tmp1/tmp1.dat


2. Use kdiff3 to diff folders tmp1 and tmp2, making sure "Full Analysis" File Comparison Mode option is set (Settings -> Folder -> File Comparison Mode -> Full Analysis).

OBSERVED RESULT

kdiff3 crashes with the following message at the command line:
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

Running under gdb produces the following stack trace:
$ gdb kdiff3
GNU gdb (GDB) 11.2
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-slackware-linux".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from kdiff3...
(gdb) c
The program is not being run.
(gdb) run
Starting program: /usr/bin/kdiff3 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7ffff204f640 (LWP 81117)]
[New Thread 0x7fffebfff640 (LWP 81128)]
org.kde.kdiff3: "Diff: A <-> B"
org.kde.kdiff3: "Linediff: A <-> B"
org.kde.kdiff3: Enter: calcDiff3LineListUsingAB
org.kde.kdiff3: Leave: calcDiff3LineListUsingAB
[New Thread 0x7fffde7ff640 (LWP 81196)]
[New Thread 0x7fffddffe640 (LWP 81197)]
[New Thread 0x7fffdd7fd640 (LWP 81198)]
[New Thread 0x7fffdcffc640 (LWP 81199)]
[New Thread 0x7fffcffff640 (LWP 81200)]
[New Thread 0x7fffcf7fe640 (LWP 81201)]
[New Thread 0x7fffceffd640 (LWP 81202)]
[New Thread 0x7fffce7fc640 (LWP 81203)]
[New Thread 0x7fffcdffb640 (LWP 81204)]
[New Thread 0x7fffcd7fa640 (LWP 81205)]
[New Thread 0x7fffccff9640 (LWP 81206)]
[New Thread 0x7fffaffff640 (LWP 81207)]
[New Thread 0x7fffaf7fe640 (LWP 81208)]
[New Thread 0x7fffaeffd640 (LWP 81209)]
[New Thread 0x7fffae7fc640 (LWP 81210)]
[New Thread 0x7fffadffb640 (LWP 81211)]
[New Thread 0x7fffad7fa640 (LWP 81212)]
[New Thread 0x7fffacff9640 (LWP 81213)]
[New Thread 0x7fff8ffff640 (LWP 81214)]
[New Thread 0x7fff8f7fe640 (LWP 81215)]
[New Thread 0x7fff8effd640 (LWP 81216)]
[New Thread 0x7fff8e7fc640 (LWP 81217)]
[New Thread 0x7fff8dffb640 (LWP 81218)]
[New Thread 0x7fff8d7fa640 (LWP 81219)]
[New Thread 0x7fff8cff9640 (LWP 81220)]
[New Thread 0x7fff6ffff640 (LWP 81221)]
[New Thread 0x7fff6f7fe640 (LWP 81222)]
[New Thread 0x7fff6effd640 (LWP 81223)]
[New Thread 0x7fff6e7fc640 (LWP 81224)]
[New Thread 0x7fff6dffb640 (LWP 81225)]
[New Thread 0x7fff6d7fa640 (LWP 81226)]
[New Thread 0x7fff6cff9640 (LWP 81227)]
[New Thread 0x7fff4ffff640 (LWP 81228)]
[New Thread 0x7fff4f7fe640 (LWP 81229)]
[New Thread 0x7fff4effd640 (LWP 81230)]
[Detaching after fork from child process 81239]
[Detaching after fork from child process 81241]
[Detaching after fork from child process 81243]
[Detaching after fork from child process 81244]
[Detaching after fork from child process 81246]
org.kde.kdiff3.fileAccess: Reading folder:  "/home/erich/data/system/pkgs/kdiff3/tmp/tmp1"
org.kde.kdiff3.fileAccess: Reading folder:  "/home/erich/data/system/pkgs/kdiff3/tmp/tmp2"
org.kde.kdiff3: "Loading A: /home/erich/data/system/pkgs/kdiff3/tmp/tmp1/tmp.dat"
[Thread 0x7fffcf7fe640 (LWP 81201) exited]
[Thread 0x7fff6effd640 (LWP 81223) exited]
[Thread 0x7fff6d7fa640 (LWP 81226) exited]
[Thread 0x7fffadffb640 (LWP 81211) exited]
[Thread 0x7fffacff9640 (LWP 81213) exited]
[Thread 0x7fffddffe640 (LWP 81197) exited]
[Thread 0x7fff8ffff640 (LWP 81214) exited]
[Thread 0x7fff8dffb640 (LWP 81218) exited]
[Thread 0x7fffce7fc640 (LWP 81203) exited]
[Thread 0x7fff8d7fa640 (LWP 81219) exited]
[Thread 0x7fffcffff640 (LWP 81200) exited]
[Thread 0x7fff4ffff640 (LWP 81228) exited]
[Thread 0x7fff4effd640 (LWP 81230) exited]
[Thread 0x7fffaffff640 (LWP 81207) exited]
[Thread 0x7fffcd7fa640 (LWP 81205) exited]
[Thread 0x7fff8effd640 (LWP 81216) exited]
[Thread 0x7fffaeffd640 (LWP 81209) exited]
[Thread 0x7fffcdffb640 (LWP 81204) exited]
[Thread 0x7fffccff9640 (LWP 81206) exited]
[Thread 0x7fffceffd640 (LWP 81202) exited]
[Thread 0x7fff8f7fe640 (LWP 81215) exited]
[Thread 0x7fff8cff9640 (LWP 81220) exited]
[Thread 0x7fffdd7fd640 (LWP 81198) exited]
[Thread 0x7fff6f7fe640 (LWP 81222) exited]
[Thread 0x7fff6dffb640 (LWP 81225) exited]
[Thread 0x7fffaf7fe640 (LWP 81208) exited]
[Thread 0x7fffae7fc640 (LWP 81210) exited]
[Thread 0x7fff6ffff640 (LWP 81221) exited]
[Thread 0x7fff8e7fc640 (LWP 81217) exited]
[Thread 0x7fffdcffc640 (LWP 81199) exited]
[Thread 0x7fff6cff9640 (LWP 81227) exited]
[Thread 0x7fff6e7fc640 (LWP 81224) exited]
[Thread 0x7fff4f7fe640 (LWP 81229) exited]
[Thread 0x7fffad7fa640 (LWP 81212) exited]
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

Thread 1 "kdiff3" received signal SIGABRT, Aborted.
0x00007ffff585c868 in raise () from /lib64/libc.so.6
(gdb) bt
#0  0x00007ffff585c868 in raise () from /lib64/libc.so.6
#1  0x00007ffff5843546 in abort () from /lib64/libc.so.6
#2  0x00007ffff56a589a in ?? () from /usr/lib64/libstdc++.so.6
#3  0x00007ffff56b106a in ?? () from /usr/lib64/libstdc++.so.6
#4  0x00007ffff56b10d5 in std::terminate() () from /usr/lib64/libstdc++.so.6
#5  0x00007ffff56b1368 in __cxa_throw () from /usr/lib64/libstdc++.so.6
#6  0x00007ffff5a98fa9 in qBadAlloc() () from /usr/lib64/libQt5Core.so.5
#7  0x00007ffff5a9e24b in ?? () from /usr/lib64/libQt5Core.so.5
#8  0x00007ffff5b5f722 in QString::append(QString const&) ()
   from /usr/lib64/libQt5Core.so.5
#9  0x0000000000511cfc in SourceData::FileData::preprocess (this=0x78f4c0, 
    pEncoding=<optimized out>, removeComments=false)
    at /usr/include/qt5/QtCore/qsharedpointer_impl.h:301
#10 0x00000000005128a4 in SourceData::readAndPreprocess (this=0x78f3d0, 
    pEncoding=0x5cf750, bAutoDetectUnicode=<optimized out>)
    at /tmp/slackrepo/etr/slackrepo.6KVtzD/build_kdiff3/kdiff3-1.10.6/src/SourceData.cpp:466
#11 0x000000000048969a in KDiff3App::mainInit (this=0x95ffd0, pTotalDiffStatus=0xf880e8, 
    inFlags=...)
    at /tmp/slackrepo/etr/slackrepo.6KVtzD/build_kdiff3/kdiff3-1.10.6/src/pdiff.cpp:131
#12 0x000000000048f83d in KDiff3App::slotFileOpen2 (this=0x95ffd0, errors=..., fn1=..., 
    fn2=..., fn3=..., ofn=..., an1=..., an2=..., an3=..., pTotalDiffStatus=0xf880e8)
    at /tmp/slackrepo/etr/slackrepo.6KVtzD/build_kdiff3/kdiff3-1.10.6/src/pdiff.cpp:983
#13 0x000000000047b2f4 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1, 2, 3, 4, 5, 6, 7, 8>, QtPrivate::List<QStringList&, QString const&, QString const&, QString const&, QString const&, QString const&, QString const&, QString const&, TotalDiffStatus*>, void, void (KDiff3App::*)(QStringList&, QString const&, QString const&, QString const&, QString const&, QString const&, QString const&, QString const&, TotalDiffStatus*)>::call (
    arg=<optimized out>, o=<optimized out>, f=<optimized out>)
    at /usr/include/qt5/QtCore/qobjectdefs_impl.h:152
#14 QtPrivate::FunctionPointer<void (KDiff3App::*)(QStringList&, QString const&, QString const&, QString const&, QString const&, QString const&, QString const&, QString const&, TotalDiffStatus*)>::call<QtPrivate::List<QStringList&, QString const&, QString const&, QString const&, QString const&, QString const&, QString const&, QString const&, TotalDiffStatus*>, void> (arg=<optimized out>, o=<optimized out>, f=<optimized out>)
    at /usr/include/qt5/QtCore/qobjectdefs_impl.h:185
#15 QtPrivate::QSlotObject<void (KDiff3App::*)(QStringList&, QString const&, QString const--Type <RET> for more, q to quit, c to continue without paging--
&, QString const&, QString const&, QString const&, QString const&, QString const&, TotalDiffStatus*), QtPrivate::List<QStringList&, QString const&, QString const&, QString const&, QString const&, QString const&, QString const&, QString const&, TotalDiffStatus*>, void>::impl (which=<optimized out>, this_=<optimized out>, r=<optimized out>, 
    a=<optimized out>, ret=<optimized out>)
    at /usr/include/qt5/QtCore/qobjectdefs_impl.h:418
#16 0x00007ffff5ce744d in ?? () from /usr/lib64/libQt5Core.so.5
#17 0x000000000044687e in DirectoryMergeWindow::startDiffMerge (
    this=this@entry=0xc51f30, _t1=..., _t2=..., _t3=..., _t4=..., _t5=..., _t6=..., 
    _t7=..., _t8=..., _t9=<optimized out>)
    at /tmp/slackrepo/etr/slackrepo.6KVtzD/build_kdiff3/kdiff3-1.10.6/build/src/kdiff3_autogen/EWIEGA46WW/moc_directorymergewindow.cpp:365
#18 0x000000000050bd0c in MergeFileInfos::compareFilesAndCalcAges (
    this=this@entry=0xf880c0, errors=..., pOptions=..., pDMW=0xc51f30)
    at /tmp/slackrepo/etr/slackrepo.6KVtzD/build_kdiff3/kdiff3-1.10.6/src/MergeFileInfos.cpp:215
#19 0x0000000000471de3 in DirectoryMergeWindow::DirectoryMergeWindowPrivate::prepareListView (this=0x7f9530)
    at /tmp/slackrepo/etr/slackrepo.6KVtzD/build_kdiff3/kdiff3-1.10.6/src/directorymergewindow.cpp:1331
#20 0x0000000000472e0a in DirectoryMergeWindow::DirectoryMergeWindowPrivate::init (
    this=0x7f9530, bDirectoryMerge=<optimized out>, bReload=<optimized out>)
    at /tmp/slackrepo/etr/slackrepo.6KVtzD/build_kdiff3/kdiff3-1.10.6/src/directorymergewindow.cpp:951
#21 0x000000000048d48f in KDiff3App::doDirectoryCompare (this=0x95ffd0, 
    bCreateNewInstance=<optimized out>)
    at /tmp/slackrepo/etr/slackrepo.6KVtzD/build_kdiff3/kdiff3-1.10.6/src/pdiff.cpp:1628
#22 0x000000000048f40e in KDiff3App::slotFileOpen (this=this@entry=0x95ffd0)
    at /tmp/slackrepo/etr/slackrepo.6KVtzD/build_kdiff3/kdiff3-1.10.6/src/pdiff.cpp:898
#23 0x000000000045cb25 in KDiff3App::completeInit (this=this@entry=0x95ffd0, fn1=..., 
    fn2=..., fn3=...)
    at /tmp/slackrepo/etr/slackrepo.6KVtzD/build_kdiff3/kdiff3-1.10.6/src/kdiff3.cpp:575
#24 0x000000000044e8c4 in KDiff3Shell::KDiff3Shell (this=this@entry=0x75e100, 
    bCompleteInit=bCompleteInit@entry=true, __in_chrg=<optimized out>, 
    __vtt_parm=<optimized out>)
    at /tmp/slackrepo/etr/slackrepo.6KVtzD/build_kdiff3/kdiff3-1.10.6/src/kdiff3_shell.cpp:64
--Type <RET> for more, q to quit, c to continue without paging--
#25 0x00000000004445f0 in main (argc=<optimized out>, argv=<optimized out>)
    at /tmp/slackrepo/etr/slackrepo.6KVtzD/build_kdiff3/kdiff3-1.10.6/src/main.cpp:201
(gdb) quit
A debugging session is active.

        Inferior 1 [process 81111] will be killed.

Quit anyway? (y or n) y


EXPECTED RESULT

No crash

Yes I realize using kdiff3 to compare 1 GB files is nonsensical.  My use case is to compare program output from multiple runs, where the output contains both huge files and small files that I actually want to compare.  It's also nice to see if the huge files are exact matches or not (indicated by red or green in the directory overview pane).

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: Slackware 15.0
(available in About System)
KDE Plasma Version: 5.23.5
KDE Frameworks Version: 5.90.0
Qt Version: 5.15.3

ADDITIONAL INFORMATION

I can currently work around this bug by ensuring "Binary Comparison" File Comparison Mode is set.

I modified the SlackBuild from here https://slackbuilds.org/repository/15.0/development/kdiff3/ by changing the line:
  -DCMAKE_BUILD_TYPE=Release ..
to
  -DCMAKE_BUILD_TYPE=Debug ..
and also commenting out the 2 lines that strip executable and object files:
#find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
#  | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
to generate a (hopefully) useful backtrace.

The observed behavior is the same for Release and Debug builds of kdiff3.
Comment 1 michael 2023-12-05 01:25:07 UTC
Git commit eedcc1a6ee02aa39bba7c2882563c95ebd48bf7c by Michael Reeves.
Committed on 05/12/2023 at 02:24.
Pushed by mreeves into branch 'master'.

Correctly handle oversized files

*Catch std::bad_alloc during file load attempt.
*reset the FileData object if we can't complete the load
FIXED-IN:1.10.7

M  +178  -156  src/SourceData.cpp
M  +11   -2    src/pdiff.cpp

https://invent.kde.org/sdk/kdiff3/-/commit/eedcc1a6ee02aa39bba7c2882563c95ebd48bf7c
Comment 2 michael 2023-12-05 01:25:42 UTC
Git commit 2f69679e0bc1f67d4647244085c5b0aa10d1a16a by Michael Reeves.
Committed on 05/12/2023 at 02:23.
Pushed by mreeves into branch '1.10'.

Correctly handle oversized files

*Catch std::bad_alloc during file load attempt.
*reset the FileData object if we can't complete the load
FIXED-IN:1.10.7

M  +61   -52   src/SourceData.cpp

https://invent.kde.org/sdk/kdiff3/-/commit/2f69679e0bc1f67d4647244085c5b0aa10d1a16a
Comment 3 Erich 2023-12-12 19:11:43 UTC
I updated to 1.10.7 and it seems I still get the same error.

Follow the same steps as before, and here is the new backtrace.  Note that on first opening kdiff3 it is set to "Binary Comparison".  After loading the directories to diff I change it to "Full Analysis" and then rerun the diff, which produces the crash.

erich@Thelio-PC:~/data/system/pkgs/kdiff3/tmp
$ gdb kdiff3
GNU gdb (GDB) 11.2
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-slackware-linux".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from kdiff3...
(gdb) run
Starting program: /usr/bin/kdiff3 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7ffff205b640 (LWP 60055)]
[New Thread 0x7fffebfff640 (LWP 60056)]
org.kde.kdiff3: "Diff: A <-> B"
org.kde.kdiff3: "Linediff: A <-> B"
org.kde.kdiff3: Enter: calcDiff3LineListUsingAB
org.kde.kdiff3: Leave: calcDiff3LineListUsingAB
[New Thread 0x7fffdf6f4640 (LWP 60064)]
[New Thread 0x7fffdeef3640 (LWP 60065)]
[New Thread 0x7fffde6f2640 (LWP 60066)]
[New Thread 0x7fffddef1640 (LWP 60067)]
[New Thread 0x7fffdd6f0640 (LWP 60068)]
[New Thread 0x7fffdceef640 (LWP 60069)]
[New Thread 0x7fffc7fff640 (LWP 60070)]
[New Thread 0x7fffc77fe640 (LWP 60071)]
[New Thread 0x7fffc6ffd640 (LWP 60072)]
[New Thread 0x7fffc67fc640 (LWP 60073)]
[New Thread 0x7fffc5ffb640 (LWP 60074)]
[New Thread 0x7fffc57fa640 (LWP 60075)]
[New Thread 0x7fffc4ff9640 (LWP 60076)]
[New Thread 0x7fffa7fff640 (LWP 60077)]
[New Thread 0x7fffa77fe640 (LWP 60078)]
[New Thread 0x7fffa6ffd640 (LWP 60079)]
[New Thread 0x7fffa67fc640 (LWP 60080)]
[New Thread 0x7fffa5ffb640 (LWP 60081)]
[New Thread 0x7fffa57fa640 (LWP 60082)]
[New Thread 0x7fffa4ff9640 (LWP 60083)]
[New Thread 0x7fff87fff640 (LWP 60084)]
[New Thread 0x7fff877fe640 (LWP 60085)]
[New Thread 0x7fff86ffd640 (LWP 60086)]
[New Thread 0x7fff867fc640 (LWP 60087)]
[New Thread 0x7fff85ffb640 (LWP 60088)]
[New Thread 0x7fff857fa640 (LWP 60089)]
[New Thread 0x7fff84ff9640 (LWP 60090)]
[New Thread 0x7fff67fff640 (LWP 60091)]
[New Thread 0x7fff677fe640 (LWP 60092)]
[New Thread 0x7fff66ffd640 (LWP 60093)]
[New Thread 0x7fff667fc640 (LWP 60094)]
[New Thread 0x7fff65ffb640 (LWP 60095)]
[New Thread 0x7fff657fa640 (LWP 60096)]
[New Thread 0x7fff64ff9640 (LWP 60097)]
[New Thread 0x7fff47fff640 (LWP 60098)]
[Detaching after fork from child process 60107]
[Detaching after fork from child process 60110]
[Detaching after fork from child process 60113]
[Detaching after fork from child process 60114]
[Detaching after fork from child process 60115]
org.kde.kdiff3.fileAccess: Reading folder:  "/home/erich/data/system/pkgs/kdiff3/tmp/tmp1"
org.kde.kdiff3.fileAccess: Reading folder:  "/home/erich/data/system/pkgs/kdiff3/tmp/tmp2"
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Sizes differ.
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp1.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp10.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp100.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp11.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp12.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp13.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp14.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp15.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp16.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp17.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp18.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp19.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp2.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp20.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp21.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp22.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp23.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp24.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp25.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp26.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp27.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp28.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp29.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp3.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp30.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp31.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp32.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp33.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp34.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp35.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp36.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp37.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp38.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp39.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp4.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp40.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp41.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp42.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp43.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp44.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp45.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp46.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp47.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp48.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp49.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp5.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp50.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp51.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp52.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp53.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp54.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp55.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp56.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp57.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp58.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp59.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp6.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp60.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp61.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp62.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp63.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp64.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp65.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp66.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp67.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp68.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp69.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp7.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp70.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp71.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp72.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp73.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp74.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp75.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp76.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp77.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp78.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp79.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp8.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp80.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp81.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp82.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp83.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp84.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp85.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp86.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp87.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp88.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp89.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp9.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp90.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp91.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp92.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp93.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp94.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp95.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp96.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp97.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp98.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
org.kde.kdiff3.mergeFileInfo: Have: ' "tmp99.dat" ' , isSymLink =  false
org.kde.kdiff3.mergeFileInfo: Comparing files...
[New Thread 0x7fff477fe640 (LWP 60210)]
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 3345, resource id: 21629404, major code: 40 (TranslateCoords), minor code: 0
org.kde.kdiff3.fileAccess: Reading folder:  "/home/erich/data/system/pkgs/kdiff3/tmp/tmp1"
org.kde.kdiff3.fileAccess: Reading folder:  "/home/erich/data/system/pkgs/kdiff3/tmp/tmp2"
org.kde.kdiff3: "Loading A: /home/erich/data/system/pkgs/kdiff3/tmp/tmp1/tmp.dat"
[Thread 0x7fffa6ffd640 (LWP 60079) exited]
[Thread 0x7fff66ffd640 (LWP 60093) exited]
[Thread 0x7fff86ffd640 (LWP 60086) exited]
[Thread 0x7fffdd6f0640 (LWP 60068) exited]
[Thread 0x7fffa4ff9640 (LWP 60083) exited]
[Thread 0x7fffa67fc640 (LWP 60080) exited]
[Thread 0x7fffde6f2640 (LWP 60066) exited]
[Thread 0x7fff867fc640 (LWP 60087) exited]
[Thread 0x7fffc4ff9640 (LWP 60076) exited]
[Thread 0x7fff657fa640 (LWP 60096) exited]
[Thread 0x7fffa5ffb640 (LWP 60081) exited]
[Thread 0x7fff47fff640 (LWP 60098) exited]
[Thread 0x7fffa77fe640 (LWP 60078) exited]
[Thread 0x7fff64ff9640 (LWP 60097) exited]
[Thread 0x7fffc67fc640 (LWP 60073) exited]
[Thread 0x7fffc57fa640 (LWP 60075) exited]
[Thread 0x7fffc5ffb640 (LWP 60074) exited]
[Thread 0x7fffc77fe640 (LWP 60071) exited]
[Thread 0x7fffc6ffd640 (LWP 60072) exited]
[Thread 0x7fff85ffb640 (LWP 60088) exited]
[Thread 0x7fffa57fa640 (LWP 60082) exited]
[Thread 0x7fffa7fff640 (LWP 60077) exited]
[Thread 0x7fff65ffb640 (LWP 60095) exited]
[Thread 0x7fff667fc640 (LWP 60094) exited]
[Thread 0x7fff677fe640 (LWP 60092) exited]
[Thread 0x7fff67fff640 (LWP 60091) exited]
[Thread 0x7fff84ff9640 (LWP 60090) exited]
[Thread 0x7fff857fa640 (LWP 60089) exited]
[Thread 0x7fffdeef3640 (LWP 60065) exited]
[Thread 0x7fffc7fff640 (LWP 60070) exited]
[Thread 0x7fffdceef640 (LWP 60069) exited]
[Thread 0x7fffddef1640 (LWP 60067) exited]
[Thread 0x7fff877fe640 (LWP 60085) exited]
[Thread 0x7fff87fff640 (LWP 60084) exited]
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

Thread 1 "kdiff3" received signal SIGABRT, Aborted.
0x00007ffff585c868 in raise () from /lib64/libc.so.6
(gdb) bt
#0  0x00007ffff585c868 in raise () from /lib64/libc.so.6
#1  0x00007ffff5843546 in abort () from /lib64/libc.so.6
#2  0x00007ffff56a589a in ?? () from /usr/lib64/libstdc++.so.6
#3  0x00007ffff56b106a in ?? () from /usr/lib64/libstdc++.so.6
#4  0x00007ffff56b10d5 in std::terminate() () from /usr/lib64/libstdc++.so.6
#5  0x00007ffff56b1368 in __cxa_throw () from /usr/lib64/libstdc++.so.6
#6  0x00007ffff5a98fa9 in qBadAlloc() () from /usr/lib64/libQt5Core.so.5
#7  0x00007ffff5a9e24b in ?? () from /usr/lib64/libQt5Core.so.5
#8  0x00007ffff5b5f722 in QString::append(QString const&) ()
   from /usr/lib64/libQt5Core.so.5
#9  0x0000000000511c4c in SourceData::FileData::preprocess (this=0x786810, 
    pEncoding=<optimized out>, removeComments=false)
    at /usr/include/qt5/QtCore/qsharedpointer_impl.h:301
#10 0x0000000000512861 in SourceData::readAndPreprocess (this=0x786720, 
    pEncoding=0x5cf750, bAutoDetectUnicode=<optimized out>)
    at /tmp/slackrepo/etr/slackrepo.74lFVa/build_kdiff3/kdiff3-1.10.7/src/SourceData.cpp:478
#11 0x000000000048969a in KDiff3App::mainInit (this=0x95d7e0, 
    pTotalDiffStatus=0x102f108, inFlags=...)
    at /tmp/slackrepo/etr/slackrepo.74lFVa/build_kdiff3/kdiff3-1.10.7/src/pdiff.cpp:131
#12 0x000000000048f83d in KDiff3App::slotFileOpen2 (this=0x95d7e0, errors=..., fn1=..., 
    fn2=..., fn3=..., ofn=..., an1=..., an2=..., an3=..., pTotalDiffStatus=0x102f108)
    at /tmp/slackrepo/etr/slackrepo.74lFVa/build_kdiff3/kdiff3-1.10.7/src/pdiff.cpp:983
#13 0x000000000047b2f4 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0, 1, 2, 3, 4, 5, 6, 7, 8>, QtPrivate::List<QStringList&, QString const&, QString const&, QString const&, QString const&, QString const&, QString const&, QString const&, TotalDiffStatus*>, void, void (KDiff3App::*)(QStringList&, QString const&, QString const&, QString const&, QString const&, QString const&, QString const&, QString const&, TotalDiffStatus*)>::call (
    arg=<optimized out>, o=<optimized out>, f=<optimized out>)
    at /usr/include/qt5/QtCore/qobjectdefs_impl.h:152
#14 QtPrivate::FunctionPointer<void (KDiff3App::*)(QStringList&, QString const&, QString const&, QString const&, QString const&, QString const&, QString const&, QString const&, TotalDiffStatus*)>::call<QtPrivate::List<QStringList&, QString const&, QString const&, QString const&, QString const&, QString const&, QString const&, QString const&, TotalDiffStatus*>, void> (arg=<optimized out>, o=<optimized out>, f=<optimized out>)
    at /usr/include/qt5/QtCore/qobjectdefs_impl.h:185
#15 QtPrivate::QSlotObject<void (KDiff3App::*)(QStringList&, QString const&, QString const--Type <RET> for more, q to quit, c to continue without paging--
&, QString const&, QString const&, QString const&, QString const&, QString const&, TotalDiffStatus*), QtPrivate::List<QStringList&, QString const&, QString const&, QString const&, QString const&, QString const&, QString const&, QString const&, TotalDiffStatus*>, void>::impl (which=<optimized out>, this_=<optimized out>, r=<optimized out>, 
    a=<optimized out>, ret=<optimized out>)
    at /usr/include/qt5/QtCore/qobjectdefs_impl.h:418
#16 0x00007ffff5ce744d in ?? () from /usr/lib64/libQt5Core.so.5
#17 0x000000000044682e in DirectoryMergeWindow::startDiffMerge (
    this=this@entry=0xc50520, _t1=..., _t2=..., _t3=..., _t4=..., _t5=..., _t6=..., 
    _t7=..., _t8=..., _t9=<optimized out>)
    at /tmp/slackrepo/etr/slackrepo.74lFVa/build_kdiff3/kdiff3-1.10.7/build/src/kdiff3_autogen/EWIEGA46WW/moc_directorymergewindow.cpp:365
#18 0x000000000050bc5c in MergeFileInfos::compareFilesAndCalcAges (
    this=this@entry=0x102f0e0, errors=..., pOptions=..., pDMW=0xc50520)
    at /tmp/slackrepo/etr/slackrepo.74lFVa/build_kdiff3/kdiff3-1.10.7/src/MergeFileInfos.cpp:215
#19 0x0000000000471de3 in DirectoryMergeWindow::DirectoryMergeWindowPrivate::prepareListView (this=0x8fc160)
    at /tmp/slackrepo/etr/slackrepo.74lFVa/build_kdiff3/kdiff3-1.10.7/src/directorymergewindow.cpp:1331
#20 0x0000000000472e0a in DirectoryMergeWindow::DirectoryMergeWindowPrivate::init (
    this=0x8fc160, bDirectoryMerge=<optimized out>, bReload=<optimized out>)
    at /tmp/slackrepo/etr/slackrepo.74lFVa/build_kdiff3/kdiff3-1.10.7/src/directorymergewindow.cpp:951
#21 0x000000000048d48f in KDiff3App::doDirectoryCompare (this=0x95d7e0, 
    bCreateNewInstance=<optimized out>)
    at /tmp/slackrepo/etr/slackrepo.74lFVa/build_kdiff3/kdiff3-1.10.7/src/pdiff.cpp:1628
#22 0x000000000048f40e in KDiff3App::slotFileOpen (this=0x95d7e0)
    at /tmp/slackrepo/etr/slackrepo.74lFVa/build_kdiff3/kdiff3-1.10.7/src/pdiff.cpp:898
#23 0x00007ffff5ce744d in ?? () from /usr/lib64/libQt5Core.so.5
#24 0x00007ffff696aa82 in QAction::triggered(bool) () from /usr/lib64/libQt5Widgets.so.5
#25 0x00007ffff696d454 in QAction::activate(QAction::ActionEvent) ()
   from /usr/lib64/libQt5Widgets.so.5
#26 0x00007ffff6ae2fe2 in ?? () from /usr/lib64/libQt5Widgets.so.5
#27 0x00007ffff6aea601 in ?? () from /usr/lib64/libQt5Widgets.so.5
#28 0x00007ffff69af5ce in QWidget::event(QEvent*) () from /usr/lib64/libQt5Widgets.so.5
#29 0x00007ffff6970a8f in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
--Type <RET> for more, q to quit, c to continue without paging--
   from /usr/lib64/libQt5Widgets.so.5
#30 0x00007ffff6977f49 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib64/libQt5Widgets.so.5
#31 0x00007ffff5cb318a in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
   from /usr/lib64/libQt5Core.so.5
#32 0x00007ffff6976ae0 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) ()
   from /usr/lib64/libQt5Widgets.so.5
#33 0x00007ffff69c8588 in ?? () from /usr/lib64/libQt5Widgets.so.5
#34 0x00007ffff69caab5 in ?? () from /usr/lib64/libQt5Widgets.so.5
#35 0x00007ffff6970a8f in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib64/libQt5Widgets.so.5
#36 0x00007ffff5cb318a in QCoreApplication::notifyInternal2(QObject*, QEvent*) ()
   from /usr/lib64/libQt5Core.so.5
#37 0x00007ffff6146b17 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /usr/lib64/libQt5Gui.so.5
#38 0x00007ffff611e29c in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Gui.so.5
#39 0x00007ffff21a744a in ?? () from /usr/lib64/libQt5XcbQpa.so.5
#40 0x00007ffff2c5f5fb in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#41 0x00007ffff2c5f868 in ?? () from /usr/lib64/libglib-2.0.so.0
#42 0x00007ffff2c5f90f in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#43 0x00007ffff5d06cd4 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQt5Core.so.5
#44 0x00007ffff5cb1d0b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib64/libQt5Core.so.5
#45 0x00007ffff5cb995c in QCoreApplication::exec() () from /usr/lib64/libQt5Core.so.5
#46 0x00000000004445b5 in main (argc=<optimized out>, argv=<optimized out>)
    at /tmp/slackrepo/etr/slackrepo.74lFVa/build_kdiff3/kdiff3-1.10.7/src/main.cpp:204
(gdb) quit
A debugging session is active.

        Inferior 1 [process 60019] will be killed.

Quit anyway? (y or n) 
Please answer y or n.
A debugging session is active.

        Inferior 1 [process 60019] will be killed.

Quit anyway? (y or n) y
erich@Thelio-PC:~/data/system/pkgs/kdiff3/tmp
$