Название: Критический Баг QTcpSocket bind, можно ли обойти ? Отправлено: qate от Декабрь 22, 2015, 12:16 Простой код:
Код: QTcpSocket* s = new QTcpSocket(this); Есть ли мысли как обойти ? Название: Re: Критический Баг QTcpSocket bind, можно ли обойти ? Отправлено: navrocky от Декабрь 22, 2015, 19:03 Минимальный бы примерчик-проект не помешал. А то лень самому создавать, чтобы поглядеть что там стряслось ;D
Название: Re: Критический Баг QTcpSocket bind, можно ли обойти ? Отправлено: torwig от Декабрь 22, 2015, 22:46 1. Какая версия Qt/ОС или на всех версиях/ОС подобное наблюдается?
2. Функцией bind() вы на какой-то интерфейс биндите свой клиентский сокет? 3. ReadWrite установлен по умолчанию, можете его не указывать явно. 4. Сигнал error() ипускает сокет? 5. Пробовали следить за сменой состояния сокета, привязываясь к сигналу stateChanged(QAbstractSocket::SocketState socketState)? Это чтобы видно было, например, что состояние Connected ,а потом резко Unconnected и "зависло" все. Расскажите, как Вы определили, что удаленный хост порвал соединение? Сигнал error соотвествущий пришел или Wireshark использовали? Название: Re: Критический Баг QTcpSocket bind, можно ли обойти ? Отправлено: Bepec от Декабрь 22, 2015, 22:53 + ко всем предыдущим ораторам.
PS вы указали код только клиента, покажите код сервера и вообще сделайте проектик с проблемой. PPS ниразу не попадал в такую ситуацию, даже с резким выдёргиванием сетевого шнура. Были такие испытания :D Название: Re: Критический Баг QTcpSocket bind, можно ли обойти ? Отправлено: qate от Декабрь 23, 2015, 08:39 создал багрепорт https://bugreports.qt.io/browse/QTBUG-50124
собственно сама проблема в коде в файле QIODevicePrivateLinearBuffer::makeSpace: while (newCapacity < required) newCapacity *= 2; где newCapacity равно 0 ) Название: Re: Критический Баг QTcpSocket bind, можно ли обойти ? Отправлено: Fat-Zer от Декабрь 23, 2015, 12:19 ради интереса, а в силу какой чёрной магии оно нулём оказалась? и, как я понимаю, QIODEVICE_BUFFERSIZE тоже...
Название: Re: Критический Баг QTcpSocket bind, можно ли обойти ? Отправлено: qate от Декабрь 23, 2015, 12:45 ради интереса, а в силу какой чёрной магии оно нулём оказалась? и, как я понимаю, QIODEVICE_BUFFERSIZE тоже... проблемы начались ранее в QAbstractSocketPrivate::readFromSocket, там есть вызов buffer.reserve(bytesToRead) со значением bytesToRead == -1 смысл в том, что данных вообще нет в канале т.к. на SYN сразу был получен отлуп, а был вызван canReadNotification (видимо решил дочитать остатки) как я это понял Название: Re: Критический Баг QTcpSocket bind, можно ли обойти ? Отправлено: qate от Декабрь 25, 2015, 09:19 Поправили
|