I suggest you ...

make mendeley work with qt 4.7

Hi,

Mendeley desktop on Linux doesn't seem to play nicely with Qt 4.7. Importing PDFs and sometimes editing their details crashes the program with the following error:

Object::connect: No such signal ImportJob::importExistingDocuments(QList<Document*>)

Thanks!

5 votes
Vote
Sign in
Signed in as (Sign out)
You have left! (?) (thinking…)
Peter LewisPeter Lewis shared this idea  ·   ·  Flag idea as inappropriate…  ·  Admin →

8 comments

Sign in
Signed in as (Sign out)
Submitting...
  • Robert KnightRobert Knight commented  ·   ·  Flag as inappropriate

    Hello,

    We have found a problem which can cause Mendeley Desktop to hang when importing files with Qt 4.7 - though it is a timing issue so it depends on the system. This will be fixed in the next release.

  • David KDavid K commented  ·   ·  Flag as inappropriate

    Hi Robert
    Thanks for the reply. I was indeed using the sytem qt installation. So far I had no crashes when I run the bundled version.

  • Peter LewisPeter Lewis commented  ·   ·  Flag as inappropriate

    Hi Robert,

    Thanks for the quick reply. I've turned off the file organiser and have just been using it for about five minutes without being able to reproduce the crash. In fact, the client is very stable unless I ask it to organise my files, so it seems that this is what's causing it to crash.

  • Robert KnightRobert Knight commented  ·   ·  Flag as inappropriate

    Hello Peter,

    Can you try turning off the file organizer and see if the problem persists? If you can get into the preferences dialog in Mendeley it can be turned off their. Otherwise you can edit the config file.

    With a text editor, open $HOME/.config/Mendeley Ltd./Mendeley Desktop.conf and in the [Organiser] section change "Enabled=true" to "Enabled=false", save the file and then start Mendeley Desktop.

  • Peter LewisPeter Lewis commented  ·   ·  Flag as inappropriate

    Hi, I just installed Qt with debugging symbols, and got this backtrace:

    Program received signal SIGSEGV, Segmentation fault.
    0x00007fd04a11fc13 in QObject::connect (sender=0x7fd02c197020, signal=0xbeb0cc "2progressChanged(int,int)", receiver=0x7fd0340e4070,
    method=0xbeb050 "1workerProgressChanged(int,int)", type=Qt::AutoConnection) at kernel/qobject.cpp:2483
    2483 const QMetaObject *smeta = sender->metaObject();
    (gdb) bt
    #0 0x00007fd04a11fc13 in QObject::connect (sender=0x7fd02c197020, signal=0xbeb0cc "2progressChanged(int,int)", receiver=0x7fd0340e4070,
    method=0xbeb050 "1workerProgressChanged(int,int)", type=Qt::AutoConnection) at kernel/qobject.cpp:2483
    #1 0x000000000069a374 in JobTracker::jobsStarted(QList<WorkerJob*> const&, QString const&) ()
    #2 0x00000000005fede6 in MainWindow::organiseDocumentFiles(Document*, QList<DocumentFile> const&) ()
    #3 0x00000000005fef9c in MainWindow::organiseDocuments(QList<Document*> const&) ()
    #4 0x00000000005e83d1 in MainWindow::qt_metacall(QMetaObject::Call, int, void**) ()
    #5 0x00007fd04a11e7ef in QMetaObject::activate (sender=0x23580a0, m=<value optimized out>, local_signal_index=<value optimized out>, argv=0x7fffe6fa59f0)
    at kernel/qobject.cpp:3272
    #6 0x00000000008e0a13 in DataStore::documentsChanged(QList<Document*> const&) ()
    #7 0x00000000008e0b2c in DataStore::qt_metacall(QMetaObject::Call, int, void**) ()
    #8 0x00007fd04a11e7ef in QMetaObject::activate (sender=0x2541c80, m=<value optimized out>, local_signal_index=<value optimized out>, argv=0x7fffe6fa5b00)
    at kernel/qobject.cpp:3272
    #9 0x00000000008e0a13 in DataStore::documentsChanged(QList<Document*> const&) ()
    #10 0x000000000083f2be in LocalDataStore::documentModified(Document*, Document::Field, QVariant const&) ()
    #11 0x00000000008a1df3 in RemoteDataStore::documentModified(Document*, Document::Field, QVariant const&) ()
    #12 0x00000000007cdb4e in Document::notifyModified(Document::Field, QVariant const&) ()
    #13 0x00000000007d0589 in void Document::setFieldValue<QVariant>(Document::Field, QVariant const&) ()
    #14 0x00000000007d3bf0 in Document::setFiles(QList<DocumentFile> const&) ()
    #15 0x00000000006d553a in FolderManagerImport::fileRemoved(QString const&) ()
    #16 0x000000000073242a in FolderManagerImport::qt_metacall(QMetaObject::Call, int, void**) ()
    #17 0x00007fd04a11e7ef in QMetaObject::activate (sender=0x2383ad0, m=<value optimized out>, local_signal_index=<value optimized out>, argv=0x7fffe6fa6160)
    at kernel/qobject.cpp:3272
    #18 0x00000000009386f3 in FolderMonitor::fileRemoved(QString const&) ()
    #19 0x0000000000912a1d in FolderMonitor::scanCompleted(QList<QFileInfo> const&) ()
    #20 0x00000000009387cc in FolderMonitor::qt_metacall(QMetaObject::Call, int, void**) ()
    #21 0x00007fd04a11d5aa in QObject::event (this=0x2383ad0, e=<value optimized out>) at kernel/qobject.cpp:1211
    #22 0x00007fd04b0eb334 in QApplicationPrivate::notify_helper (this=0x21ddb80, receiver=0x2383ad0, e=0x7fd0346667c0) at kernel/qapplication.cpp:4396
    #23 0x00007fd04b0f0571 in QApplication::notify (this=<value optimized out>, receiver=0x2383ad0, e=0x7fd0346667c0) at kernel/qapplication.cpp:4277
    #24 0x00007fd04a1070fc in QCoreApplication::notifyInternal (this=0x7fffe6fa6dc0, receiver=0x2383ad0, event=0x7fd0346667c0) at kernel/qcoreapplication.cpp:732
    #25 0x00007fd04a10b032 in sendEvent (receiver=0x0, event_type=0, data=0x21ddd20) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
    #26 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x21ddd20) at kernel/qcoreapplication.cpp:1373
    #27 0x00007fd04b19b44a in sendPostedEvents (this=0x21e55b0, flags=...) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:220
    #28 QEventDispatcherX11::processEvents (this=0x21e55b0, flags=...) at kernel/qeventdispatcher_x11.cpp:75
    #29 0x00007fd04a105b92 in QEventLoop::processEvents (this=<value optimized out>, flags=...) at kernel/qeventloop.cpp:149
    #30 0x00007fd04a105ddc in QEventLoop::exec (this=0x7fffe6fa6d10, flags=...) at kernel/qeventloop.cpp:201
    #31 0x00007fd04a10b32b in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1009
    #32 0x00000000005d4c14 in main ()

  • Robert KnightRobert Knight commented  ·   ·  Flag as inappropriate

    @David,

    If you re-install 0.9.7.1 after 0.9.8 it will refuse to load your database (with a message indicating this), leave it untouched and instead create a temporary empty one. If you re-start 0.9.8 it will then re-use your existing database on disk.

    Looking at your backtrace, it seems that Mendeley is using the system-wide Qt libraries. In theory this should work but can you try using the Mendeley libraries that are bundled with it?

  • David KDavid K commented  ·   ·  Flag as inappropriate

    Hello,
    I tried installing mendeley 0.9.8 but it crashes so fast that I cannot even attach it to gdb. Reinstalling 0.9.7.1 screwed up my database but since it crashes during synchronisation I managed to get a backtrace:

    Program received signal SIGSEGV, Segmentation fault.
    0xf4d21db2 in QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) () from /usr/lib/libQtCore.so.4
    (gdb) backtrace
    #0 0xf4d21db2 in QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) () from /usr/lib/libQtCore.so.4
    #1 0x082ace36 in JobTracker::jobsStarted(QList<WorkerJob*> const&, QString const&) ()
    #2 0x0820f651 in MainWindow::organiseDocumentFiles(Document*, QList<DocumentFile> const&) ()
    #3 0x081f876d in MainWindow::qt_metacall(QMetaObject::Call, int, void**) ()
    #4 0xf4d10cfa in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/libQtCore.so.4
    #5 0xf4d20b5f in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
    #6 0x084e5bdb in DataStore::changedDocumentFiles(Document*, QList<DocumentFile> const&) ()
    #7 0x084e5d5b in DataStore::qt_metacall(QMetaObject::Call, int, void**) ()
    #8 0xf4d10cfa in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/libQtCore.so.4
    #9 0xf4d20b5f in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
    #10 0x084e5bdb in DataStore::changedDocumentFiles(Document*, QList<DocumentFile> const&) ()
    #11 0x0843dcf5 in LocalDataStore::saveDocumentModifications(Document::Field, QVector<QPair<int, QVariant> > const&) ()
    #12 0x08445583 in LocalDataStore::documentModified(Document*, Document::Field, QVariant const&) ()
    #13 0x0849ecf3 in RemoteDataStore::documentModified(Document*, Document::Field, QVariant const&) ()
    #14 0x083d822e in Document::notifyModified(Document::Field, QVariant const&) ()
    #15 0x083db225 in void Document::setFieldValue<QVariant>(Document::Field, QVariant const&) ()
    #16 0x083deaca in Document::setFiles(QList<DocumentFile> const&) ()
    #17 0x0849db94 in RemoteDataStore::fileDownloaded(RemoteFile const&) ()
    #18 0x084ebdc0 in RemoteDataStore::qt_metacall(QMetaObject::Call, int, void**) ()
    #19 0xf4d10cfa in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/libQtCore.so.4
    #20 0xf4d20b5f in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
    #21 0x085ed8a5 in RemoteFilesProxy::got(RemoteFile) ()
    #22 0x085d285f in RemoteFilesProxy::processDownloadUrlResult(QString const&, QByteArray const&, QString const&) ()
    #23 0x085ed953 in RemoteFilesProxy::qt_metacall(QMetaObject::Call, int, void**) ()
    #24 0xf4d10cfa in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/libQtCore.so.4
    #25 0xf4d20b5f in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
    #26 0x085eeed1 in RemoteObjectsProxy::downloadUrlResult(QString const&, QByteArray const&, QString const&) const ()
    #27 0x085ef31d in RemoteObjectsProxy::qt_metacall(QMetaObject::Call, int, void**) ()
    #28 0x085ed8df in RemoteFilesProxy::qt_metacall(QMetaObject::Call, int, void**) ()
    #29 0xf4d10cfa in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/libQtCore.so.4
    #30 0xf4d1b436 in QMetaCallEvent::placeMetaCall(QObject*) () from /usr/lib/libQtCore.so.4
    ---Type <return> to continue, or q <return> to quit---
    #31 0xf4d1fa0f in QObject::event(QEvent*) () from /usr/lib/libQtCore.so.4
    #32 0xf521a584 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
    #33 0xf521f0ce in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
    #34 0xf4d0a69b in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
    #35 0xf4d0e295 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQtCore.so.4
    #36 0xf4d0e46d in QCoreApplication::sendPostedEvents(QObject*, int) () from /usr/lib/libQtCore.so.4
    #37 0xf4d37af4 in ?? () from /usr/lib/libQtCore.so.4
    #38 0xf47f1f92 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
    #39 0xf47f2770 in ?? () from /usr/lib/libglib-2.0.so.0
    #40 0xf47f2a24 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
    #41 0xf4d37c6c in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
    #42 0xf52cac75 in ?? () from /usr/lib/libQtGui.so.4
    #43 0xf4d09859 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
    #44 0xf4d09afa in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
    #45 0xf4d0e52f in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
    #46 0xf5218407 in QApplication::exec() () from /usr/lib/libQtGui.so.4
    #47 0x081e4c0c in main ()

  • Robert KnightRobert Knight commented  ·   ·  Flag as inappropriate

    Hello,

    The above message is a warning, it is not the error that caused the program to crash.

    If you know how to get a backtrace from the program when it crashes that would be very helpful. This can be done by starting the program, then start gdb and enter:

    > attach <Mendeley process ID>

    < Do something that causes the program to crash>

    > bt

    gdb will then print a backtrace of the crash.

Feedback and Knowledge Base