Bug 271808 - akonadiserver crashes when copying a folder onto itself in kaddressbook
Summary: akonadiserver crashes when copying a folder onto itself in kaddressbook
Status: RESOLVED FIXED
Alias: None
Product: Akonadi
Classification: Frameworks and Libraries
Component: server (show other bugs)
Version: 4.7
Platform: Unlisted Binaries Linux
: NOR crash
Target Milestone: ---
Assignee: kdepim bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-04-26 21:55 UTC by Christophe Marin
Modified: 2011-04-28 21:55 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments
sql log (11.09 KB, text/plain)
2011-04-27 17:09 UTC, Christophe Marin
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Christophe Marin 2011-04-26 21:55:21 UTC
Using git master.

I found this crash while trying to reproduce bug 271682

Steps:
- Launch kaddressbook,
- Create a subfolder of "Personal Contact"
- RMB, Copy address book folder,
- RMB / paste onto the same directory

The akonadi server coredumps after a few seconds:

Thread 1 (Thread 0x7f3d3cff1700 (LWP 24862)):
#0  0x00007f3d4d9e730d in write () at ../sysdeps/unix/syscall-template.S:82
#1  0x00007f3d49e0d222 in net_real_write () from /usr/lib64/libmysqlclient_r.so.16
#2  0x00007f3d49e0d6eb in net_flush () from /usr/lib64/libmysqlclient_r.so.16
#3  0x00007f3d49e0d8a0 in net_write_command () from /usr/lib64/libmysqlclient_r.so.16
#4  0x00007f3d49e0a514 in cli_advanced_command () from /usr/lib64/libmysqlclient_r.so.16
#5  0x00007f3d49ddc795 in execute () from /usr/lib64/libmysqlclient_r.so.16
---Type <return> to continue, or q <return> to quit---
#6  0x00007f3d49ddd007 in cli_stmt_execute () from /usr/lib64/libmysqlclient_r.so.16
#7  0x00007f3d49dde11d in mysql_stmt_execute () from /usr/lib64/libmysqlclient_r.so.16
#8  0x00007f3d4a1483d5 in QMYSQLResult::exec() () from /usr/lib64/qt4/plugins/sqldrivers/libqsqlmysql.so
#9  0x00007f3d4d47a8d6 in QSqlQuery::exec (this=0x7f3d3c7f2bd8) at kernel/qsqlquery.cpp:943
#10 0x000000000052c43c in Akonadi::QueryBuilder::exec (this=0x7f3d3c7f2bc0) at /kde/src/akonadi/server/src/storage/querybuilder.cpp:284
#11 0x00000000004d8b58 in Akonadi::Collection::insert (this=0x7f3d3c7f2fb0, insertId=0x0) at /kde/build/akonadi/server/entities.cpp:2301
#12 0x00000000004fdf1a in Akonadi::DataStore::appendCollection (this=0x8d0d00, collection=...) at /kde/src/akonadi/server/src/storage/datastore.cpp:250
#13 0x00000000004a9469 in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:44
#14 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#15 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#16 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#17 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#18 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#19 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#20 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#21 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#22 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#23 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#24 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#25 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#26 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#27 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#28 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#29 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#30 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
 
[...]
 
#20148 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#20149 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#20150 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#20151 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#20152 0x00000000004a97bd in Akonadi::ColCopy::copyCollection (this=0x8caf60, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
#20153 0x00000000004a9c62 in Akonadi::ColCopy::parseStream (this=0x8caf60) at /kde/src/akonadi/server/src/handler/colcopy.cpp:96
#20154 0x000000000049cbb1 in Akonadi::AkonadiConnection::slotNewData (this=0x8c7bb0) at /kde/src/akonadi/server/src/akonadiconnection.cpp:139
#20155 0x000000000049db88 in Akonadi::AkonadiConnection::qt_metacall (this=0x8c7bb0, _c=QMetaObject::InvokeMetaMethod, _id=1, _a=0x7f3d3cff0960)
    at /kde/build/akonadi/server/akonadiconnection.moc:79
#20156 0x00007f3d4dd6da5f in QMetaObject::activate (sender=0x8c7920, m=<optimized out>, local_signal_index=<optimized out>, argv=0x0) at kernel/qobject.cpp:3278
#20157 0x00007f3d4ddb4d98 in QIODevice::qt_metacall (this=0x8c7920, _c=QMetaObject::InvokeMetaMethod, _id=<optimized out>, _a=0x7f3d3cff0a80) at .moc/release-shared/moc_qiodevice.cpp:77
#20158 0x00007f3d4d764ca0 in QLocalSocket::qt_metacall (this=0x8c7920, _c=QMetaObject::InvokeMetaMethod, _id=<optimized out>, _a=0x7f3d3cff0a80)
    at .moc/release-shared/moc_qlocalsocket.cpp:81
#20159 0x00007f3d4dd6da5f in QMetaObject::activate (sender=0x8c9a60, m=<optimized out>, local_signal_index=<optimized out>, argv=0x0) at kernel/qobject.cpp:3278
#20160 0x00007f3d4d7606df in QAbstractSocketPrivate::canReadNotification (this=0x8ca910) at socket/qabstractsocket.cpp:639
#20161 0x00007f3d4d74e2e1 in QReadNotifier::event (this=<optimized out>, e=<optimized out>) at socket/qnativesocketengine.cpp:1103
#20162 0x00007f3d4dd5947c in QCoreApplication::notifyInternal (this=0x7fff2fbd17e0, receiver=0x8cafd0, event=0x7f3d3cff0b50) at kernel/qcoreapplication.cpp:731
#20163 0x00007f3d4dd854db in sendEvent (event=0x7f3d3cff0b50, receiver=<optimized out>) at kernel/qcoreapplication.h:215
#20164 QEventDispatcherUNIX::activateSocketNotifiers (this=<optimized out>) at kernel/qeventdispatcher_unix.cpp:892
#20165 0x00007f3d4dd863d6 in QEventDispatcherUNIXPrivate::doSelect (this=<optimized out>, flags=Cannot access memory at address 0x7f3d00000000
) at kernel/qeventdispatcher_unix.cpp:305
#20166 0x00007f3d4dd874ef in QEventDispatcherUNIX::processEvents (this=0x8c7fa0, flags=...) at kernel/qeventdispatcher_unix.cpp:934
#20167 0x00007f3d4dd588d2 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149
#20168 0x00007f3d4dd58ae5 in QEventLoop::exec (this=0x7f3d3cff0dd0, flags=...) at kernel/qeventloop.cpp:201
#20169 0x00007f3d4dc6d7a4 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:492
#20170 0x000000000049c760 in Akonadi::AkonadiConnection::run (this=0x8c7bb0) at /kde/src/akonadi/server/src/akonadiconnection.cpp:104
#20171 0x00007f3d4dc70095 in QThreadPrivate::start (arg=0x8c7bb0) at thread/qthread_unix.cpp:320
#20172 0x00007f3d4d9dfa3f in start_thread (arg=0x7f3d3cff1700) at pthread_create.c:297
#20173 0x00007f3d4c01567d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#20174 0x0000000000000000 in ?? ()

--
with a break point on colcopy.cpp:62 :

(gdb) bt full
#0  Akonadi::ColCopy::copyCollection (this=0x7f0dbc023b30, source=..., target=...) at /kde/src/akonadi/server/src/handler/colcopy.cpp:62
        child = @0x7f0dbc024c10
        _container_ = {c = QVector<Akonadi::Collection> = {[0] = <error reading variable: Cannot access memory at address 0xcd>}, brk = 0, i = {i = 0x7f0dbc024c10}, e = {i = 0x7f0dbc024c20}}
        col = {<Akonadi::Entity> = {m_id = 193}, d = {d = 0x7f0dbc024690}}
        db = 0x8fa720
#1  0x00000000004a9c62 in Akonadi::ColCopy::parseStream (this=0x7f0dbc023b30) at /kde/src/akonadi/server/src/handler/colcopy.cpp:96
        tmp = "176" = {[0] = 49 '1', [1] = 55 '7', [2] = 54 '6'}
        store = 0x8fa720
        source = {<Akonadi::Entity> = {m_id = 176}, d = {d = 0x88b2f0}}
        target = {<Akonadi::Entity> = {m_id = 176}, d = {d = 0x88b2f0}}
        retriever = {mItemSet = {d = {d = 0x7f0dbc022b70}}, mCollection = {<Akonadi::Entity> = {m_id = 176}, d = {d = 0x88b2f0}}, mScope = {mScope = Akonadi::Scope::Invalid, mUidSet = {d = {d = 
    0x7f0dbc0251e0}}, mRidSet = empty QStringList<QString>, mRidChain = empty QStringList<QString>}, mConnection = 0x8dbcc0, mParts = QStringList<QString> = {[0] = "PLD:RFC822"}, mFullPayload = 
    true, mRecursive = true}
        transaction = {mDb = 0x8fa720, mGlobal = 48, mCommitted = false}
#2  0x000000000049cbb1 in Akonadi::AkonadiConnection::slotNewData (this=0x8dbcc0) at /kde/src/akonadi/server/src/akonadiconnection.cpp:139
        tag = "8" = {[0] = 56 '8'}
        command = "COLCOPY" = {[0] = 67 'C', [1] = 79 'O', [2] = 76 'L', [3] = 67 'C', [4] = 79 'O', [5] = 80 'P', [6] = 89 'Y'}
        __PRETTY_FUNCTION__ = "void Akonadi::AkonadiConnection::slotNewData()"
Comment 1 Christophe Marin 2011-04-27 17:09:10 UTC
Created attachment 59368 [details]
sql log

The querybuilder output after uncommenting the two qDebug
Comment 2 Sergio Martins 2011-04-28 21:55:35 UTC
Git commit 826b4e9dc9dc6710d0c63c3da20509b390333ed6 by Sergio Martins.
Committed on 28/04/2011 at 23:04.
Pushed by smartins into branch '1.5'.

Don't crash when copying a folder into itself.

BUG: 271808

M  +6    -0    server/src/handler/colcopy.cpp     

http://commits.kde.org/akonadi/826b4e9dc9dc6710d0c63c3da20509b390333ed6