Summary: | Contact List crashed after I merged 2 roster items twice | ||
---|---|---|---|
Product: | [Unmaintained] telepathy | Reporter: | Dennis Schridde <heri+kde> |
Component: | contactlist | Assignee: | Telepathy Bugs <kde-telepathy-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | heri+kde, kde, leonh, mklapetek |
Priority: | NOR | Keywords: | drkonqi |
Version: | 0.6.80 | ||
Target Milestone: | Future | ||
Platform: | Gentoo Packages | ||
OS: | Linux | ||
Latest Commit: | http://commits.kde.org/libkpeople/946580dacb950f53cb3d3386445992bcdb17307e | Version Fixed In: | |
Sentry Crash Report: | |||
Attachments: |
New crash information added by DrKonqi
New crash information added by DrKonqi |
Description
Dennis Schridde
2013-10-13 17:30:37 UTC
*** Bug 325375 has been marked as a duplicate of this bug. *** Can anyone reliably reproduce this? #26 0x00000036ad827039 in KTp::ContactsModel::~ContactsModel() () from /usr/lib64/libktpmodelsprivate.so.6 doesn't seem like it has anything to do with merging contacts, but more like the application is exiting. Created attachment 82841 [details]
New crash information added by DrKonqi
ktp-contactlist (0.6.80) on KDE Platform 4.11.2 using Qt 4.8.5
- What I was doing when the application crashed:
Reliably reproduced:
1) Select two roster items
2) Quickly click the green + merge button several times in a row
3) Close Contact List
4) Observe the segfault
-- Backtrace (Reduced):
#6 QStandardItemPrivate::setModel (this=<optimized out>, mod=mod@entry=0x0) at itemviews/qstandarditemmodel.cpp:302
#7 0x00000032d3f5d464 in QStandardItemPrivate::~QStandardItemPrivate (this=0x1f9a4c0, __in_chrg=<optimized out>) at itemviews/qstandarditemmodel.cpp:96
#8 0x00000032d3f5d5a9 in QStandardItemPrivate::~QStandardItemPrivate (this=0x1f9a4c0, __in_chrg=<optimized out>) at itemviews/qstandarditemmodel.cpp:102
#9 0x00000032d3f5a5c1 in cleanup (pointer=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qscopedpointer.h:62
#10 ~QScopedPointer (this=0x1f8ce88, __in_chrg=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qscopedpointer.h:100
Aha. I understand, I can reproduce this now too. Thanks. So we have a lovely race condition inside PersonsModel::createPersonFromUris(const QList<QUrl> &uris) we should probably a make a queue of jobs and process them in turn - rather than all at once which is where it gets screwed up. Or the slightly bodgier approach is to block the button from being enabled whilst a job is happening. Martin, thoughts? I'd go for disabling the button, but that depends on how fast the operation actually is. If it's fast enough, disabling it is imho ok as it makes no sense to try and merge the same thing plus it takes a bit of time to select another contacts, where in the meantime the previous job could be finished already. It also gives clear indication of "working". Queuing would require some detection of already running identical jobs/queries and not running it again, even if for performance reasons. Maybe. Git commit fd8207f0d8bdbab31c4908d31dfe57d7cf95a152 by David Edmundson. Committed on 22/10/2013 at 17:31. Pushed by davidedmundson into branch 'master'. Make merge person job syncronous REVIEW: 113407 M +13 -0 src/personsmodel.cpp http://commits.kde.org/libkpeople/fd8207f0d8bdbab31c4908d31dfe57d7cf95a152 Git commit 0d6f4c57a1c0a21c52540cf60a9f170f3db91d11 by David Edmundson. Committed on 22/10/2013 at 17:31. Pushed by davidedmundson into tag 'v0.1.0'. Make merge person job syncronous REVIEW: 113407 M +13 -0 src/personsmodel.cpp http://commits.kde.org/libkpeople/0d6f4c57a1c0a21c52540cf60a9f170f3db91d11 Git commit 946580dacb950f53cb3d3386445992bcdb17307e by David Edmundson. Committed on 22/10/2013 at 17:31. Pushed by davidedmundson into branch 'libkpeople-0.1'. Make merge person job syncronous REVIEW: 113407 M +13 -0 src/personsmodel.cpp http://commits.kde.org/libkpeople/946580dacb950f53cb3d3386445992bcdb17307e Created attachment 83220 [details] New crash information added by DrKonqi ktp-contactlist (0.7.0) on KDE Platform 4.11.2 using Qt 4.8.5 - What I was doing when the application crashed: The issue is back in 0.7.0. Due to bug #326851 my contacts were doubled. I tried to resolve that by merging them. Upon close contactlist crashed. - Unusual behavior I noticed: See bug #326851 comment #2. After updating the Nepomuk ontology, all my contacts were doubled. There was one copy with a JID and one where contactlist did not show a JID. My guess is that the ontology update slowly converted the contacts, so they were added back to the contactlist not immediately. Apparently some incomplete and doubled information crept in. -- Backtrace (Reduced): #6 isEmpty (this=0x20) at ../../include/QtCore/../../src/corelib/tools/qvector.h:139 #7 QStandardItemPrivate::setModel (this=0x0, mod=mod@entry=0x0) at itemviews/qstandarditemmodel.cpp:293 #8 0x0000003d8d75d464 in QStandardItemPrivate::~QStandardItemPrivate (this=0x26129b0, __in_chrg=<optimized out>) at itemviews/qstandarditemmodel.cpp:96 #9 0x0000003d8d75d5a9 in QStandardItemPrivate::~QStandardItemPrivate (this=0x26129b0, __in_chrg=<optimized out>) at itemviews/qstandarditemmodel.cpp:102 #10 0x0000003d8d75a5c1 in cleanup (pointer=<optimized out>) at ../../include/QtCore/../../src/corelib/tools/qscopedpointer.h:62 |