https://bugs.kde.org/show_bug.cgi?id=469923

            Bug ID: 469923
           Summary: Kdiff3 crashes when the compared directories contain
                    symlinks with nonexistent targets
    Classification: Applications
           Product: kdiff3
           Version: 1.10.0
          Platform: Debian testing
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: application
          Assignee: reeves...@gmail.com
          Reporter: jpale...@web.de
  Target Milestone: ---

Application: kdiff3 (1.9.70 (64 bit))

Qt Version: 5.15.8
Frameworks Version: 5.103.0
Operating System: Linux 6.1.0-6-amd64 x86_64
Windowing System: X11
Distribution: Debian GNU/Linux 12 (bookworm)
DrKonqi: 5.27.2 [KCrashBackend]

-- Information about the crash:
Hello

when I tried to compare two directories, kdiff 3 crashed. From the bactrace and
inspection under gdb, I can see this is because it tripped on a file which is a
symlink with nonexistant target. QFileInfo can't provide a modification time in
that case, therefore the modification time is invalid, which causes an assert
failure.

The crash can be reproduced every time.

-- Backtrace:
Application: KDiff3 (kdiff3), signal: Aborted

[KCrash Handler]
#4  __pthread_kill_implementation (threadid=<optimized out>,
signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
#5  0x00007ff257ea9d2f in __pthread_kill_internal (signo=6, threadid=<optimized
out>) at ./nptl/pthread_kill.c:78
#6  0x00007ff257e5aef2 in __GI_raise (sig=sig@entry=6) at
../sysdeps/posix/raise.c:26
#7  0x00007ff257e45472 in __GI_abort () at ./stdlib/abort.c:79
#8  0x00007ff257e45395 in __assert_fail_base (fmt=0x7ff2515db91f "%s%s%s:%u:
%s%sP\305\231edpoklad \342\200\236%s\342\200\234 nespln\304\233n.\n%n",
assertion=assertion@entry=0x55f87554a7a8 "!m_modificationTime.isNull()",
file=file@entry=0x55f87554a728 "./src/fileaccess.cpp", line=line@entry=762,
function=function@entry=0x55f87554aa38 "QDateTime FileAccess::lastModified()
const") at ./assert/assert.c:92
#9  0x00007ff257e53df2 in __GI___assert_fail (assertion=0x55f87554a7a8
"!m_modificationTime.isNull()", file=0x55f87554a728 "./src/fileaccess.cpp",
line=762, function=0x55f87554aa38 "QDateTime FileAccess::lastModified() const")
at ./assert/assert.c:101
#10 0x000055f8754d41c0 in FileAccess::lastModified (this=<optimized out>) at
./src/fileaccess.cpp:762
#11 0x000055f875510182 in MergeFileInfos::compareFilesAndCalcAges
(this=this@entry=0x55f87cff1aa0, errors=..., pOptions=..., pDMW=0x55f87757aaa0)
at ./src/MergeFileInfos.cpp:192
#12 0x000055f87546e4d0 in
DirectoryMergeWindow::DirectoryMergeWindowPrivate::prepareListView
(this=this@entry=0x55f8775bcc80, pp=...) at ./src/directorymergewindow.cpp:1331
#13 0x000055f875471fbb in
DirectoryMergeWindow::DirectoryMergeWindowPrivate::init (this=0x55f8775bcc80,
bDirectoryMerge=<optimized out>, bReload=<optimized out>) at
./src/directorymergewindow.cpp:951
#14 0x000055f875472ee0 in DirectoryMergeWindow::init (this=<optimized out>,
bDirectoryMerge=<optimized out>, bReload=<optimized out>) at
./src/directorymergewindow.cpp:736
#15 0x000055f875488d59 in KDiff3App::doDirectoryCompare
(this=this@entry=0x55f8772d05e0,
bCreateNewInstance=bCreateNewInstance@entry=false) at ./src/pdiff.cpp:1627
#16 0x000055f87545da3f in KDiff3App::completeInit (this=0x55f8772d05e0,
fn1=..., fn2=..., fn3=...) at ./src/kdiff3.cpp:432
#17 0x000055f87544fda8 in KDiff3Shell::KDiff3Shell (this=0x55f876f6a410,
bCompleteInit=<optimized out>, __in_chrg=<optimized out>, __vtt_parm=<optimized
out>) at ./src/kdiff3_shell.cpp:60
#18 0x000055f8754447bb in main (argc=<optimized out>, argv=<optimized out>) at
./src/main.cpp:197
[Inferior 1 (process 78517) detached]

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to