Название: QNetworkAccessManager::get() Segmentation fault при загрузке https Отправлено: vbi от Ноябрь 30, 2013, 22:51 При загрузке урла https с помощью QNetworkAccessManager::get() программа вылетает с ошибкой Segmentation fault. Бектрейс показывает какую-то библиотеку SSL. Проблема устраняется после переустановки OpenSSL.
Вопрос: Как перед выполнением QNetworkAccessManager::get() проверить есть ли ошибки SSL или нет? Я подключаю сигнал менеджера sslErrors к слоту, но сигнал не отправляется, а сразу Segmentation fault. Пробовал перед этим создавать QSslSocket и получать sslErrors - возвращает пустой список ошибок. Название: Re: QNetworkAccessManager::get() Segmentation fault при загрузке https Отправлено: Bepec от Ноябрь 30, 2013, 23:34 Скорее всего у вас на компьютере имеется несколько версий библиотек SSL и цепляет не ту при сборке. Более четкие ответы при виде кода только могут изданы быть. Название: Re: QNetworkAccessManager::get() Segmentation fault при загрузке https Отправлено: vbi от Декабрь 01, 2013, 18:54 Вот, написал простейшую программу. При нажатии кнопки грузим сайт с https:
Код: void MainWindow::on_pushButton_clicked() В результате сразу получаем ошибку: (http://f3.s.qip.ru/yDSsD85h.png) Как мне обработать такую ошибку самой программой и вывести пользователю сообщение, что необходимо переустановить OpenSSL? Название: Re: QNetworkAccessManager::get() Segmentation fault при загрузке https Отправлено: Old от Декабрь 01, 2013, 18:58 Как мне обработать такую ошибку самой программой и вывести пользователю сообщение, что необходимо переустановить OpenSSL? Попробовать резольвить указанные функции самому и если их нет, то говорить пользователю.См. QLibrary Название: Re: QNetworkAccessManager::get() Segmentation fault при загрузке https Отправлено: vbi от Декабрь 01, 2013, 19:03 А как мне проверить, можно ли грузить https? какую булевую функцию использовать, которая скажет да или нет? Или только с помощью try?
Название: Re: QNetworkAccessManager::get() Segmentation fault при загрузке https Отправлено: Bepec от Декабрь 01, 2013, 19:07 красавец. А в каком файле у вас происходит эта фиготень? А то у вас окошко с ошибкой очень информативно закрыло эту информацию :)
Название: Re: QNetworkAccessManager::get() Segmentation fault при загрузке https Отправлено: vbi от Декабрь 01, 2013, 19:31 ssleay32.dll
Название: Re: QNetworkAccessManager::get() Segmentation fault при загрузке https Отправлено: Alex Custov от Декабрь 01, 2013, 22:19 А как мне проверить, можно ли грузить https? какую булевую функцию использовать, которая скажет да или нет? Или только с помощью try? Если весь код проекта написан правильно, то у тебя проблема с твоими SSL библиотеками. try тут не поможет, потому что SIGSEGV - это не исключение. Проверить наличие SSL можно через QSslSocket::supportsSsl(), но если есть проблема с библиотеками, то упасть может и в этом методе. P.S. И прикрепи сюда проект целиком. Название: Re: QNetworkAccessManager::get() Segmentation fault при загрузке https Отправлено: Пантер от Декабрь 01, 2013, 22:46 Таскай с собой нужную либу и все должно быть нормально.
Название: Re: QNetworkAccessManager::get() Segmentation fault при загрузке https Отправлено: vbi от Декабрь 01, 2013, 23:07 QSslSocket::supportsSsl() возвращает True
Знать бы ее, ту либу Выложил: https://drive.google.com/folderview?id=0B-vsGwbR_oY8NFVRUmpWLVZST2s&usp=sharing (https://drive.google.com/folderview?id=0B-vsGwbR_oY8NFVRUmpWLVZST2s&usp=sharing) Название: Re: QNetworkAccessManager::get() Segmentation fault при загрузке https Отправлено: vbi от Декабрь 01, 2013, 23:09 Вот при запуске, прога ж выводит как-то сообщения:
Код: QSslSocket: cannot resolve OPENSSL_add_all_algorithms_noconf Название: Re: QNetworkAccessManager::get() Segmentation fault при загрузке https Отправлено: Alex Custov от Декабрь 01, 2013, 23:13 Название: Re: QNetworkAccessManager::get() Segmentation fault при загрузке https Отправлено: Majestio от Декабрь 01, 2013, 23:28 Таскай с собой нужную либу и все должно быть нормально. Более того - это нужно делать обязательно! Вариант, что на целевом компе эта либа есть, и она нужной сборки - мизерный. Для своего "комплекта" я собрал (http://majestio.tk/viewtopic.php?id=10) и включил в состав своих библиотек, которые таскаю с построенными приложениями. Название: Re: QNetworkAccessManager::get() Segmentation fault при загрузке https Отправлено: vbi от Декабрь 01, 2013, 23:33 Скачал последнюю версию OpenSSL, кинул библиотеки ssleay32.dll и libeay32.dll в папку с прогой - заработало, ошибки больше нет!
Спасибо Majestio, Alex Custov и Пантер! Наверно это будет самое лучшее решение - не выводить сообщение пользователю, а просто решить проблему)) |