[Kde-pim] Review Request 113108: Call KTcpSocket::abort instead of disconnectFromHost to avoid infinite loop.

Christian Mollekopf chrigi_1 at fastmail.fm
Mon Oct 7 15:30:11 BST 2013



> On Oct. 7, 2013, 2:13 p.m., Dan Vrátil wrote:
> > Unfortunately this does not seem to fix the problem for me. After a while, I get an endless loop of KIMAP::SessionThread::reconnect: connectToHostEncrypted "mail.server.com" 993
> >

interesting... I assume with a different backtrace?

#7408 0x0000003b784b99ee in ?? () from /usr/lib64/libQtNetwork.so.4
#7409 0x0000003b784b65fc in QSslSocket::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib64/libQtNetwork.so.4
#7410 0x0000003b7255faf6 in QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const
    () from /usr/lib64/libQtCore.so.4
#7411 0x0000003b725601a6 in QMetaObject::invokeMethod(QObject*, char const*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGeneri---Type <return> to continue, or q <return> to quit---
cArgument) () from /usr/lib64/libQtCore.so.4
#7412 0x0000003b7849b6e4 in QAbstractSocket::disconnectFromHost() () from /usr/lib64/libQtNetwork.so.4
#7413 0x00007ffff74ab116 in KTcpSocket::disconnectFromHost() () from /usr/local/lib/libcalendaring-kdecore.so.0
#7414 0x00007ffff6a3a033 in KIMAP::SessionThread::socketError(KTcpSocket::Error) () from /usr/local/lib/libcalendaring-kimap.so.0
#7415 0x00007ffff6a3aaa5 in KIMAP::SessionThread::qt_metacall(QMetaObject::Call, int, void**) () from /usr/local/lib/libcalendaring-kimap.so.0
#7416 0x0000003b7256a7af in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/libQtCore.so.4
#7417 0x00007ffff74adc16 in KTcpSocket::error(KTcpSocket::Error) () from /usr/local/lib/libcalendaring-kdecore.so.0
#7418 0x00007ffff74ae547 in KTcpSocketPrivate::reemitSocketError(QAbstractSocket::SocketError) ()
   from /usr/local/lib/libcalendaring-kdecore.so.0
#7419 0x00007ffff74ada9f in KTcpSocket::qt_metacall(QMetaObject::Call, int, void**) () from /usr/local/lib/libcalendaring-kdecore.so.0
#7420 0x0000003b7256a7af in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/libQtCore.so.4
#7421 0x0000003b7849b331 in QAbstractSocket::error(QAbstractSocket::SocketError) () from /usr/lib64/libQtNetwork.so.4
#7422 0x0000003b784bea90 in ?? () from /usr/lib64/libQtNetwork.so.4
#7423 0x0000003b784b99ee in ?? () from /usr/lib64/libQtNetwork.so.4
#7424 0x0000003b784b65fc in QSslSocket::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib64/libQtNetwork.so.4
#7425 0x0000003b7255faf6 in QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const
    () from /usr/lib64/libQtCore.so.4
#7426 0x0000003b725601a6 in QMetaObject::invokeMethod(QObject*, char const*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) () from /usr/lib64/libQtCore.so.4
#7427 0x0000003b7849b6e4 in QAbstractSocket::disconnectFromHost() () from /usr/lib64/libQtNetwork.so.4
#7428 0x00007ffff74ab116 in KTcpSocket::disconnectFromHost() () from /usr/local/lib/libcalendaring-kdecore.so.0

I think this is a separate issue you're having and that we should commit this patch in any case.
disconnectFromHost tries to send any outstanding data which doesn't make sense in the error case. So calling abort instead is anyways the right thing to do IMO.


- Christian


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/113108/#review41348
-----------------------------------------------------------


On Oct. 4, 2013, 7:58 p.m., Christian Mollekopf wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/113108/
> -----------------------------------------------------------
> 
> (Updated Oct. 4, 2013, 7:58 p.m.)
> 
> 
> Review request for KDEPIM-Libraries.
> 
> 
> Repository: kdepimlibs
> 
> 
> Description
> -------
> 
> In some setups calling disconnectFromHost emits an error again, resulting in an infinite loop. I ran into this problem on Centos 6 with Qt 4.6.
> 
> See also "Help solving an IMAP SSL bug" on kcd.
> 
> 
> Diffs
> -----
> 
>   kimap/sessionthread.cpp c7af134 
> 
> Diff: http://git.reviewboard.kde.org/r/113108/diff/
> 
> 
> Testing
> -------
> 
> Tests passe.
> Problem (loop) on Qt 4.6 resolved (error is emitted and ssl fallback works).
> Fallback also still works with Qt 4.8.
> 
> 
> Thanks,
> 
> Christian Mollekopf
> 
>

_______________________________________________
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