Details
-
Bug
-
Resolution: Cannot Reproduce
-
P2: Important
-
None
-
5.9.1
-
None
-
* Centos 7 (with QFileDialog::DontUseNativeDialog)
* Windows 7 (without QFileDialog::DontUseNativeDialog)
* Qt 5.9.1
Description
Openning a QFileDialog with option QFileDialog::DontUseNativeDialog causes a segfault on Linux Centos 7. The Qt build is the official 64-bit release 5.9.1.
Here is the backtrace:
(gdb) bt #0 0x00007fffe38dbc96 in update_current_folder_get_info_cb (cancellable=0xa943a0 [GCancellable], info=0x0, error=0xa576c0, user_data=0xac6580) at gtkfilechooserwidget.c:4272 #1 0x00007fffe38e055a in query_info_callback (source_object=<optimized out>, result=<optimized out>, user_data=0xad1b70) at gtkfilesystem.c:419 #2 0x00007fffe344ff93 in g_task_return_now (task=0xb19440 [GTask]) at gtask.c:1106 #3 0x00007fffe344ffc9 in complete_in_idle_cb (task=0xb19440) at gtask.c:1120 #4 0x00007ffff2af8d7a in g_main_context_dispatch (context=0x7fffe40016f0) at gmain.c:3152 #5 0x00007ffff2af8d7a in g_main_context_dispatch (context=context@entry=0x7fffe40016f0) at gmain.c:3767 #6 0x00007ffff2af90b8 in g_main_context_iterate (context=context@entry=0x7fffe40016f0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3838 #7 0x00007ffff2af916c in g_main_context_iteration (context=0x7fffe40016f0, may_block=1) at gmain.c:3899 #8 0x00007ffff698e11f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Core.so.5 #9 0x00007ffff693a4aa in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Core.so.5 #10 0x00007ffff7916307 in QDialog::exec() () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Widgets.so.5 #11 0x00007ffff78e602d in QFileDialog::getOpenFileUrl(QWidget*, QString const&, QUrl const&, QString const&, QString*, QFlags<QFileDialog::Option>, QStringList const&) () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Widgets.so.5 #12 0x00007ffff78e60ea in QFileDialog::getOpenFileName(QWidget*, QString const&, QString const&, QString const&, QString*, QFlags<QFileDialog::Option>) () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Widgets.so.5 #13 0x00000000004042da in MainWindow::on_pushButtonNonNative_clicked() () #14 0x00000000004046fe in MainWindow::qt_metacall(QMetaObject::Call, int, void**) () #15 0x00007ffff69665d4 in QMetaObject::activate(QObject*, int, int, void**) () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Core.so.5 #16 0x00007ffff78ad342 in QAbstractButton::clicked(bool) () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Widgets.so.5 #17 0x00007ffff78ad544 in () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Widgets.so.5 #18 0x00007ffff78af0de in () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Widgets.so.5 #19 0x00007ffff78af22c in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Widgets.so.5 #20 0x00007ffff773ca58 in QWidget::event(QEvent*) () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Widgets.so.5 #21 0x00007ffff76fe4bc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Widgets.so.5 #22 0x00007ffff77062c3 in QApplication::notify(QObject*, QEvent*) () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Widgets.so.5 #23 0x00007ffff693beb8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Core.so.5 #24 0x00007ffff7704f2f in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Widgets.so.5 #25 0x00007ffff7755ee6 in () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Widgets.so.5 #26 0x00007ffff775883b in () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Widgets.so.5 #27 0x00007ffff76fe4bc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Widgets.so.5 #28 0x00007ffff77058e7 in QApplication::notify(QObject*, QEvent*) () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Widgets.so.5 #29 0x00007ffff693beb8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Core.so.5 #30 0x00007ffff6f2a310 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Gui.so.5 #31 0x00007ffff6f2c105 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Gui.so.5 #32 0x00007ffff6f07d7b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Gui.so.5 #33 0x00007fffeb27df40 in () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/plugins/platforms/../../lib/libQt5XcbQpa.so.5 #34 0x00007ffff2af8d7a in g_main_context_dispatch (context=0x7fffe40016f0) at gmain.c:3152 #35 0x00007ffff2af8d7a in g_main_context_dispatch (context=context@entry=0x7fffe40016f0) at gmain.c:3767 #36 0x00007ffff2af90b8 in g_main_context_iterate (context=context@entry=0x7fffe40016f0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3838 #37 0x00007ffff2af916c in g_main_context_iteration (context=0x7fffe40016f0, may_block=1) at gmain.c:3899 #38 0x00007ffff698e11f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Core.so.5 #39 0x00007ffff693a4aa in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Core.so.5 #40 0x00007ffff6942d34 in QCoreApplication::exec() () at /home/francisg/Qt5.9.1/5.9.1/gcc_64/lib/libQt5Core.so.5 #41 0x0000000000403432 in main ()
A minimal code to reproduce this issue is here: https://github.com/giraldeau/fix-filedialog
Actually, the non-native dialog crashes on Linux, and the native dialog crashes on Windows. One can test both alternatives with this small dialog.
The QFileDialog works correctly using Qt 5.7.0 on Linux.