[Kde-pim] Proposal for a solution for bug 77862

Guy Maurel guy-kde at maurel.de
Fri May 14 18:17:05 BST 2010


Hi!

Some more information as I wrote: the kio_imap4 cannot be use anymore.

Let us make an experiment.
Restart the kdeinit4, so we can catch the kio_imap4-slave.
Start the kmail and get some mail from a imap-server.
Attach a debugger to the kio_imap4-slave.
Change the IP-address, may be from 192.168.2.2 to 192.168.3.3
Push the "Check Mail"-button again.
kmail is frozen.

Within the debugger (I use cgdb), type a CTRL-C to get the command-prompt.
a bt-command give us the information we need, such as (little changes for better read):

#0  0x00007fc382ada8b3 in __select_nocancel () from /lib/libc.so.6                                                          
#1  0x00007fc38475b02a in qt_safe_select(int, fd_set*, fd_set*, fd_set*, timeval const*) () from /usr/lib/libQtCore.so.4    
it is at qt/corelib/kernel/qcore_unix.cpp:137                       
#2  0x00007fc3856b995a in ?? () from /usr/lib/libQtNetwork.so.4                                                             
#3  0x00007fc3856a2bd8 in ?? () from /usr/lib/libQtNetwork.so.4                                                             
#4  0x00007fc3856b3d11 in QAbstractSocket::waitForReadyRead(int) () from /usr/lib/libQtNetwork.so.4                         
it is at qt/network/socket/qabstractsocket.cpp:1775                 
#5  0x00007fc3856c72c9 in QSslSocket::waitForReadyRead(int) () from /usr/lib/libQtNetwork.so.4                              
it is at qt/network/ssl/qsslsocket.cpp:1420                         
#6  0x00007fc3865a4fa6 in KTcpSocket::waitForReadyRead (this=0x13dc040, msecs=600000) at src/kdelibs/kdecore/network/ktcpsocket.cpp:462                                                                                    
#7  0x00007fc385b02685 in KIO::TCPSlaveBase::waitForResponse (this=0x13d6930, t=600) at src/kdelibs/kio/kio/tcpslavebase.cpp:937                                                                                           
#8  0x00007fc378bf7593 in IMAP4Protocol::parseReadLine (this=0x13d6930, buffer=..., relay=0) at src/kdepimlibs/kioslave/imap4/imap4.cpp:750

very low within qt, the function  "qt_safe_select" uses the "select" from libc.
short before, one needs a "bind" between the IP-address and a file descriptor.

This is why we have to wait until the timeout as the IP-address has changed. After the timeout,
we have to do something with this... But it is a long time and we already know from the Solid::Notifier
that the IP-address has changed.

This is why I propose to kill the kio_imap4-slave.                                             
-- 
guy
_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/



More information about the kde-pim mailing list