Bug 106390: knode crashes when trying to retrieve Articles from a specific Server (crash)
Opened:2005-05-27 20:24
Product:knode
Component:general
Version:unspecified
Status:RESOLVED
Platform:FreeBSD Ports
Resolution:FIXED
Reporter:Ralf Folkerts
Assigned to:KNode Developers

Version:           kdepim-3.4.0 (using KDE KDE 3.4.0)
Installed from:    FreeBSD Ports
Compiler:          gcc (GCC) 3.4.2 [FreeBSD] 20040728 CPUTYPE=athlon-xp, CFLAGS= -O -pipe, no CXXFLAGS
OS:                FreeBSD

On my System, knode normally works fine (I'm running a local leafnode-Server; knode never ran into troubles with it); however, whenever I access a certain News-Server knode crashes. I thought that Server might be corrupt (and it may be). To just I installed Thunderbird; this  doesn't run into any Problems with that Server (which does not prove, the Server is not bogus, of course!).

That server is "news.ecomstation.com". I can download a List of Groups w/o any Problems; however, when I subscribed to a Group (I tried the "ecomstation.advocacy") and want to download the Articles knode's Progress-Bar proceeds to 10% very fast and then sticks there. After a while knode crashes.

As by suggestion from FreeBSD-KDEs Michael Nottebrock I compiled the KDEPIM-Package with "WANT_KDE_DEBUG" defined. After that the console displays:

knode: KNApplication::newInstance()
knode: KNArticleWidget::showBlankPage()
knode: KNGroup::readInfo(const QString &confPath) : using alternative user for Interne News
knode: KNFolderManager::setCurrentFolder() : folder changed
kdecore (KAction): WARNING: KAction::plugAccel(): call to deprecated action.
kdecore (KAction): WARNING: KAction::plugAccel(): call to deprecated action.
kdecore (KAction): WARNING: KAction::plugAccel(): call to deprecated action.
kdecore (KAction): WARNING: KAction::plugAccel(): call to deprecated action.
kdecore (KAction): WARNING: KAction::plugAccel(): call to deprecated action.
kdecore (KAction): WARNING: KAction::plugAccel(): call to deprecated action.
kdecore (KAction): WARNING: KAction::plugAccel(): call to deprecated action.
libkdenetwork: loaded the scorefile, creating internal representation
libkdenetwork: inspecting node of type 9 named
libkdenetwork: inspecting node of type 7 named
libkdenetwork: inspecting node of type 1 named Scorefile
libkdenetwork: ready, got 0 rules
libkdenetwork: creating new pgp object
libkdenetwork: Kpgp: gpg found
knode: KNMainWidget::slotCollectionSelected(QListViewItem *i)
knode: KNMainWidget::slotArticleSelected(QListViewItem *i)
knode: KNArticleWidget::showBlankPage()
knode: KNGroupManager::setCurrentGroup() : group changed
knode: KNFolderManager::setCurrentFolder() : folder changed
knode: KNApplication::newInstance() done
knode: KNMainWidget::slotCollectionSelected(QListViewItem *i)
knode: KNMainWidget::slotArticleSelected(QListViewItem *i)
knode: KNArticleWidget::showBlankPage()
knode: KNGroupManager::setCurrentGroup() : group changed
knode: KNMessageFilter: filter loaded "all"
knode: KNArticleFilter::doFilter() : matched 0 articles , merged 0 threads by subject
knode: KNNetAccess::startJobNntp(): job started
knode: KNFolderManager::setCurrentFolder() : folder changed
knode: KNProtocolClient::openConnection(): opening connection
knode: KNProtocolClient::closeConnection(): closing connection
KCrash: Application 'knode' crashing...
QSocketNotifier: invalid socket 15 and type 'Read', disabling...
QSocketNotifier: invalid socket 8 and type 'Read', disabling...
QSocketNotifier: invalid socket 3 and type 'Read', disabling...
knode: Fatal IO error: client killed

Unfortunately I don't have a Backtrace; the CrashManager displays that knode was killed by a Signal 11 (SIGSEGV). The "Backtrace" Window shows:
"Eine korrekte Rückverfolgung ist nicht möglich.
Wahrscheinlich sind die Dateien Ihres Systems in einer Weise erstellt worden, die eine solche Rückverfolgung (Backtrace) nicht erlaubt. Oder der so genannte "Stack Frame" für das Programm wurde durch den Absturz unbrauchbar gemacht."

I hope the error is reproducible; if not and you need more information pls. let me know! Thanks!


------- Additional Comment #1 From Jakob Schröter 2005-05-27 21:33 -------
confirmed for current HEAD

backtrace:

[New Thread 1024 (LWP 6792)]
[New Thread 2049 (LWP 6793)]
[New Thread 1026 (LWP 6794)]
[KCrash handler]
#6  0x400d9611 in KNProtocolClient::waitForWrite() (this=0x829ca18)
    at /src/kde/kdepim/knode/knprotocolclient.cpp:526
#7  0x400d993d in KNProtocolClient::sendStr(QCString const&) (this=0x829ca18,
    str= at 0xbf7ff75c) at /src/kde/kdepim/knode/knprotocolclient.cpp:595
#8  0x400d8a68 in KNProtocolClient::sendCommand(QCString const&, int&) (
    this=0x829ca18, cmd= at 0xfffffe00, rep= at 0xfffffe00)
    at /src/kde/kdepim/knode/knprotocolclient.cpp:255
#9  0x400dc416 in KNNntpClient::sendCommand(QCString const&, int&) (
    this=0xbf7ff75c, cmd= at 0xbf7ff8fc, rep= at 0x829ca18)
    at /src/kde-svn/kdepim/knode/knnntpclient.cpp:670
#10 0x400db18a in KNNntpClient::doFetchNewHeaders() (this=0x829ca18)
    at /src/kde-svn/kdepim/knode/knnntpclient.cpp:418
#11 0x400d9ee6 in KNNntpClient::processJob() (this=0x829ca18)
    at /src/kde-svn/kdepim/knode/knnntpclient.cpp:51
#12 0x400d847f in KNProtocolClient::waitForWork() (this=0x829ca18)
    at /src/kde/kdepim/knode/knprotocolclient.cpp:173
#13 0x400d8133 in KNProtocolClient::run() (this=0xfffffe00)
    at /src/kde/kdepim/knode/knprotocolclient.cpp:65
#14 0x41973c2c in QThreadInstance::start(void*) (_arg=0x829ca9c)
    at kernel/qthread_unix.cpp:119
#15 0x422b2038 in pthread_start_thread () from /lib/libpthread.so.0


------- Additional Comment #2 From Jakob Schröter 2005-05-27 23:45 -------
and that's what happens on the wire:

200 Changi NNTP server ready (posting ok).
MODE READER
200 Hello, you can post.
GROUP ecomstation.advocacy
211 4875 351 5401 ecomstation.advocacy
LIST OVERVIEW.FMT
503 No list of overview format available.
QUIT
205 Closing connection. Goodbye.


------- Additional Comment #3 From Volker Krause 2005-05-28 18:34 -------
SVN commit 419141 by vkrause:

Check the response code after sending LIST OVERVIEW.FMT command. KNode
now works again with servers that don't support this command.

CCBUG: 104422, 106390


 M  +1 -1      knnntpclient.cpp  


--- trunk/KDE/kdepim/knode/knnntpclient.cpp #419140:419141
 at  at  -398,7 +398,7  at  at
   // see RFC 2980 section 2.1.7
   QStrList headerformat;
   cmd = "LIST OVERVIEW.FMT";
-  if (sendCommand( cmd, rep )) {
+  if ( sendCommand( cmd, rep ) && rep == 215 ) {
     QStrList tmp;
     if (getMsg(tmp)) {
       for(QCString s = tmp.first(); s; s = tmp.next()) {


------- Additional Comment #4 From Volker Krause 2005-05-28 18:36 -------
SVN commit 419143 by vkrause:

Backport from trunk for KDE 3.4.2:
Check the response code after sending LIST OVERVIEW.FMT command. KNode
now works again with servers that don't support this command.

BUG: 104422, 106390


 M  +1 -1      knnntpclient.cpp  


--- branches/KDE/3.4/kdepim/knode/knnntpclient.cpp #419142:419143
 at  at  -398,7 +398,7  at  at
   // see RFC 2980 section 2.1.7
   QStrList headerformat;
   cmd = "LIST OVERVIEW.FMT";
-  if (sendCommand( cmd, rep )) {
+  if ( sendCommand( cmd, rep ) && rep == 215 ) {
     QStrList tmp;
     if (getMsg(tmp)) {
       for(QCString s = tmp.first(); s; s = tmp.next()) {


------- Additional Comment #5 From Ralf Folkerts 2005-05-29 20:03 -------
Hi Jakob und Volker, thanks for this super-fast Bugfix! It's really great! _ralf_


Votes: 0    Show votes for this bug    Vote for this bug

Additional Comments:


View Bug Activity   |   Format For Printing


Attachment Type Modified Status Actions
Create a New Attachment (proposed patch, testcase, etc.) View All


Actions: Query | Reports Search:   New Account | Log In