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

            Bug ID: 480033
           Summary: Crash in SFTPWorker::sftpCopyGet in coroutine
    Classification: Frameworks and Libraries
           Product: kio-extras
           Version: unspecified
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: SFTP
          Assignee: plasma-b...@kde.org
          Reporter: k...@privat.broulik.de
  Target Milestone: ---

SUMMARY
Using KIO SFTP apart from browsing folders in Dolphin is almost impossible
because it crashes all the time in Coroutine stuff when actually downloading
files (bei it through the thumbnailer or opening a file in Kate).

I assume the coroutine resumes when the stuff it accesses is already gone,
common pattern with QCoro.

STEPS TO REPRODUCE
1. Open an sftp:/ share in Dolphin
2. Turn on previews
3. Browse around or open files

OBSERVED RESULT
kio SFTP crashes

EXPECTED RESULT
kio SFTP works

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: git master 2024-08-18
Qt Version: 6.6.1

ADDITIONAL INFORMATION
The places it crashes are different but it's always got to do with coroutines
[KCrash Handler]
#6  __pthread_kill_implementation (no_tid=0, signo=6, threadid=139679482331776)
at ./nptl/pthread_kill.c:44
#7  __pthread_kill_internal (signo=6, threadid=139679482331776) at
./nptl/pthread_kill.c:78
#8  __GI___pthread_kill (threadid=139679482331776, signo=signo@entry=6) at
./nptl/pthread_kill.c:89
#9  0x00007f09ade42476 in __GI_raise (sig=sig@entry=6) at
../sysdeps/posix/raise.c:26
#10 0x00007f09ade287f3 in __GI_abort () at ./stdlib/abort.c:79
#11 0x00007f09ade89676 in __libc_message (action=action@entry=do_abort,
fmt=fmt@entry=0x7f09adfdbb77 "%s\n") at ../sysdeps/posix/libc_fatal.c:155
#12 0x00007f09adea0cfc in malloc_printerr (str=str@entry=0x7f09adfdec48
"malloc(): unsorted double linked list corrupted") at ./malloc/malloc.c:5664
#13 0x00007f09adea42dc in _int_malloc (av=av@entry=0x7f09ae01ac80 <main_arena>,
bytes=bytes@entry=65536) at ./malloc/malloc.c:4010
#14 0x00007f09adea5139 in __GI___libc_malloc (bytes=65536) at
./malloc/malloc.c:3329
#15 0x00007f09ae5b08e8 in allocateData (allocSize=<optimized out>) at
./src/corelib/tools/qarraydata.cpp:139
#16 QArrayData::allocate (dptr=0x7ffc7f69dfa0, objectSize=<optimized out>,
alignment=8, capacity=65518, option=<optimized out>) at
./src/corelib/tools/qarraydata.cpp:189
#17 0x00007f09ae62242c in QTypedArrayData<char>::allocate
(option=QArrayData::Grow, capacity=0) at ./src/corelib/tools/qarraydata.h:101
#18 QByteArray::reallocData (this=this@entry=0x557979e4ce78,
alloc=alloc@entry=59307, option=option@entry=QArrayData::Grow) at
./src/corelib/text/qbytearray.cpp:1927
#19 0x00007f09ae62279a in QByteArray::resize (this=this@entry=0x557979e4ce78,
size=size@entry=59307) at ./src/corelib/text/qbytearray.cpp:1866
#20 0x00007f09ae9a0d2e in SFTPWorker::GetRequest::readChunks (data=...,
this=0x557979e4ce48) at ./sftp/kio_sftp.cpp:2088
#21 SFTPWorker::asyncRead(_ZN10SFTPWorker9asyncReadEP16sftp_file_structm.Frame
*) (frame_ptr=0x557979e4ce00) at ./sftp/kio_sftp.cpp:2247
#22 0x00007f09ae99bb89 in
std::__n4861::coroutine_handle<QCoro::detail::GeneratorPromise<SFTPWorker::ReadResponse>
>::resume (this=<synthetic pointer>) at /usr/include/c++/11/coroutine:231
#23 QCoro::GeneratorIterator<SFTPWorker::ReadResponse>::operator++
(this=<synthetic pointer>) at /usr/include/qcoro6/qcoro/qcorogenerator.h:171
#24 SFTPWorker::sftpGet (this=0x7ffc7f69e680, url=..., offset=<optimized out>,
fd=5) at ./sftp/kio_sftp.cpp:1311
#25 0x00007f09ae99efa7 in SFTPWorker::sftpCopyGet (flags=...,
permissionsMode=<optimized out>, sCopyFile=..., url=..., this=0x7ffc7f69e680)
at ./sftp/kio_sftp.cpp:1664
#26 SFTPWorker::copy (this=0x7ffc7f69e680, src=..., dest=...,
permissions=<optimized out>, flags=...) at ./sftp/kio_sftp.cpp:1588
#27 0x00007f09ae8631f4 in KIO::WorkerSlaveBaseBridge::copy
(this=0x557979d22210, src=..., dest=..., permissions=<optimized out>,
flags=...) at ./src/core/workerbase_p.h:156

---

[KCrash Handler]
#6  0x00007f95f88334ec in QArrayDataPointer<char>::deref (this=0x557416dd9798,
this=0x557416dd9798) at
/usr/include/x86_64-linux-gnu/qt6/QtCore/qarraydatapointer.h:413
#7  QArrayDataPointer<char>::~QArrayDataPointer (this=<optimized out>,
this=<optimized out>) at
/usr/include/x86_64-linux-gnu/qt6/QtCore/qarraydatapointer.h:102
#8  0x00007f95f8833691 in QByteArray::~QByteArray (this=<optimized out>,
this=<optimized out>) at
/usr/include/x86_64-linux-gnu/qt6/QtCore/qbytearray.h:521
#9  SFTPWorker::asyncRead(_ZN10SFTPWorker9asyncReadEP16sftp_file_structm.Frame
*) (frame_ptr=0x557416dd9720) at ./sftp/kio_sftp.cpp:2261
#10 0x00007f95f882eb89 in
std::__n4861::coroutine_handle<QCoro::detail::GeneratorPromise<SFTPWorker::ReadResponse>
>::resume (this=<synthetic pointer>) at /usr/include/c++/11/coroutine:231
#11 QCoro::GeneratorIterator<SFTPWorker::ReadResponse>::operator++
(this=<synthetic pointer>) at /usr/include/qcoro6/qcoro/qcorogenerator.h:171
#12 SFTPWorker::sftpGet (this=0x7ffe2764d790, url=..., offset=<optimized out>,
fd=8) at ./sftp/kio_sftp.cpp:1311
#13 0x00007f95f8831fa7 in SFTPWorker::sftpCopyGet (flags=...,
permissionsMode=<optimized out>, sCopyFile=..., url=..., this=0x7ffe2764d790)
at ./sftp/kio_sftp.cpp:1664
#14 SFTPWorker::copy (this=0x7ffe2764d790, src=..., dest=...,
permissions=<optimized out>, flags=...) at ./sftp/kio_sftp.cpp:1588
#15 0x00007f95f86f61f4 in KIO::WorkerSlaveBaseBridge::copy
(this=0x557416cb0210, src=..., dest=..., permissions=<optimized out>,
flags=...) at ./src/core/workerbase_p.h:156

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

Reply via email to