I have an crash on exit, with some compilations occurs always, and
doesn't crash with other compilations from same source. The attached
patch might fix it, but I am not certain due to the weird
crash/no-crash behavior.

If I read the attached backtrace correctly, the destructor is called
twice. What is that about? Do we have multiple table views and this
works as intended?

All this makes me wonder, what is going on my computer as I had
similar situation with TestParse as well. First it crashes, but with
new compilation from same sources and no crash.

miika
Thread 1 "subsurface" received signal SIGSEGV, Segmentation fault.
0x00000000006b4915 in TableView::~TableView (this=0x1c487f0, 
__in_chrg=<optimized out>) at 
/home/mturkia/source/subsurface/subsurface/desktop-widgets/tableview.cpp:70
70              for (int i = 1; oldDefault && ui.tableView && i < 
ui.tableView->model()->columnCount(); i++) {
(gdb) bt
#0  0x00000000006b4915 in TableView::~TableView (this=0x1c487f0, 
__in_chrg=<optimized out>) at 
/home/mturkia/source/subsurface/subsurface/desktop-widgets/tableview.cpp:70
#1  0x00000000006b4c88 in TableView::~TableView (this=0x1c487f0, 
__in_chrg=<optimized out>) at 
/home/mturkia/source/subsurface/subsurface/desktop-widgets/tableview.cpp:85
#2  0x00007ffff2cbc28b in QObjectPrivate::deleteChildren() () from 
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#3  0x00007ffff5c136c8 in QWidget::~QWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#4  0x00007ffff5d73759 in QSplitter::~QSplitter() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#5  0x00007ffff2cbc28b in QObjectPrivate::deleteChildren() () from 
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff5c136c8 in QWidget::~QWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#7  0x00007ffff5c13899 in QWidget::~QWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#8  0x00007ffff2cbc28b in QObjectPrivate::deleteChildren() () from 
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#9  0x00007ffff5c136c8 in QWidget::~QWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#10 0x00007ffff5c13899 in QWidget::~QWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#11 0x00007ffff2cbc28b in QObjectPrivate::deleteChildren() () from 
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#12 0x00007ffff5c136c8 in QWidget::~QWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#13 0x00007ffff5c13899 in QWidget::~QWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#14 0x00007ffff2cbc28b in QObjectPrivate::deleteChildren() () from 
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x00007ffff5c136c8 in QWidget::~QWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#16 0x00007ffff5d9dd59 in QScrollArea::~QScrollArea() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#17 0x00007ffff2cbc28b in QObjectPrivate::deleteChildren() () from 
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#18 0x00007ffff5c136c8 in QWidget::~QWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#19 0x00007ffff5c13899 in QWidget::~QWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#20 0x00007ffff2cbc28b in QObjectPrivate::deleteChildren() () from 
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#21 0x00007ffff5c136c8 in QWidget::~QWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#22 0x00007ffff5d73ea9 in QStackedWidget::~QStackedWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#23 0x00007ffff2cbc28b in QObjectPrivate::deleteChildren() () from 
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#24 0x00007ffff5c136c8 in QWidget::~QWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#25 0x00007ffff5d7f929 in QTabWidget::~QTabWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#26 0x00007ffff2cbc28b in QObjectPrivate::deleteChildren() () from 
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#27 0x00007ffff5c136c8 in QWidget::~QWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#28 0x0000000000640b1d in MainTab::~MainTab (this=0x1450ea0, 
__in_chrg=<optimized out>) at 
/home/mturkia/source/subsurface/subsurface/desktop-widgets/tab-widgets/maintab.cpp:210
#29 0x0000000000640b6a in MainTab::~MainTab (this=0x1450ea0, 
__in_chrg=<optimized out>) at 
/home/mturkia/source/subsurface/subsurface/desktop-widgets/tab-widgets/maintab.cpp:219
#30 0x00007ffff2cbc28b in QObjectPrivate::deleteChildren() () from 
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#31 0x00007ffff5c136c8 in QWidget::~QWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#32 0x00007ffff5d73ea9 in QStackedWidget::~QStackedWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#33 0x00007ffff2cbc28b in QObjectPrivate::deleteChildren() () from 
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#34 0x00007ffff5c136c8 in QWidget::~QWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#35 0x00007ffff5d73759 in QSplitter::~QSplitter() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#36 0x00007ffff2cbc28b in QObjectPrivate::deleteChildren() () from 
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#37 0x00007ffff5c136c8 in QWidget::~QWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#38 0x00007ffff5d73759 in QSplitter::~QSplitter() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#39 0x00007ffff2cbc28b in QObjectPrivate::deleteChildren() () from 
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#40 0x00007ffff5c136c8 in QWidget::~QWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#41 0x00007ffff5c13899 in QWidget::~QWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#42 0x00007ffff2cbc28b in QObjectPrivate::deleteChildren() () from 
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#43 0x00007ffff5c136c8 in QWidget::~QWidget() () from 
/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#44 0x0000000000599791 in MainWindow::~MainWindow (this=0xe9e2e0, 
__in_chrg=<optimized out>) at 
/home/mturkia/source/subsurface/subsurface/desktop-widgets/mainwindow.cpp:323
#45 0x00000000005997ca in MainWindow::~MainWindow (this=0xe9e2e0, 
__in_chrg=<optimized out>) at 
/home/mturkia/source/subsurface/subsurface/desktop-widgets/mainwindow.cpp:327
#46 0x00000000005957cb in exit_ui () at 
/home/mturkia/source/subsurface/subsurface/subsurface-desktop-helper.cpp:50
#47 0x0000000000594699 in main (argc=1, argv=0x7fffffffddb8) at 
/home/mturkia/source/subsurface/subsurface/subsurface-desktop-main.cpp:112

diff --git a/desktop-widgets/tableview.cpp b/desktop-widgets/tableview.cpp
index 0bb5bb1..d029c18 100644
--- a/desktop-widgets/tableview.cpp
+++ b/desktop-widgets/tableview.cpp
@@ -67,7 +67,7 @@ TableView::~TableView()
 	s.beginGroup(objectName());
 	// remove the old default
 	bool oldDefault = (ui.tableView->columnWidth(0) == 30);
-	for (int i = 1; oldDefault && i < ui.tableView->model()->columnCount(); i++) {
+	for (int i = 1; oldDefault && ui.tableView->model() && i < ui.tableView->model()->columnCount(); i++) {
 		if (ui.tableView->columnWidth(i) != 80)
 			oldDefault = false;
 	}
_______________________________________________
subsurface mailing list
subsurface@subsurface-divelog.org
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to