Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash fixes and valgrind error fix #6563

Merged
merged 2 commits into from
Jun 4, 2018
Merged

Crash fixes and valgrind error fix #6563

merged 2 commits into from
Jun 4, 2018

Commits on Jun 4, 2018

  1. csync: refactor csync_s::error_string to avoid valgrind error

    The problem here is that we were sometimes allocating the error_string with
    qstrdup, which need to be released with delete[] and not free().
    
    Simplify the code by using QString instead.
    
    ```
    ==7230== Mismatched free() / delete / delete []
    ==7230==    at 0x4C2E10B: free (vg_replace_malloc.c:530)
    ==7230==    by 0x57C2321: csync_s::reinitialize() (csync.cpp:247)
    ==7230==    by 0x548130F: OCC::SyncEngine::finalize(bool) (syncengine.cpp:1212)
    ==7230==    by 0x5481223: OCC::SyncEngine::handleSyncError(csync_s*, char const*) (syncengine.cpp:746)
    ==7230==    by 0x5483E78: OCC::SyncEngine::slotDiscoveryJobFinished(int) (syncengine.cpp:965)
    ==7230==    by 0x5495E34: QtPrivate::FunctorCall<QtPrivate::IndexesList<0>, QtPrivate::List<int>, void, void (OCC::SyncEngine::*)(int)>::call(void (OCC::SyncEngine::*)(int), OCC::SyncEngine*, void**) (qobjectdefs_impl.h:134)
    ==7230==    by 0x5495D92: void QtPrivate::FunctionPointer<void (OCC::SyncEngine::*)(int)>::call<QtPrivate::List<int>, void>(void (OCC::SyncEngine::*)(int), OCC::SyncEngine*, void**) (qobjectdefs_impl.h:167)
    ==7230==    by 0x5495CB5: QtPrivate::QSlotObject<void (OCC::SyncEngine::*)(int), QtPrivate::List<int>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) (qobjectdefs_impl.h:396)
    ==7230==    by 0xA9BF2E1: QObject::event(QEvent*) (in /usr/lib/libQt5Core.so.5.11.0)
    ==7230==    by 0x64BE983: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQt5Widgets.so.5.11.0)
    ==7230==    by 0x64C625A: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQt5Widgets.so.5.11.0)
    ==7230==    by 0xA994BC8: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/libQt5Core.so.5.11.0)
    ==7230==  Address 0x225b2640 is 0 bytes inside a block of size 50 alloc'd
    ==7230==    at 0x4C2DC6F: operator new[](unsigned long) (vg_replace_malloc.c:423)
    ==7230==    by 0xA7E8FC8: qstrdup(char const*) (in /usr/lib/libQt5Core.so.5.11.0)
    ==7230==    by 0x53F5750: OCC::DiscoveryJob::remote_vio_opendir_hook(char const*, void*) (discoveryphase.cpp:666)
    ==7230==    by 0x57E1278: csync_vio_opendir(csync_s*, char const*) (csync_vio.cpp:39)
    ==7230==    by 0x57D718F: csync_ftw(csync_s*, char const*, int (*)(csync_s*, std::unique_ptr<csync_file_stat_s, std::default_delete<csync_file_stat_s> >), unsigned int) (csync_update.cpp:674)
    ==7230==    by 0x57C1B05: csync_update(csync_s*) (csync.cpp:109)
    ==7230==    by 0x53F5BCC: OCC::DiscoveryJob::start() (discoveryphase.cpp:718)
    ==7230==    by 0x54B8F74: OCC::DiscoveryJob::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (moc_discoveryphase.cpp:494)
    ==7230==    by 0xA9BF2E1: QObject::event(QEvent*) (in /usr/lib/libQt5Core.so.5.11.0)
    ==7230==    by 0x64BE983: QApplicationPrivate::notify_helper(QObject*, QEvent*) (in /usr/lib/libQt5Widgets.so.5.11.0)
    ==7230==    by 0x64C625A: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libQt5Widgets.so.5.11.0)
    ==7230==    by 0xA994BC8: QCoreApplication::notifyInternal2(QObject*, QEvent*) (in /usr/lib/libQt5Core.so.5.11.0)
    ==7230==
    ```
    ogoffart committed Jun 4, 2018
    Configuration menu
    Copy the full SHA
    888f2aa View commit details
    Browse the repository at this point in the history
  2. FolderStatusModel: Fix crash when there is an error while expanding f…

    …olders
    
    In FolderStatusModel::slotLscolFinishedWithError, the call to parentInfo->resetSubs
    deleted the 'job' and the reply 'r' which we accessed later to get the error code.
    
    Fix this problem twice by
     1) Get the error code before caling resetSubs
     2) in FolderStatusModel::SubFolderInfo::resetSubs, call deleteLater instead of delete
    
    Regression introduced in commit d69936e
    
    Issue #6562
    ogoffart committed Jun 4, 2018
    Configuration menu
    Copy the full SHA
    76bb76a View commit details
    Browse the repository at this point in the history