Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. SIGSEGV after adding QFileDialog::getOpenFileName to the program
Forum Updated to NodeBB v4.3 + New Features

SIGSEGV after adding QFileDialog::getOpenFileName to the program

Scheduled Pinned Locked Moved Unsolved General and Desktop
15 Posts 6 Posters 5.6k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • jsulmJ jsulm

    @cdwijs I doubt this line is the reason for the crash especially if it happens several minutes later. You should run your app through debugger. Also what else are you doing in your app?
    Also: is the file open dialog open when your app crashes or already closed?

    C Offline
    C Offline
    cdwijs
    wrote on last edited by
    #4

    @jsulm said in SIGSEGV after adding QFileDialog::getOpenFileName to the program:

    @cdwijs I doubt this line is the reason for the crash especially if it happens several minutes later. You should run your app through debugger. Also what else are you doing in your app?
    Also: is the file open dialog open when your app crashes or already closed?

    I am running the app via the debugger, I have looked at the callstacks of the different threads, but I could not figure out what caused the crash. Does the backtrace provide the same information, or can I copy-and-paste something from the debugger screens thats not in the backtrace?
    I am doing nothing else in my app. It's one form with one button, and one clicked() handler.
    The file open dialog is closed when the crash happens.
    The crash does not happen when I comment the line.

    I will reboot my machine, remove the build folder, and see if that solves the problem.

    Cheers,
    Cedric

    1 Reply Last reply
    0
    • C cdwijs

      Hi All,

      I'm writing a program that does some processing on a file. After I add this line to the application I get segmentation faults. The fault is not immediately after clicking the button, but it comes after a few minutes. How can I solve this?

      fileName = QFileDialog::getOpenFileName(this,tr("Open File"),"","Dxf Files(*.dxf);;All files(*.*)");
      

      Versions:

      Windows 7 Enterprise SP1 64 bit
      Qt creator 4.1.0 Based on Qt 5.7.0 (MSVC 2013, 32 bit)
      Qt 5.8.0 MinGW 5.3.0 32 bit 
      

      Full program:

      #define EDIT_MARKER "This file was edited by 3803829-DXF-Text-Resizer"
      
      #include "mainwindow.h"
      #include "ui_mainwindow.h"
      
      #include <QFileDialog>
      #include <QDebug>
      
      MainWindow::MainWindow(QWidget *parent) :
          QMainWindow(parent),
          ui(new Ui::MainWindow)
      {
          ui->setupUi(this);
      }
      
      MainWindow::~MainWindow()
      {
          delete ui;
      }
      
      void MainWindow::on_pushButton_clicked()
      {
          QString fileName;
          fileName = QFileDialog::getOpenFileName(this,tr("Open File"),"","Dxf Files(*.dxf);;All files(*.*)");
      }
      
      m.sueM Offline
      m.sueM Offline
      m.sue
      wrote on last edited by
      #5

      @cdwijs

      Hi,

      probably the this pointer is no longer valid when the file dialog goes out of scope. Maybe just try it with a nullptr.

      -Michael.

      jsulmJ 1 Reply Last reply
      0
      • m.sueM m.sue

        @cdwijs

        Hi,

        probably the this pointer is no longer valid when the file dialog goes out of scope. Maybe just try it with a nullptr.

        -Michael.

        jsulmJ Offline
        jsulmJ Offline
        jsulm
        Lifetime Qt Champion
        wrote on last edited by
        #6

        @m.sue Why should it not be valid? QFileDialog::getOpenFileName is static and blocking - the execution will continue when the dialog is closed. In the mean time MainWindow cannot be destroyed.

        https://forum.qt.io/topic/113070/qt-code-of-conduct

        m.sueM 1 Reply Last reply
        0
        • jsulmJ jsulm

          @m.sue Why should it not be valid? QFileDialog::getOpenFileName is static and blocking - the execution will continue when the dialog is closed. In the mean time MainWindow cannot be destroyed.

          m.sueM Offline
          m.sueM Offline
          m.sue
          wrote on last edited by m.sue
          #7

          I understood that the crash happens after closing the file dialog. I thought maybe even after closing the whole program. Closing the dialog does not mean that the .NET objects behind the scene are freed immediately.
          I had had similar problems on WINDOWS 7 Enterprise but only in the debug version.
          -Michael

          1 Reply Last reply
          0
          • C Offline
            C Offline
            cdwijs
            wrote on last edited by kshegunov
            #8

            I have rebooted my machine, and removed the build folder, and the .user file.
            I have tried both of the following lines, they both crash, after about 2 minutes after the load file dialog is closed:

            fileName = QFileDialog::getOpenFileName(this,tr("Open File"),"","Dxf Files(*.dxf);;All files(*.*)");
            fileName = QFileDialog::getOpenFileName(Q_NULLPTR,tr("Open File"),"","Dxf Files(*.dxf);;All files(*.*)");
            

            The crash also happens when the dialog is cancelled.
            The crash does not happen when the file open dialog is opened, and kept open.
            The crash does happen when the dialog is opened, cancelled, and then kept open again.

            What can I do to make this work?
            Cheers, Cedric

            [Added code tags ~kshegunov]

            jsulmJ m.sueM 2 Replies Last reply
            0
            • C cdwijs

              I have rebooted my machine, and removed the build folder, and the .user file.
              I have tried both of the following lines, they both crash, after about 2 minutes after the load file dialog is closed:

              fileName = QFileDialog::getOpenFileName(this,tr("Open File"),"","Dxf Files(*.dxf);;All files(*.*)");
              fileName = QFileDialog::getOpenFileName(Q_NULLPTR,tr("Open File"),"","Dxf Files(*.dxf);;All files(*.*)");
              

              The crash also happens when the dialog is cancelled.
              The crash does not happen when the file open dialog is opened, and kept open.
              The crash does happen when the dialog is opened, cancelled, and then kept open again.

              What can I do to make this work?
              Cheers, Cedric

              [Added code tags ~kshegunov]

              jsulmJ Offline
              jsulmJ Offline
              jsulm
              Lifetime Qt Champion
              wrote on last edited by jsulm
              #9

              @cdwijs What else is your app doing?
              @m-sue We are in the native C++ universe here not .Net :-)

              https://forum.qt.io/topic/113070/qt-code-of-conduct

              C 1 Reply Last reply
              0
              • jsulmJ jsulm

                @cdwijs What else is your app doing?
                @m-sue We are in the native C++ universe here not .Net :-)

                C Offline
                C Offline
                cdwijs
                wrote on last edited by cdwijs
                #10

                @jsulm said in SIGSEGV after adding QFileDialog::getOpenFileName to the program:

                @cdwijs What else is your app doing?
                @m-sue We are in the native C++ universe here not .Net :-)

                @jsulm: I have created the smallest program that shows the problem. Just run it, press the button, and cancel the file dialog. Then after 3 minutes the program crashes. Here is the complete source code:

                #-------------------------------------------------
                #
                # Project created by QtCreator 2017-06-09T14:42:39
                #
                #-------------------------------------------------
                
                QT       += core gui
                
                greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
                
                TARGET = untitled2
                TEMPLATE = app
                
                
                SOURCES += main.cpp\
                        mainwindow.cpp
                
                HEADERS  += mainwindow.h
                
                FORMS    += mainwindow.ui
                
                #ifndef MAINWINDOW_H
                #define MAINWINDOW_H
                
                #include <QMainWindow>
                
                namespace Ui {
                class MainWindow;
                }
                
                class MainWindow : public QMainWindow
                {
                    Q_OBJECT
                
                public:
                    explicit MainWindow(QWidget *parent = 0);
                    ~MainWindow();
                
                private slots:
                    void on_pushButton_clicked();
                
                private:
                    Ui::MainWindow *ui;
                };
                
                #endif // MAINWINDOW_H
                
                #include "mainwindow.h"
                #include <QApplication>
                
                int main(int argc, char *argv[])
                {
                    QApplication a(argc, argv);
                    MainWindow w;
                    w.show();
                
                    return a.exec();
                }
                
                
                #include "mainwindow.h"
                #include "ui_mainwindow.h"
                
                #include <QFileDialog>
                
                MainWindow::MainWindow(QWidget *parent) :
                    QMainWindow(parent),
                    ui(new Ui::MainWindow)
                {
                    ui->setupUi(this);
                }
                
                MainWindow::~MainWindow()
                {
                    delete ui;
                }
                
                void MainWindow::on_pushButton_clicked()
                {
                    QString fileName;
                    fileName = QFileDialog::getOpenFileName(Q_NULLPTR,tr("Open File"),"","Dxf Files(*.dxf);;All files(*.*)");
                }
                
                <?xml version="1.0" encoding="UTF-8"?>
                <ui version="4.0">
                 <class>MainWindow</class>
                 <widget class="QMainWindow" name="MainWindow">
                  <property name="geometry">
                   <rect>
                    <x>0</x>
                    <y>0</y>
                    <width>400</width>
                    <height>300</height>
                   </rect>
                  </property>
                  <property name="windowTitle">
                   <string>MainWindow</string>
                  </property>
                  <widget class="QWidget" name="centralWidget">
                   <widget class="QPushButton" name="pushButton">
                    <property name="geometry">
                     <rect>
                      <x>40</x>
                      <y>40</y>
                      <width>75</width>
                      <height>23</height>
                     </rect>
                    </property>
                    <property name="text">
                     <string>PushButton</string>
                    </property>
                   </widget>
                  </widget>
                  <widget class="QMenuBar" name="menuBar">
                   <property name="geometry">
                    <rect>
                     <x>0</x>
                     <y>0</y>
                     <width>400</width>
                     <height>21</height>
                    </rect>
                   </property>
                  </widget>
                  <widget class="QToolBar" name="mainToolBar">
                   <attribute name="toolBarArea">
                    <enum>TopToolBarArea</enum>
                   </attribute>
                   <attribute name="toolBarBreak">
                    <bool>false</bool>
                   </attribute>
                  </widget>
                  <widget class="QStatusBar" name="statusBar"/>
                 </widget>
                 <layoutdefault spacing="6" margin="11"/>
                 <resources/>
                 <connections/>
                </ui>
                
                14:44:14: Running steps for project untitled2...
                14:44:14: Starting: "C:\Qt\5.8\mingw53_32\bin\qmake.exe" C:\Users\crldewijs\Documents\untitled2\untitled2.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
                Info: creating stash file C:\Users\crldewijs\Documents\build-untitled2-Desktop-Debug\.qmake.stash
                14:44:15: The process "C:\Qt\5.8\mingw53_32\bin\qmake.exe" exited normally.
                14:44:15: Starting: "C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" qmake_all
                mingw32-make: Nothing to be done for 'qmake_all'.
                14:44:15: The process "C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" exited normally.
                14:44:15: Starting: "C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" 
                C:/Qt/Tools/mingw530_32/bin/mingw32-make -f Makefile.Debug
                mingw32-make[1]: Entering directory 'C:/Users/crldewijs/Documents/build-untitled2-Desktop-Debug'
                C:\Qt\5.8\mingw53_32\bin\uic.exe ..\untitled2\mainwindow.ui -o ui_mainwindow.h
                g++ -c -pipe -fno-keep-inline-dllexport -g -std=gnu++11 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\untitled2 -I. -I..\..\..\..\Qt\5.8\mingw53_32\include -I..\..\..\..\Qt\5.8\mingw53_32\include\QtWidgets -I..\..\..\..\Qt\5.8\mingw53_32\include\QtGui -I..\..\..\..\Qt\5.8\mingw53_32\include\QtANGLE -I..\..\..\..\Qt\5.8\mingw53_32\include\QtCore -Idebug -I. -I..\..\..\..\Qt\5.8\mingw53_32\mkspecs\win32-g++  -o debug\main.o ..\untitled2\main.cpp
                g++ -c -pipe -fno-keep-inline-dllexport -g -std=gnu++11 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\untitled2 -I. -I..\..\..\..\Qt\5.8\mingw53_32\include -I..\..\..\..\Qt\5.8\mingw53_32\include\QtWidgets -I..\..\..\..\Qt\5.8\mingw53_32\include\QtGui -I..\..\..\..\Qt\5.8\mingw53_32\include\QtANGLE -I..\..\..\..\Qt\5.8\mingw53_32\include\QtCore -Idebug -I. -I..\..\..\..\Qt\5.8\mingw53_32\mkspecs\win32-g++  -o debug\mainwindow.o ..\untitled2\mainwindow.cpp
                g++ -pipe -fno-keep-inline-dllexport -g -std=gnu++11 -frtti -Wall -Wextra -dM -E -o debug\moc_predefs.h ..\..\..\..\Qt\5.8\mingw53_32\mkspecs\features\data\dummy.cpp
                C:\Qt\5.8\mingw53_32\bin\moc.exe -DUNICODE -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN --include debug/moc_predefs.h -IC:/Qt/5.8/mingw53_32/mkspecs/win32-g++ -IC:/Users/crldewijs/Documents/untitled2 -IC:/Qt/5.8/mingw53_32/include -IC:/Qt/5.8/mingw53_32/include/QtWidgets -IC:/Qt/5.8/mingw53_32/include/QtGui -IC:/Qt/5.8/mingw53_32/include/QtANGLE -IC:/Qt/5.8/mingw53_32/include/QtCore -I. -IC:/Qt/Tools/mingw530_32/lib/gcc/i686-w64-mingw32/5.3.0/include -IC:/Qt/Tools/mingw530_32/lib/gcc/i686-w64-mingw32/5.3.0/include-fixed -IC:/Qt/Tools/mingw530_32/i686-w64-mingw32/include -IC:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++ -IC:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/i686-w64-mingw32 -IC:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/backward ..\untitled2\mainwindow.h -o debug\moc_mainwindow.cpp
                g++ -c -pipe -fno-keep-inline-dllexport -g -std=gnu++11 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\untitled2 -I. -I..\..\..\..\Qt\5.8\mingw53_32\include -I..\..\..\..\Qt\5.8\mingw53_32\include\QtWidgets -I..\..\..\..\Qt\5.8\mingw53_32\include\QtGui -I..\..\..\..\Qt\5.8\mingw53_32\include\QtANGLE -I..\..\..\..\Qt\5.8\mingw53_32\include\QtCore -Idebug -I. -I..\..\..\..\Qt\5.8\mingw53_32\mkspecs\win32-g++  -o debug\moc_mainwindow.o debug\moc_mainwindow.cpp
                g++ -Wl,-subsystem,windows -mthreads -o debug\untitled2.exe debug/main.o debug/mainwindow.o debug/moc_mainwindow.o  -lmingw32 -LC:\Qt\5.8\mingw53_32\lib C:\Qt\5.8\mingw53_32\lib\libqtmaind.a -LC:\utils\my_sql\my_sql\lib -LC:\utils\postgresql\pgsql\lib -lshell32 C:\Qt\5.8\mingw53_32\lib\libQt5Widgetsd.a C:\Qt\5.8\mingw53_32\lib\libQt5Guid.a C:\Qt\5.8\mingw53_32\lib\libQt5Cored.a 
                mingw32-make[1]: Leaving directory 'C:/Users/crldewijs/Documents/build-untitled2-Desktop-Debug'
                14:44:21: The process "C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" exited normally.
                14:44:21: Elapsed time: 00:07.
                
                kshegunovK 1 Reply Last reply
                0
                • C cdwijs

                  I have rebooted my machine, and removed the build folder, and the .user file.
                  I have tried both of the following lines, they both crash, after about 2 minutes after the load file dialog is closed:

                  fileName = QFileDialog::getOpenFileName(this,tr("Open File"),"","Dxf Files(*.dxf);;All files(*.*)");
                  fileName = QFileDialog::getOpenFileName(Q_NULLPTR,tr("Open File"),"","Dxf Files(*.dxf);;All files(*.*)");
                  

                  The crash also happens when the dialog is cancelled.
                  The crash does not happen when the file open dialog is opened, and kept open.
                  The crash does happen when the dialog is opened, cancelled, and then kept open again.

                  What can I do to make this work?
                  Cheers, Cedric

                  [Added code tags ~kshegunov]

                  m.sueM Offline
                  m.sueM Offline
                  m.sue
                  wrote on last edited by
                  #11

                  @cdwijs

                  In the backtrace #9 there is a call to IUnknown_QueryService which I assume causes the error, as in #8 in the networkitemfactory dll does not know what to do about it, initiating error handling in ole32.dll.

                  This maybe something completely independent of your program, like dll injection via explorer, virus scanner etc.

                  -Michael.

                  1 Reply Last reply
                  0
                  • C cdwijs

                    @jsulm said in SIGSEGV after adding QFileDialog::getOpenFileName to the program:

                    @cdwijs What else is your app doing?
                    @m-sue We are in the native C++ universe here not .Net :-)

                    @jsulm: I have created the smallest program that shows the problem. Just run it, press the button, and cancel the file dialog. Then after 3 minutes the program crashes. Here is the complete source code:

                    #-------------------------------------------------
                    #
                    # Project created by QtCreator 2017-06-09T14:42:39
                    #
                    #-------------------------------------------------
                    
                    QT       += core gui
                    
                    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
                    
                    TARGET = untitled2
                    TEMPLATE = app
                    
                    
                    SOURCES += main.cpp\
                            mainwindow.cpp
                    
                    HEADERS  += mainwindow.h
                    
                    FORMS    += mainwindow.ui
                    
                    #ifndef MAINWINDOW_H
                    #define MAINWINDOW_H
                    
                    #include <QMainWindow>
                    
                    namespace Ui {
                    class MainWindow;
                    }
                    
                    class MainWindow : public QMainWindow
                    {
                        Q_OBJECT
                    
                    public:
                        explicit MainWindow(QWidget *parent = 0);
                        ~MainWindow();
                    
                    private slots:
                        void on_pushButton_clicked();
                    
                    private:
                        Ui::MainWindow *ui;
                    };
                    
                    #endif // MAINWINDOW_H
                    
                    #include "mainwindow.h"
                    #include <QApplication>
                    
                    int main(int argc, char *argv[])
                    {
                        QApplication a(argc, argv);
                        MainWindow w;
                        w.show();
                    
                        return a.exec();
                    }
                    
                    
                    #include "mainwindow.h"
                    #include "ui_mainwindow.h"
                    
                    #include <QFileDialog>
                    
                    MainWindow::MainWindow(QWidget *parent) :
                        QMainWindow(parent),
                        ui(new Ui::MainWindow)
                    {
                        ui->setupUi(this);
                    }
                    
                    MainWindow::~MainWindow()
                    {
                        delete ui;
                    }
                    
                    void MainWindow::on_pushButton_clicked()
                    {
                        QString fileName;
                        fileName = QFileDialog::getOpenFileName(Q_NULLPTR,tr("Open File"),"","Dxf Files(*.dxf);;All files(*.*)");
                    }
                    
                    <?xml version="1.0" encoding="UTF-8"?>
                    <ui version="4.0">
                     <class>MainWindow</class>
                     <widget class="QMainWindow" name="MainWindow">
                      <property name="geometry">
                       <rect>
                        <x>0</x>
                        <y>0</y>
                        <width>400</width>
                        <height>300</height>
                       </rect>
                      </property>
                      <property name="windowTitle">
                       <string>MainWindow</string>
                      </property>
                      <widget class="QWidget" name="centralWidget">
                       <widget class="QPushButton" name="pushButton">
                        <property name="geometry">
                         <rect>
                          <x>40</x>
                          <y>40</y>
                          <width>75</width>
                          <height>23</height>
                         </rect>
                        </property>
                        <property name="text">
                         <string>PushButton</string>
                        </property>
                       </widget>
                      </widget>
                      <widget class="QMenuBar" name="menuBar">
                       <property name="geometry">
                        <rect>
                         <x>0</x>
                         <y>0</y>
                         <width>400</width>
                         <height>21</height>
                        </rect>
                       </property>
                      </widget>
                      <widget class="QToolBar" name="mainToolBar">
                       <attribute name="toolBarArea">
                        <enum>TopToolBarArea</enum>
                       </attribute>
                       <attribute name="toolBarBreak">
                        <bool>false</bool>
                       </attribute>
                      </widget>
                      <widget class="QStatusBar" name="statusBar"/>
                     </widget>
                     <layoutdefault spacing="6" margin="11"/>
                     <resources/>
                     <connections/>
                    </ui>
                    
                    14:44:14: Running steps for project untitled2...
                    14:44:14: Starting: "C:\Qt\5.8\mingw53_32\bin\qmake.exe" C:\Users\crldewijs\Documents\untitled2\untitled2.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
                    Info: creating stash file C:\Users\crldewijs\Documents\build-untitled2-Desktop-Debug\.qmake.stash
                    14:44:15: The process "C:\Qt\5.8\mingw53_32\bin\qmake.exe" exited normally.
                    14:44:15: Starting: "C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" qmake_all
                    mingw32-make: Nothing to be done for 'qmake_all'.
                    14:44:15: The process "C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" exited normally.
                    14:44:15: Starting: "C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" 
                    C:/Qt/Tools/mingw530_32/bin/mingw32-make -f Makefile.Debug
                    mingw32-make[1]: Entering directory 'C:/Users/crldewijs/Documents/build-untitled2-Desktop-Debug'
                    C:\Qt\5.8\mingw53_32\bin\uic.exe ..\untitled2\mainwindow.ui -o ui_mainwindow.h
                    g++ -c -pipe -fno-keep-inline-dllexport -g -std=gnu++11 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\untitled2 -I. -I..\..\..\..\Qt\5.8\mingw53_32\include -I..\..\..\..\Qt\5.8\mingw53_32\include\QtWidgets -I..\..\..\..\Qt\5.8\mingw53_32\include\QtGui -I..\..\..\..\Qt\5.8\mingw53_32\include\QtANGLE -I..\..\..\..\Qt\5.8\mingw53_32\include\QtCore -Idebug -I. -I..\..\..\..\Qt\5.8\mingw53_32\mkspecs\win32-g++  -o debug\main.o ..\untitled2\main.cpp
                    g++ -c -pipe -fno-keep-inline-dllexport -g -std=gnu++11 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\untitled2 -I. -I..\..\..\..\Qt\5.8\mingw53_32\include -I..\..\..\..\Qt\5.8\mingw53_32\include\QtWidgets -I..\..\..\..\Qt\5.8\mingw53_32\include\QtGui -I..\..\..\..\Qt\5.8\mingw53_32\include\QtANGLE -I..\..\..\..\Qt\5.8\mingw53_32\include\QtCore -Idebug -I. -I..\..\..\..\Qt\5.8\mingw53_32\mkspecs\win32-g++  -o debug\mainwindow.o ..\untitled2\mainwindow.cpp
                    g++ -pipe -fno-keep-inline-dllexport -g -std=gnu++11 -frtti -Wall -Wextra -dM -E -o debug\moc_predefs.h ..\..\..\..\Qt\5.8\mingw53_32\mkspecs\features\data\dummy.cpp
                    C:\Qt\5.8\mingw53_32\bin\moc.exe -DUNICODE -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN --include debug/moc_predefs.h -IC:/Qt/5.8/mingw53_32/mkspecs/win32-g++ -IC:/Users/crldewijs/Documents/untitled2 -IC:/Qt/5.8/mingw53_32/include -IC:/Qt/5.8/mingw53_32/include/QtWidgets -IC:/Qt/5.8/mingw53_32/include/QtGui -IC:/Qt/5.8/mingw53_32/include/QtANGLE -IC:/Qt/5.8/mingw53_32/include/QtCore -I. -IC:/Qt/Tools/mingw530_32/lib/gcc/i686-w64-mingw32/5.3.0/include -IC:/Qt/Tools/mingw530_32/lib/gcc/i686-w64-mingw32/5.3.0/include-fixed -IC:/Qt/Tools/mingw530_32/i686-w64-mingw32/include -IC:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++ -IC:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/i686-w64-mingw32 -IC:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/backward ..\untitled2\mainwindow.h -o debug\moc_mainwindow.cpp
                    g++ -c -pipe -fno-keep-inline-dllexport -g -std=gnu++11 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\untitled2 -I. -I..\..\..\..\Qt\5.8\mingw53_32\include -I..\..\..\..\Qt\5.8\mingw53_32\include\QtWidgets -I..\..\..\..\Qt\5.8\mingw53_32\include\QtGui -I..\..\..\..\Qt\5.8\mingw53_32\include\QtANGLE -I..\..\..\..\Qt\5.8\mingw53_32\include\QtCore -Idebug -I. -I..\..\..\..\Qt\5.8\mingw53_32\mkspecs\win32-g++  -o debug\moc_mainwindow.o debug\moc_mainwindow.cpp
                    g++ -Wl,-subsystem,windows -mthreads -o debug\untitled2.exe debug/main.o debug/mainwindow.o debug/moc_mainwindow.o  -lmingw32 -LC:\Qt\5.8\mingw53_32\lib C:\Qt\5.8\mingw53_32\lib\libqtmaind.a -LC:\utils\my_sql\my_sql\lib -LC:\utils\postgresql\pgsql\lib -lshell32 C:\Qt\5.8\mingw53_32\lib\libQt5Widgetsd.a C:\Qt\5.8\mingw53_32\lib\libQt5Guid.a C:\Qt\5.8\mingw53_32\lib\libQt5Cored.a 
                    mingw32-make[1]: Leaving directory 'C:/Users/crldewijs/Documents/build-untitled2-Desktop-Debug'
                    14:44:21: The process "C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" exited normally.
                    14:44:21: Elapsed time: 00:07.
                    
                    kshegunovK Offline
                    kshegunovK Offline
                    kshegunov
                    Moderators
                    wrote on last edited by
                    #12

                    @jsulm said in SIGSEGV after adding QFileDialog::getOpenFileName to the program:

                    In the mean time MainWindow cannot be destroyed.

                    Actually it can. The blocking QEventLoop::exec is "fake" blocking, it still spins the global event loop, and as consequence Window's message loop.

                    @cdwijs
                    Try it without using the static overloads to exclude any funny business with the event loop:

                    QFileDialog * dialog = new QFileDialog(this, ...);
                    // ... setFileNameFilters and such
                    dialog->show();
                    
                    QObject::connect(dialog, &QDialog::rejected, this, [] () {
                        qDebug() << "Canceled ...";
                    });
                    QObject::connect(dialog, &QDialog::accepted, this, [] () {
                        qDebug() << "Ok clicked ...";
                    });
                    

                    If your problem persists, try setting the dialog to be alien (non-native) and get back with the results of your experiments. Also disable any antivirus stuff which may interfere as @m-sue suggested.

                    Read and abide by the Qt Code of Conduct

                    C 1 Reply Last reply
                    0
                    • kshegunovK kshegunov

                      @jsulm said in SIGSEGV after adding QFileDialog::getOpenFileName to the program:

                      In the mean time MainWindow cannot be destroyed.

                      Actually it can. The blocking QEventLoop::exec is "fake" blocking, it still spins the global event loop, and as consequence Window's message loop.

                      @cdwijs
                      Try it without using the static overloads to exclude any funny business with the event loop:

                      QFileDialog * dialog = new QFileDialog(this, ...);
                      // ... setFileNameFilters and such
                      dialog->show();
                      
                      QObject::connect(dialog, &QDialog::rejected, this, [] () {
                          qDebug() << "Canceled ...";
                      });
                      QObject::connect(dialog, &QDialog::accepted, this, [] () {
                          qDebug() << "Ok clicked ...";
                      });
                      

                      If your problem persists, try setting the dialog to be alien (non-native) and get back with the results of your experiments. Also disable any antivirus stuff which may interfere as @m-sue suggested.

                      C Offline
                      C Offline
                      cdwijs
                      wrote on last edited by
                      #13

                      @kshegunov said in SIGSEGV after adding QFileDialog::getOpenFileName to the program:

                      @jsulm said in SIGSEGV after adding QFileDialog::getOpenFileName to the program:

                      In the mean time MainWindow cannot be destroyed.

                      Actually it can. The blocking QEventLoop::exec is "fake" blocking, it still spins the global event loop, and as consequence Window's message loop.

                      @cdwijs
                      Try it without using the static overloads to exclude any funny business with the event loop:

                      QFileDialog * dialog = new QFileDialog(this, ...);
                      // ... setFileNameFilters and such
                      dialog->show();
                      
                      QObject::connect(dialog, &QDialog::rejected, this, [] () {
                          qDebug() << "Canceled ...";
                      });
                      QObject::connect(dialog, &QDialog::accepted, this, [] () {
                          qDebug() << "Ok clicked ...";
                      });
                      

                      If your problem persists, try setting the dialog to be alien (non-native) and get back with the results of your experiments. Also disable any antivirus stuff which may interfere as @m-sue suggested.

                      I have tried some things, using non-native dialog works. It looks like every native dialog fails. See the below code:

                      #include "mainwindow.h"
                      #include "ui_mainwindow.h"
                      
                      #include <QFileDialog>
                      QFileDialog * dialog;
                      #include <QDebug>
                      
                      
                      MainWindow::MainWindow(QWidget *parent) :
                          QMainWindow(parent),
                          ui(new Ui::MainWindow)
                      {
                          dialog = new QFileDialog();
                          QObject::connect(dialog,&QFileDialog::fileSelected,this, [] () {qDebug()<<"fileselected";}); //fires on pushbutton 2 dialog
                          ui->setupUi(this);
                      }
                      
                      MainWindow::~MainWindow()
                      {
                          delete ui;
                      }
                      
                      void MainWindow::on_pushButton_clicked()
                      {
                          QString fileName;
                          fileName = QFileDialog::getOpenFileName(Q_NULLPTR,tr("Open File"),"","Dxf Files(*.dxf);;All files(*.*)"); //sigseg after 2 minutes
                      }
                      
                      void MainWindow::on_pushButton_2_clicked()
                      {
                          dialog->show(); //no crash (tested 9 minutes), looks non-native
                      }
                      
                      
                      
                      void MainWindow::on_pushButton_3_clicked()
                      {
                          QString fileName;
                          fileName = dialog->getOpenFileName(Q_NULLPTR,tr("Open File"),"","Dxf Files(*.dxf);;All files(*.*)"); //sigseg after 2 minutes
                      }
                      
                      void MainWindow::on_pushButton_4_clicked()
                      {
                          QString fileName;
                          fileName = dialog->getOpenFileName(); //sigseg after 2 minutes
                      }
                      
                      
                      
                      void MainWindow::on_pushButton_5_clicked()
                      {
                          QString fileName;
                          fileName = QFileDialog::getOpenFileName(Q_NULLPTR,tr("Open File"),"","Dxf Files(*.dxf);;All files(*.*)",Q_NULLPTR,QFileDialog::DontUseNativeDialog); //no crash, looks non-native
                      }
                      
                      1 Reply Last reply
                      0
                      • R Offline
                        R Offline
                        Rondog
                        wrote on last edited by
                        #14

                        I don't know if this is helpful or not but I ran into a problem a few years back that reminds me of this. A (non-Qt) software I dealt with would crash every time the the user would access the file dialogs (open, save) and it seemed to happen only to certain people. If files were loaded from the recent file list everything was fine. Everything worked until you tried to do something with the file dialogs.

                        The problem turned out to be a name collision of a DLL and Office 2013. With Office 2013 installed everytime the open or save dialog was called and there was a DLL present with a name it thought was somehow assocated with Office 2013 the result was a crash. The solution this (rather large) software company came up with was to rename their DLL file (lol).

                        First I am assuming your program would work on a clean install of Windows 7 with nothing else installed. I have never had this kind of problem using the Qt file dialogs (not like this at least) so I suspect this would be true. I have not used Qt 5.8.x but 5.6.x does not have this problem on Win7.

                        1 Reply Last reply
                        0
                        • C cdwijs

                          Hi All,

                          I'm writing a program that does some processing on a file. After I add this line to the application I get segmentation faults. The fault is not immediately after clicking the button, but it comes after a few minutes. How can I solve this?

                          fileName = QFileDialog::getOpenFileName(this,tr("Open File"),"","Dxf Files(*.dxf);;All files(*.*)");
                          

                          Versions:

                          Windows 7 Enterprise SP1 64 bit
                          Qt creator 4.1.0 Based on Qt 5.7.0 (MSVC 2013, 32 bit)
                          Qt 5.8.0 MinGW 5.3.0 32 bit 
                          

                          Full program:

                          #define EDIT_MARKER "This file was edited by 3803829-DXF-Text-Resizer"
                          
                          #include "mainwindow.h"
                          #include "ui_mainwindow.h"
                          
                          #include <QFileDialog>
                          #include <QDebug>
                          
                          MainWindow::MainWindow(QWidget *parent) :
                              QMainWindow(parent),
                              ui(new Ui::MainWindow)
                          {
                              ui->setupUi(this);
                          }
                          
                          MainWindow::~MainWindow()
                          {
                              delete ui;
                          }
                          
                          void MainWindow::on_pushButton_clicked()
                          {
                              QString fileName;
                              fileName = QFileDialog::getOpenFileName(this,tr("Open File"),"","Dxf Files(*.dxf);;All files(*.*)");
                          }
                          
                          joeQJ Offline
                          joeQJ Offline
                          joeQ
                          wrote on last edited by
                          #15

                          @cdwijs Hi, friend, welcome.

                          did you try add QFileDialog::DontUseNativeDialog ?

                          i got crash problem in my windows system before . I used the Qt Don't Native Dialog, It worked out. I guess it was the Permission issues. sometime, use the native dialog, it will crashed. but sometimes, it also can worked well.

                          
                          #ifdef USE_NATIVE_DIALOG
                              path = QFileDialog::getOpenFileName(this,tr("select file"), lastDir,FILE_FILTER, 0,QFileDialog::DontUseNativeDialog );
                          #else
                              path = QFileDialog::getOpenFileName(this,tr("select file"), lastDir, FILE_FILTER);
                          #endif
                          

                          Just do it!

                          1 Reply Last reply
                          1

                          • Login

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • Users
                          • Groups
                          • Search
                          • Get Qt Extensions
                          • Unsolved