Summary: | kopete issues millions of alerts and eats up all memory | ||
---|---|---|---|
Product: | [Unmaintained] kopete | Reporter: | Leo Savernik <l.savernik> |
Component: | ICQ and AIM Plugins | Assignee: | Kopete Developers <kopete-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | cshobe, jpowers, kdebugs, mattr, mirya, mmodem00, p.dania, smgiles, sven.burmeister |
Priority: | NOR | ||
Version First Reported In: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Leo Savernik
2005-03-16 16:26:01 UTC
On Wednesday 16 March 2005 11:38 am, Leo Savernik wrote: > ------- Additional Comments From l.savernik aon at 2005-03-16 16:38 > ------- I meant related to bug 71975. According to bug 71975, it only happens in some QT 3.3 snapshots. Are you using a 3.3 snapshot? Have you tried upgrading your QT? i don't think leo will be upgrading to qt 4 anytime soon. ;) qt 3.3.4 is the latest available. I'm not really sure what would cause the alerts, especially ones w/o dialog boxes. were you connected before you shut down the internet connection? It would be interesting to know which protocols were connected when you went to bed. As I've mentioned earlier, I'm using Qt 3.3.4, no snapshot (and no versions from the future ;-) ) I did what I've always done, without detriment so far. ICQ was connected. Then I cut the internet connection without explicitly going offline in kopete (because it notices within some time, and'll go offline by itself). If the sudden disconnect from the internet is the actual cause for this behaviour, I wonder why it needed two hours to show side effects (I disconnected at about 23:50). Status update: I recompiled kopete cvs from yesterday (2005-03-16) with full debug information and did the following test: After having configured kopete with account and contact information, I went online, left it running for some hours, then, around midnight, I disconnected the internet link without going offline in kopete explicitly, and went to bed. When returning from work today at about 16:00, the box was frozen and kopete had again hogged 683Mb (!) of memory: 29758 kderun 8 0 683M 252M 60204 S 0.0 50.0 0:06 kopete 29757 kderun 9 0 683M 252M 60204 D 0.0 50.0 125:51 kopete At the time of killing kopete the debug output log had grown over 95Mb (!), mostly containing lines like: QMetaObject::findSignal:ClientStream: Conflict with Stream::readyRead() kopete (oscar - raw protocol): [void KNetworkConnector::done()] kopete (oscar - raw protocol): [void KNetworkByteStream::close()] Closing stream . kopete (oscar - raw protocol): [void KNetworkConnector::connectToServer(const QS tring &)] Initiating connection to login.oscar.aol.com kopete (oscar - raw protocol): [bool KNetworkByteStream::connect(QString, QStrin g)] Connecting to login.oscar.aol.com, service 5190 kopete (oscar - raw protocol): [void KNetworkConnector::done()] kopete (oscar - raw protocol): [void KNetworkByteStream::close()] Closing stream . kopete (oscar - raw protocol): [void KNetworkByteStream::slotError(int)] Socket error 1 kopete (oscar - raw protocol): [void KNetworkConnector::slotError(int)] Error de tected: 1 kopete (oscar - raw protocol): [void ClientStream::cr_error()] kopete (oscar - raw protocol): [void KNetworkConnector::done()] kopete (oscar - raw protocol): [void KNetworkByteStream::close()] Closing stream . kopete (oscar): [void OscarAccount::protocolError(int, int, const QString &)] Re ceived fatal protocol error3, 0 kopete (oscar): [void OscarAccount::disconnect()] accountId='xxxxx4208' libkopete: [void Kopete::Account::slotOnlineStatusChanged(Kopete::Contact *, con st Kopete::OnlineStatus &, const Kopete::OnlineStatus &)] account xxxxx4208 chang ed status. was Connecting, is Offline kopete (oscar/icq): [void ICQAccount::disconnected(Kopete::Account::DisconnectRe ason)] Attempting to set status offline libkopete: [void Kopete::Account::slotOnlineStatusChanged(Kopete::Contact *, con st Kopete::OnlineStatus &, const Kopete::OnlineStatus &)] account xxxxx4208 chang ed status. was Offline, is Offline kopete (oscar/icq): [void ICQAccount::disconnected(Kopete::Account::DisconnectRe ason)] Attempting to set status offline kopete (oscar - raw protocol): [void KNetworkConnector::done()] kopete (oscar - raw protocol): [void KNetworkByteStream::close()] Closing stream . kopete (oscar/icq): [void ICQAccount::connectWithPassword(const QString &)] acco untId='xxxxx4208' libkopete: [void Kopete::Account::slotOnlineStatusChanged(Kopete::Contact *, con st Kopete::OnlineStatus &, const Kopete::OnlineStatus &)] account xxxxx4208 chang ed status. was Offline, is Connecting kopete (oscar/icq): [void ICQAccount::connectWithPassword(const QString &)] Logg ing in as xxxxx4208 kopete (oscar - raw protocol): [KNetworkConnector::KNetworkConnector(QObject * = 0, const char * = 0)] New KNetwork connector. kopete (oscar - raw protocol): [KNetworkByteStream::KNetworkByteStream(QObject * = 0, const char * = 0)] Instantiating new KNetwork byte stream. kopete (oscar - raw protocol): [void KNetworkConnector::setOptHostPort(const QSt ring &, short unsigned int)] Manually specifying host login.oscar.aol.com and po rt 5190 QMetaObject::findSignal:ClientStream: Conflict with Stream::readyRead() kopete (oscar - raw protocol): [void KNetworkConnector::done()] kopete (oscar - raw protocol): [void KNetworkByteStream::close()] Closing stream . So there seems to be a twofold bug in the disconnection routine. First, it seems to busy-wait (125 min of cpu time), second, it seems to have a memory leak there. Given that kopete 3.3 and earlier versions handled unexpected disconnection from the internet gracefully, I consider this behaviour severely buggy that needs fixing soon. I'll leave the monster-log on my disk for a while in case you need more information. *** Bug 102684 has been marked as a duplicate of this bug. *** *** Bug 102844 has been marked as a duplicate of this bug. *** *** Bug 103002 has been marked as a duplicate of this bug. *** CVS commit by mattr: Display only one error when we hit an unknown error that I don't do a good job of handling yet. You get to choose whether or not to reconnect now. BUG: 100064 CCBUG: 101626 M +1 -1 oscaraccount.cpp 1.174 M +3 -27 liboscar/client.cpp 1.13 M +0 -2 liboscar/client.h 1.12 M +5 -5 liboscar/connectionlist.cpp 1.3 --- kdenetwork/kopete/protocols/oscar/oscaraccount.cpp #1.173:1.174 @@ -248,5 +248,5 @@ void OscarAccount:: protocolError( int e if ( psError == 0 ) //zero is a generic error when i don't know what's wrong. :/ { - disconnected( Kopete::Account::ConnectionReset ); + disconnected( Kopete::Account::Manual ); } --- kdenetwork/kopete/protocols/oscar/liboscar/client.cpp #1.12:1.13 @@ -125,32 +125,8 @@ Client::~Client() //delete the connections differently than in deleteConnections() //deleteLater() seems to cause destruction order issues - QValueList<Connection*> connList = d->connections.getConnections(); - QValueList<Connection*>::iterator it = connList.begin(); - d->connections.removeAllConnections(); - while ( it != connList.end() ) - { - Connection* c = *it; - it = connList.remove( it ); - delete c; - } - delete d->ssiManager; delete d; } -void Client::deleteConnections() -{ -// kdDebug( OSCAR_RAW_DEBUG ) << k_funcinfo << "Deleting " << d->connections.count() << " connections" << endl; - QValueList<Connection*> list = d->connections.getConnections(); - QValueList<Connection*>::iterator it = list.begin(); - d->connections.removeAllConnections(); - while ( it != list.end() ) - { - Connection* c = *it; - it = list.remove( it ); - c->deleteLater(); - } -} - void Client::connectToServer( Connection *c, const QString& server, bool auth ) { @@ -184,5 +160,4 @@ void Client::close() d->active = false; // kdDebug( OSCAR_RAW_DEBUG ) << k_funcinfo << "Closing " << d->connections.count() << " connections" << endl; - deleteConnections(); //these are based on a connection. delete them. delete d->errorTask; @@ -207,4 +182,5 @@ void Client::close() // kdDebug(OSCAR_RAW_DEBUG) << k_funcinfo << "Clearing our internal SSI list" << endl; d->ssiManager->clear(); + d->connections.removeAllConnections(); } --- kdenetwork/kopete/protocols/oscar/liboscar/client.h #1.11:1.12 @@ -382,6 +382,4 @@ protected slots: private: - /** Delete the connections */ - void deleteConnections(); /** Initialize some static tasks */ --- kdenetwork/kopete/protocols/oscar/liboscar/connectionlist.cpp #1.2:1.3 @@ -35,7 +35,4 @@ ConnectionList::ConnectionList() ConnectionList::~ConnectionList() { - delete m_bosConnection; - delete m_authConnection; - delete m_iconConnection; } @@ -57,4 +54,7 @@ QValueList<Connection*> ConnectionList:: void ConnectionList::removeAllConnections() { + delete m_authConnection; + delete m_bosConnection; + delete m_iconConnection; m_bosConnection = 0; m_authConnection = 0; *** Bug 103053 has been marked as a duplicate of this bug. *** *** Bug 102439 has been marked as a duplicate of this bug. *** First, thanks for this workaround. Second, does this fix mean I'll get a nasty popup window telling me that kopete lost its internet connection? I don't want that, I *know* that I lost the connection (as I disconnected it intentionally). Can't it simply go offline silently like it did in KDE 3.3 or earlier? right now, you should get a popup, but only one popup. I'll find a way to just make it silently disconnect depending on the possible error message that i get. After upgrading to 3.4.0 I think I'm seeing the same thing. I use my laptop at work where they are blocking ports for aim and icq (but not msn). At home kopete works fine but in the office when I start it I get endless stream of: "QMetaObject::findSignal:ClientStream: Conflict with Stream::readyRead()" in console log and neverending popups: "An unknown error has occurred and the connection has been closed" Which are impossible to get rid of. all the annoying popups should be fixed for KDE 3.4.1. Leo, I've added a separate item to my TODO list to make it silently go offline if detected. If you feel compelled to, you can open a wish list item. :) Am Dienstag, 19. April 2005 00:30 schrieb Matt Rogers: > it silently go offline if detected. If you feel compelled to, you can open > a wish list item. :):) Done :-) Bug 104202. *** Bug 104372 has been marked as a duplicate of this bug. *** *** Bug 104561 has been marked as a duplicate of this bug. *** I don't exactly see how Bug 104561 is a duplicate of this bug. I have seen this issue in older Kopete installs, but not thus far in the 0.10 in kubuntu hoary. Bug 104561 seems to be a different and unrelated issue. *** Bug 103434 has been marked as a duplicate of this bug. *** |