sqlitebrowser / sqlitebrowser

Official home of the DB Browser for SQLite (DB4S) project. Previously known as "SQLite Database Browser" and "Database Browser for SQLite". Website at:
https://sqlitebrowser.org
Other
21.42k stars 2.14k forks source link

Crash when changing the column type in edit table window #1696

Closed ngosang closed 5 years ago

ngosang commented 5 years ago

Details for the issue

Crash when changing the column type in edit table window.

  1. Open a DB
  2. Edit some table with the "edit table window"
  3. Try to change the column type with the combo
  4. Crash!

Useful extra information

OS Linux, KDE Plasma. Version 3.10.1 Version Qt 5.10.0 Version SQLite 3.21.0

Application: sqlitebrowser (sqlitebrowser), signal: Segmentation fault
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f900a762800 (LWP 3125))]

Thread 8 (Thread 0x7f8fe7fff700 (LWP 3134)):
#0  0x00007f900e104afc in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007f8ff9bdcd94 in ?? () from /usr/lib/dri/swrast_dri.so
#2  0x00007f8ff9bdccd8 in ?? () from /usr/lib/dri/swrast_dri.so
#3  0x00007f900e0fea9d in start_thread () from /usr/lib/libpthread.so.0
#4  0x00007f900e213b23 in clone () from /usr/lib/libc.so.6

Thread 7 (Thread 0x7f8ff8e58700 (LWP 3133)):
#0  0x00007f900e104afc in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007f8ff9bdcd94 in ?? () from /usr/lib/dri/swrast_dri.so
#2  0x00007f8ff9bdccd8 in ?? () from /usr/lib/dri/swrast_dri.so
#3  0x00007f900e0fea9d in start_thread () from /usr/lib/libpthread.so.0
#4  0x00007f900e213b23 in clone () from /usr/lib/libc.so.6

Thread 6 (Thread 0x7f8ff9659700 (LWP 3132)):
#0  0x00007f900e104afc in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007f8ff9bdcd94 in ?? () from /usr/lib/dri/swrast_dri.so
#2  0x00007f8ff9bdccd8 in ?? () from /usr/lib/dri/swrast_dri.so
#3  0x00007f900e0fea9d in start_thread () from /usr/lib/libpthread.so.0
#4  0x00007f900e213b23 in clone () from /usr/lib/libc.so.6

Thread 5 (Thread 0x7f8ffb7fe700 (LWP 3131)):
#0  0x00007f900e104afc in pthread_cond_wait@@GLIBC_2.3.2 () from /usr/lib/libpthread.so.0
#1  0x00007f8ff9bdcd94 in ?? () from /usr/lib/dri/swrast_dri.so
#2  0x00007f8ff9bdccd8 in ?? () from /usr/lib/dri/swrast_dri.so
#3  0x00007f900e0fea9d in start_thread () from /usr/lib/libpthread.so.0
#4  0x00007f900e213b23 in clone () from /usr/lib/libc.so.6

Thread 4 (Thread 0x7f8ffbfff700 (LWP 3128)):
#0  0x00007f900e208c21 in poll () from /usr/lib/libc.so.6
#1  0x00007f900d343540 in ?? () from /usr/lib/libglib-2.0.so.0
#2  0x00007f900d34362e in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#3  0x00007f900e8dc5c4 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#4  0x00007f900e88558c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#5  0x00007f900e6c95c9 in QThread::exec() () from /usr/lib/libQt5Core.so.5
#6  0x00007f900e6ca9cc in ?? () from /usr/lib/libQt5Core.so.5
#7  0x00007f900e0fea9d in start_thread () from /usr/lib/libpthread.so.0
#8  0x00007f900e213b23 in clone () from /usr/lib/libc.so.6

Thread 3 (Thread 0x7f900172a700 (LWP 3127)):
#0  0x00007f900e208c21 in poll () from /usr/lib/libc.so.6
#1  0x00007f900d343540 in ?? () from /usr/lib/libglib-2.0.so.0
#2  0x00007f900d34362e in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#3  0x00007f900e8dc5c4 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#4  0x00007f900e88558c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#5  0x00007f900e6c95c9 in QThread::exec() () from /usr/lib/libQt5Core.so.5
#6  0x00007f9009f93ba6 in ?? () from /usr/lib/libQt5DBus.so.5
#7  0x00007f900e6ca9cc in ?? () from /usr/lib/libQt5Core.so.5
#8  0x00007f900e0fea9d in start_thread () from /usr/lib/libpthread.so.0
#9  0x00007f900e213b23 in clone () from /usr/lib/libc.so.6

Thread 2 (Thread 0x7f9008dee700 (LWP 3126)):
#0  0x00007f900e208c21 in poll () from /usr/lib/libc.so.6
#1  0x00007f900abb6630 in ?? () from /usr/lib/libxcb.so.1
#2  0x00007f900abb82db in xcb_wait_for_event () from /usr/lib/libxcb.so.1
#3  0x00007f900a0c296b in ?? () from /usr/lib/libQt5XcbQpa.so.5
#4  0x00007f900e6ca9cc in ?? () from /usr/lib/libQt5Core.so.5
#5  0x00007f900e0fea9d in start_thread () from /usr/lib/libpthread.so.0
#6  0x00007f900e213b23 in clone () from /usr/lib/libc.so.6

Thread 1 (Thread 0x7f900a762800 (LWP 3125)):
[KCrash Handler]
#6  0x000055dd49f5278a in sqlb::Table::findField(QString const&) const ()
#7  0x000055dd49f441df in DBBrowserDB::renameColumn(QString const&, sqlb::Table const&, QString const&, QSharedPointer<sqlb::Field>, int) ()
#8  0x000055dd49ee344f in EditTableDialog::updateTypes(QObject*) ()
#9  0x000055dd49ee354a in EditTableDialog::eventFilter(QObject*, QEvent*) ()
#10 0x00007f900e88660b in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#11 0x00007f900f24ce24 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#12 0x00007f900f254671 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#13 0x00007f900e8868f9 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#14 0x00007f900f25216f in QApplicationPrivate::setFocusWidget(QWidget*, Qt::FocusReason) () from /usr/lib/libQt5Widgets.so.5
#15 0x00007f900f287a17 in QWidget::setFocus(Qt::FocusReason) () from /usr/lib/libQt5Widgets.so.5
#16 0x00007f900f3538c5 in QComboBox::showPopup() () from /usr/lib/libQt5Widgets.so.5
#17 0x00007f900f3541d5 in ?? () from /usr/lib/libQt5Widgets.so.5
#18 0x00007f900f28e4bf in QWidget::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5
#19 0x00007f900f34ede1 in QComboBox::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5
#20 0x00007f900f24ce34 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#21 0x00007f900f2548b9 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#22 0x00007f900e8868f9 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#23 0x00007f900f253b98 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) () from /usr/lib/libQt5Widgets.so.5
#24 0x00007f900f2a8d2d in ?? () from /usr/lib/libQt5Widgets.so.5
#25 0x00007f900f2abc67 in ?? () from /usr/lib/libQt5Widgets.so.5
#26 0x00007f900f24ce34 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#27 0x00007f900f254671 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#28 0x00007f900e8868f9 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#29 0x00007f900ec589be in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /usr/lib/libQt5Gui.so.5
#30 0x00007f900ec59e26 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib/libQt5Gui.so.5
#31 0x00007f900ec3375c in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Gui.so.5
#32 0x00007f900a0c399c in ?? () from /usr/lib/libQt5XcbQpa.so.5
#33 0x00007f900d341a2f in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#34 0x00007f900d3435e9 in ?? () from /usr/lib/libglib-2.0.so.0
#35 0x00007f900d34362e in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#36 0x00007f900e8dc5a9 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#37 0x00007f900e88558c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#38 0x00007f900f4445ce in QDialog::exec() () from /usr/lib/libQt5Widgets.so.5
#39 0x000055dd49f118fe in MainWindow::editObject() ()
#40 0x000055dd49fd26ee in ?? ()
#41 0x00007f900e8b128c in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQt5Core.so.5
#42 0x00007f900f246643 in QAction::triggered(bool) () from /usr/lib/libQt5Widgets.so.5
#43 0x00007f900f248d2a in QAction::activate(QAction::ActionEvent) () from /usr/lib/libQt5Widgets.so.5
#44 0x00007f900f33aafe in ?? () from /usr/lib/libQt5Widgets.so.5
#45 0x00007f900f33ad36 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/libQt5Widgets.so.5
#46 0x00007f900f42a3db in QToolButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/libQt5Widgets.so.5
#47 0x00007f900f28d9d8 in QWidget::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5
#48 0x00007f900f42a484 in QToolButton::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5
#49 0x00007f900f24ce34 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#50 0x00007f900f2548b9 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#51 0x00007f900e8868f9 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#52 0x00007f900f253b98 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) () from /usr/lib/libQt5Widgets.so.5
#53 0x00007f900f2a8d2d in ?? () from /usr/lib/libQt5Widgets.so.5
#54 0x00007f900f2abc67 in ?? () from /usr/lib/libQt5Widgets.so.5
#55 0x00007f900f24ce34 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#56 0x00007f900f254671 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Widgets.so.5
#57 0x00007f900e8868f9 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#58 0x00007f900ec589be in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /usr/lib/libQt5Gui.so.5
#59 0x00007f900ec59e26 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) () from /usr/lib/libQt5Gui.so.5
#60 0x00007f900ec3375c in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Gui.so.5
#61 0x00007f900a0c399c in ?? () from /usr/lib/libQt5XcbQpa.so.5
#62 0x00007f900d341a2f in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#63 0x00007f900d3435e9 in ?? () from /usr/lib/libglib-2.0.so.0
#64 0x00007f900d34362e in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#65 0x00007f900e8dc5a9 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#66 0x00007f900e88558c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
#67 0x00007f900e88d896 in QCoreApplication::exec() () from /usr/lib/libQt5Core.so.5
#68 0x000055dd49ed261d in main ()
[Inferior 1 (process 3125) detached]
chrisjlocke commented 5 years ago

3.10.1 is quite old now. Can you rebuild from our latest source?

ngosang commented 5 years ago

@chrisjlocke I built from source code and it's fixed in 3.11.0-beta3 When 3.11.0 will be released?

chrisjlocke commented 5 years ago

We're working on it - just finalising a couple of little issues. Will close this then as you have a semi-good workaround. There are a couple of issues with the nightly (see some of the currently open issues) but if you keep an eye on them, they may or may not affect you.

ngosang commented 5 years ago

@chrisjlocke @MKleusberg @mgrojo It's ok for me, just an advice. :smile: I don't see a clear release plan in this project. The last stable release was 1 year and a half ago. Since that, there are a ton of changes (which potentially can include a ton of regressions) and there isn't a release date scheduled... In my case, I opened 2 bugs already fixed in the master branch months ago...

This issue is far common and there is not an universal solution. Some projects works with release windows. e.g. release window of 3 months. The first 2 months you merge PRs, the 3rd month you can review the PRs, but don't merge until the next window. The 3rd month is only to fix regressions. Other projects have different branches (master and develop), but this is more complicated.

chrisjlocke commented 5 years ago

Unfortunately, with the limited number of developers we have (wish I knew what I was doing...) we can't plan releases on a schedule - some months nothing will happen, while another month, we might have all hands on deck. We fix the major issues when we can, and create a release when the number of bugs/fixes is worth it. Our biggest issue is our application requires translating into around 15 languages, so once the coding is complete, the translators have to translate an awful lot of dialog messages, dialog forms, etc. This all again takes time. We can't just say, "lets release v3.11" and push a button - its taken a couple of months just to finalise this release, send out alpha builds, etc.

justinclift commented 5 years ago

@ngosang This might be of interest to you: https://github.com/sqlitebrowser/sqlitebrowser/issues/1656 :smile:

ngosang commented 5 years ago

@chrisjlocke @MKleusberg @mgrojo In qBittorrent we use Transifex to speed up translations. It's free and easy to use. You can automate the upload of .ts files. The users can subscribe in Transifex for one or several languages. They will get an email when there are untranslated strings in their languages. The users translate directly in Transifex website and you can download and merge the .ts files into this repository (could be automated too). https://www.transifex.com/sledgehammer999/qbittorrent/