Version: 0.8.1 (using KDE 3.2.2, (testing/unstable)) Compiler: gcc version 3.3.3 (Debian 20040401) OS: Linux (i686) release 2.4.24-1-k7 After several crashes, I managed to see a pattern... Please do the following: - Start Kopete, connect to IRC server - Wait for someone/some bot to send you something via IRC (not via IRC channel); wait until you should have received several lines of text. - See how the yellow baloon pops up because of this. Click "Ignore". - See Kopete crash. My guess: IRC conversations are not correctly ignored, and/or there is some buffer problems while destroying the ignored IRC text. If you can't reproduce this, try with libres.irc-hispano.org . The bots there will annoy you with advertising, and ignoring them should crash Kopete (it works for me (tm)) Sorry, I can provide no backtrace (compiled w/o debugging symnbols) This is with Kopete 3.2.1. I'll try with Kopete CVS-20440425 in a few days.
Sound to me to be a dupe. Anyway can you provide a stacktrace with CVS current, as I'm not able to reproduce it (because of local changes making me unable to compile). This could help Jason to find the reason. I'm not sure this one is IRC specific. Once I tried to trace a similar bug(maybe the same) and I came to the conclusion that the balloon was handling the KMC wrongly. Michel -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAqm7wB8uJ/dbhkrgRAiYSAKCbLTlETez4RD8YeXvJGGRtb6SBLQCfZzPa SxGJarGYLfoKTmQ0NSIISnE= =C0p7 -----END PGP SIGNATURE-----
I can reproduce here using current HEAD, and it is an IRC bug. I think the contact is not being cleared from the contact manager.
CVS commit by brunes: When a user is deleted, force cache removal. CCMAIL:81823-done@bugs.kde.org M +12 -10 irccontactmanager.cpp 1.28 M +2 -2 irccontactmanager.h 1.12 --- kdenetwork/kopete/protocols/irc/irccontactmanager.cpp #1.27:1.28 @@ -129,6 +129,6 @@ void IRCContactManager::slotNewPrivActio void IRCContactManager::unregister(KopeteContact *contact) { - unregisterChannel(contact); - unregisterUser(contact); + unregisterChannel(contact, true); + unregisterUser(contact, true); } @@ -148,5 +148,5 @@ IRCChannelContact *IRCContactManager::fi m_channels.insert( name, channel ); QObject::connect(channel, SIGNAL(contactDestroyed(KopeteContact *)), - this, SLOT(unregisterChannel(KopeteContact *))); + this, SLOT(unregister(KopeteContact *))); } @@ -159,10 +159,11 @@ IRCChannelContact *IRCContactManager::ex } -void IRCContactManager::unregisterChannel(KopeteContact *contact) +void IRCContactManager::unregisterChannel(KopeteContact *contact, bool force ) { IRCChannelContact *channel = (IRCChannelContact*)contact; - if( channel!=0 && + if( force || ( + channel!=0 && !channel->isChatting() && - channel->metaContact()->isTemporary() ) + channel->metaContact()->isTemporary() ) ) { m_channels.remove( channel->nickName() ); @@ -185,5 +186,5 @@ IRCUserContact *IRCContactManager::findU m_users.insert( name, user ); QObject::connect(user, SIGNAL(contactDestroyed(KopeteContact *)), - this, SLOT(unregisterUser(KopeteContact *))); + this, SLOT(unregister(KopeteContact *))); } @@ -225,11 +226,12 @@ IRCContact *IRCContactManager::existCont } -void IRCContactManager::unregisterUser(KopeteContact *contact) +void IRCContactManager::unregisterUser(KopeteContact *contact, bool force ) { IRCUserContact *user = (IRCUserContact *)contact; - if( user!=0 && + if( force || ( + user!=0 && user!=mySelf() && !user->isChatting() && - user->metaContact()->isTemporary() ) + user->metaContact()->isTemporary() ) ) { kdDebug(14120) << k_funcinfo << user->nickName() << endl; --- kdenetwork/kopete/protocols/irc/irccontactmanager.h #1.11:1.12 @@ -68,6 +68,6 @@ class IRCContactManager public slots: void unregister(KopeteContact *contact); - void unregisterUser(KopeteContact *contact); - void unregisterChannel(KopeteContact *contact); + void unregisterUser(KopeteContact *contact, bool force = false ); + void unregisterChannel(KopeteContact *contact, bool force = false ); void addToNotifyList(const QString &nick);
Please re-open this bug. I am still getting this with Kopete from CVS. Just wanted to file a new bugreport about it until I saw that this has been reported already (and closed). I am stuck in the same issue and when I get the yellow bubble and press ignore Kopete still crashes.
Please attach a backtrace, it helps a lot solving it.
Should be fixed in cvs HEAD now. Please make further testing, and close the bug if all is ok.
fixed by this commit: Avoid to remove/destroy protocol managed temporary metacontact while attempting to \ remove them of the contactlist. Should solve bugs 81823 and 86358. M +13 -7 kopetecontactlist.cpp 1.132 --- kdenetwork/kopete/libkopete/kopetecontactlist.cpp #1.131:1.132 @@ -853,7 +853,7 @@ QStringList KopeteContactList::contactFi for ( ; jt.current(); ++jt ) { - kdDebug(14010) << "1" << \ jt.current()->protocol()->pluginId() << "\n"; + kdDebug(14010) \ << "1" << jt.current()->protocol()->pluginId() << endl; if( \ jt.current()->canAcceptFiles() ) { - kdDebug(14010) << \ jt.current()->protocol()->pluginId() << "\n"; + \ kdDebug(14010) << jt.current()->protocol()->pluginId() << endl; protocols.append ( \ jt.current()->protocol()->pluginId() ); } @@ -872,4 +872,10 @@ KopeteGroupList KopeteContactList::group void KopeteContactList::removeMetaContact(KopeteMetaContact *m) { + if ( !d->contacts.contains(m) ) + { + kdDebug(14010) << k_funcinfo << "Trying to remove a not listed \ MetaContact." << endl; + return; + } + if ( d->selectedMetaContacts.contains( m ) ) {
Created an attachment (id=11733) [details] Kopete Crashes on Clicking Ignore Button - Private Message from Robot Upon IRC Connection Looks like it is still happening in the this release with sarge packages. KDE Release 3.3.2 Kopete 0.9.2 gcc version 3.3.6 (Debian 1:3.3.6-5)
You need to log in before you can comment on or make changes to this bug.