PDA

View Full Version : Strange Qt app crash



indev
26th July 2016, 12:13
I'm writting some kind of web-browser based on QTWebEngine. So I have a crash when trying to run it. Here is my code (you may try to build it):

main.cpp:


#include <QtWidgets>
#include "mainwindow.h"

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

MainWindow * mainWnd = new MainWindow();
mainWnd -> show();

return a.exec();
}

mainwindow.h:


#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMenuBar>
#include <QMenu>
#include <QPushButton>
#include <QLineEdit>
#include <QComboBox>
#include <QLayout>
#include <QHBoxLayout>
#include <qtwebenginewidgetsglobal.h>
#include <QWebEngineView>

class MainWindow : public QWidget
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();

private:
void createMenu();
void createUrlBar();
void createBrowserWindow();

void loadHomepage();
void loadUrl (QUrl);

void applyLayouts();

QMenuBar * menuBar;
QMenu * menuFile, * menuFile2;

QWidget * barWidget;
QPushButton * barNextBut,* barBackBut, * barRefreshBut, * barEnterBut;
QLineEdit * barUrlEdit;
QComboBox * barSelectCB;

QWebEngineView * browserWidget;

QHBoxLayout * barLayout;
QVBoxLayout * mainLayout;

signals:

public slots:
};

#endif // MAINWINDOW_H


mainwindow.cpp:


#include "mainwindow.h"

MainWindow::MainWindow(QWidget * parent)
{

this -> setMinimumSize (1100, 600);

createMenu();
createUrlBar();
createBrowserWindow();

applyLayouts();

loadHomepage();

}

void MainWindow::createMenu()
{

menuBar = new QMenuBar();
menuFile = new QMenu("File");
menuFile2 = new QMenu("File2");
menuFile -> addMenu (menuFile2);
menuBar -> addMenu (menuFile);

}

void MainWindow::createUrlBar()
{

//Контейнер;
barWidget = new QWidget(this);
barWidget -> setContextMenuPolicy(Qt::NoContextMenu);
barWidget -> setMaximumHeight(30);

//Кнопки;
barNextBut = new QPushButton(">");
barBackBut = new QPushButton("<");
barRefreshBut = new QPushButton("R");
barEnterBut = new QPushButton("->");
barNextBut -> setMaximumSize(21, 21);
barBackBut -> setMaximumSize(21, 21);
barRefreshBut -> setMaximumSize(21, 21);
barEnterBut -> setMaximumSize(21, 21);

barUrlEdit = new QLineEdit(barWidget);
barUrlEdit -> setMinimumSize(256, 21);
barUrlEdit -> setMaximumHeight(21);

barSelectCB = new QComboBox(barWidget);
barSelectCB -> setMinimumSize(256, 21);
barSelectCB -> setMaximumSize(256, 21);

}

void MainWindow::createBrowserWindow()
{

browserWidget = new QWebEngineView(this);

}

void MainWindow::loadHomepage()
{

QUrl * url = new QUrl("http://google.ru");
loadUrl(*url);
delete(url);

}

void MainWindow::loadUrl (QUrl url)
{

browserWidget -> load(url);

}

void MainWindow::applyLayouts ()
{

barLayout = new QHBoxLayout();
barLayout -> setContentsMargins(0,0,0,0);
barLayout -> addWidget(barSelectCB);
barLayout -> addWidget(barBackBut);
barLayout -> addWidget(barNextBut);
barLayout -> addWidget(barUrlEdit);
barLayout -> addWidget(barRefreshBut);
barLayout -> addWidget(barEnterBut);
barWidget -> setLayout(barLayout);

mainLayout = new QVBoxLayout();
mainLayout -> setDirection(QBoxLayout::TopToBottom);
mainLayout -> setMenuBar(menuBar);
mainLayout -> addWidget (barWidget);
mainLayout -> addWidget (browserWidget);
setLayout(mainLayout);

}

And project.pro file:


QT += widgets
QT += webenginewidgets

HEADERS = mainwindow.h
SOURCES = main.cpp \
mainwindow.cpp


It builds without errors and warnings, but works pretty bad. Sometimes it crashes at QApplication.exec(), sometimes in other places and always crashes after exit. Can you try to build my code and say me, what i'm doing wrong? I also have a backtrace (dont know how to use spoilers here, sorry):


[0726/170125:FATAL:resource_scheduler.cc(1051)] Check failed: client_map_.empty().
Backtrace:
GetHandleVerifier [0x000000018277DF66+28758]
QtWebEngineCore::URLRequestCustomJobDelegate::qt_s tatic_metacall [0x00000001826DEA59+2499705]
QtWebEngineCore::JavaScriptDialogController::qt_st atic_metacall [0x0000000180BFA4CE+10049518]
QtWebEngineCore::JavaScriptDialogController::qt_st atic_metacall [0x000000018099B79C+7563964]
QtWebEngineCore::JavaScriptDialogController::qt_st atic_metacall [0x000000018099B29E+7562686]
QtWebEngineCore::JavaScriptDialogController::qt_st atic_metacall [0x00000001809B93D7+7685879]
QtWebEngineCore::JavaScriptDialogController::qt_st atic_metacall [0x00000001809B91F5+7685397]
QtWebEngineCore::JavaScriptDialogController::qt_st atic_metacall [0x00000001809A77B6+7613142]
QtWebEngineCore::JavaScriptDialogController::qt_st atic_metacall [0x000000018026BB01+28193]
QtWebEngineCore::URLRequestCustomJobDelegate::qt_s tatic_metacall [0x000000018258F67A+1126554]
CertificateErrorController::error [0x00000001814ED607+5469703]
QtWebEngineCore::WebContentsAdapter::d_func [0x000000018021A9BD+100701]
GetHandleVerifier [0x0000000182817AFC+658412]
QtWebEngineCore::URLRequestCustomJobDelegate::qt_s tatic_metacall [0x0000000182719709+2740521]
QtWebEngineCore::URLRequestCustomJobDelegate::qt_s tatic_metacall [0x0000000182717331+2731345]
QtWebEngineCore::URLRequestCustomJobDelegate::qt_s tatic_metacall [0x00000001827179D4+2733044]
GetHandleVerifier [0x000000018281B81C+674060]
GetHandleVerifier [0x000000018281D6D0+681920]
GetHandleVerifier [0x000000018281D625+681749]
QtWebEngineCore::URLRequestCustomJobDelegate::qt_s tatic_metacall [0x0000000182719331+2739537]
QtWebEngineCore::URLRequestCustomJobDelegate::qt_s tatic_metacall [0x000000018273B3FB+2879003]
QtWebEngineCore::URLRequestCustomJobDelegate::qt_s tatic_metacall [0x0000000182719173+2739091]
QtWebEngineCore::URLRequestCustomJobDelegate::qt_s tatic_metacall [0x000000018275EB8D+3024301]
QtWebEngineCore::JavaScriptDialogController::qt_st atic_metacall [0x00000001808F1846+6867814]
QtWebEngineCore::JavaScriptDialogController::qt_st atic_metacall [0x00000001808F2C1C+6872892]
QtWebEngineCore::URLRequestCustomJobDelegate::qt_s tatic_metacall [0x000000018275F9CD+3027949]
QtWebEngineCore::URLRequestCustomJobDelegate::qt_s tatic_metacall [0x0000000182768D45+3065701]
BaseThreadInitThunk [0x0000000076C5652D+13]
RtlUserThreadStart [0x0000000076E8C541+33]

xingyanchao
17th February 2019, 09:27
Try to delete "browserWidget" explicitly while it's not needed.