Closed ghost closed 3 years ago
I could not reproduce this on linux using this model. I tried running through valgrind as well and didn't turn up anything interesting. Could be related to #935.
I could not reproduce this on linux using this model.
Does this file opens successfully for You? (may show a screenshot)
@robnee, Could you try to open it with a Debian/Ubuntu DEB package from @AlexanderP's PPA:
JFTR, @AlexanderP, could you take a look on https://github.com/solvespace/solvespace/issues/893?
The file opens fine for me on Fedora 33 Linux. It is probably related to the other Debian crash, but I don't know what could be causing it. The Mimalloc stuff was for ARM, not intel, but they will have an update hopefully soon with several fixes we want.
I don't know what could be causing it.
@phkahler, FTR, SolveSpace failed only on this testcase .slvs
file actually. Here is backtrace:
Also tested to create other .slvs
file with just a simple cube — and SolveSpace reopens it successfully.
Weird, I don't even see SolveSpace in the backtrace, presumably it's some of the mystery entries and was build without symbols? Can you load the file to eg export to image, with SolveSpace cli? That would be a bit easier to step thru in a debugger if so.
was build without symbols?
Yep, @AlexanderP's PPA provide only DEB builds without debug symbols.
Can you load the file to eg export to image, with SolveSpace cli?
@rpavlik, What exact $ solvespace-cli <...>
command should I use for this?
Had to check, I responded from mobile last time. Any of the commands should work, really. I just used the built-in help. Something like this will work as long as there's supposed to be a solid in there:
solvespace-cli export-mesh --output %.stl yourfile.slvs
Something like this will work as long as there's supposed to be a solid in there:
I just updated to SolveSpace 3.0~
https://github.com/solvespace/solvespace/commit/10ca307d986ab0c52faaab4fcaedb26bd42d1fd6 and here are results (TL;DR: it still reproducible IF try open this SLVS via file chooser dialog)
$ solvespace *.slvs
(launch SolveSpace GUI with defined file on start) can read read this SLVS & open it: Successsolvespace-cli <command> <options> <filename> *.slvs
can read this SLVS & export it STL: SuccessBUT SolveSpace still failed if try to open this SLVS via file chooser dialog:
dealwithit-glasess.slvs
) and click Open button;Segmentation fault
)$ solvespace
SolveSpace!
(solvespace:30405): Gtk-WARNING **: 17:04:28.931: gtk_window_present_with_time() should not be called with 0, or GDK_CURRENT_TIME as a timestamp, the timestamp should instead be gathered at the time the user initiated the request for the window to be shown
Generate::REGEN (for bounding box) took 109 ms
Generate::REGEN took 227 ms
Generate::ALL (for bounding box) took 125 ms
bad, edge_inters=4
bad, edge_inters=4
bad, edge_inters=4
bad, edge_inters=4
bad, edge_inters=4
bad, edge_inters=4
Generate::ALL took 430 ms
Generate::DIRTY (for bounding box) took 83 ms
bad, edge_inters=4
bad, edge_inters=4
bad, edge_inters=4
bad, edge_inters=4
Generate::DIRTY took 215 ms
Segmentation fault
oh that's very interesting, so it is actually related to the file dialog somehow.
Do we know if gtkmm is > 3.24.0? i.e. using the native file chooser?
Do we know if gtkmm is
> 3.24.0
?
As I use Debian 10, I has gtkmm3.0 (3.24.0-2)
And actually only this SLVS file triggers segmentation fault — other SLVS files SolveSpace opens as expected.
NOTE: While $ solvespace *.slvs
still could be used for open this file in GUI mode, I already tried to re-save this file — BUT re-saved file also crashes SolveSpace to open this SLVS via file chooser dialog.
Thanks @AlexanderP for sending me solvespace-dbgsym_3.0.0~git1710-10ca307-1_*.deb
— for curious reasons, after install it now SolveSpace NOT fails on opening testcase file (i.e. dailysolvespace-20210309_1.slvs
)
BUT, I just tested to run it with gdb
and all seems work as expected (even opening testcase file via file chooser dialog), until I closed SolveSpace via "File > Exit" — is "Segmentation fault" on closing SolveSpace is expected?
Here is backtrace log with dbgsym
installed:
Hmm. So on a locally-built copy of SolveSpace, on Debian 10, latest master branch (3.0~0e0b0252) this loads fine through the GUI and file dialog, no crash. I have some stuff installed from backports but I'm reasonably sure nobody put gtkmm in backports, too intrusive... (and that's a pretty cool model)
Though, it does look like I have some sanitizers enabled still? Mostly new-delete-type-mismatch. Allocated and destroyed in a timer GTK thing, for most of them. Here's what look like the different unique variants:
==4046==ERROR: AddressSanitizer: new-delete-type-mismatch on 0x60600030fbc0 in thread T0:
object passed to delete has wrong type:
size of the allocated type: 56 bytes;
size of the deallocated type: 48 bytes.
#0 0x7ffff7283128 in operator delete(void*, unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xec128)
#1 0x5555560e352c in sigc::slot0<bool>::~slot0() /usr/include/sigc++-2.0/sigc++/functors/slot.h:515
#2 0x5555560e352c in sigc::slot<bool, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>::~slot() /usr/include/sigc++-2.0/sigc++/functors/slot.h:1761
#3 0x5555560e352c in SolveSpace::Platform::TimerImplGtk::RunAfter(unsigned int) ../src/platform/guigtk.cpp:225
#4 0x55555611675e in SolveSpace::GraphicsWindow::ClearSelection() ../src/draw.cpp:82
#5 0x555556350d08 in SolveSpace::GraphicsWindow::ClearSuper() ../src/graphicswin.cpp:1354
#6 0x555556609d80 in SolveSpace::TextWindow::ScreenActivateGroup(int, unsigned int) ../src/textscreens.cpp:71
#7 0x55555663386a in SolveSpace::TextWindow::MouseEvent(bool, bool, double, double) ../src/textwin.cpp:1120
#8 0x5555566340dd in operator() ../src/textwin.cpp:249
#9 0x5555566340dd in _M_invoke /usr/include/c++/8/bits/std_function.h:282
#10 0x5555560ef7c0 in std::function<bool (SolveSpace::Platform::MouseEvent)>::operator()(SolveSpace::Platform::MouseEvent) const /usr/include/c++/8/bits/std_function.h:687
#11 0x5555560ef7c0 in SolveSpace::Platform::GtkGLWidget::process_pointer_event(SolveSpace::Platform::MouseEvent::Type, double, double, unsigned int, unsigned int, double) ../src/platform/guigtk.cpp:503
#12 0x5555560eff84 in SolveSpace::Platform::GtkGLWidget::on_button_press_event(_GdkEventButton*) ../src/platform/guigtk.cpp:527
#13 0x7ffff6da2a83 in Gtk::Widget_Class::button_press_event_callback(_GtkWidget*, _GdkEventButton*) (/usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1+0x3d7a83)
#14 0x7ffff65f5273 in _gtk_marshal_BOOLEAN__BOXEDv ../../../../gtk/gtkmarshalers.c:129
#15 0x7ffff6025ec5 in _g_closure_invoke_va ../../../gobject/gclosure.c:873
#16 0x7ffff6041d73 in g_signal_emit_valist ../../../gobject/gsignal.c:3300
#17 0x7ffff604297e in g_signal_emit ../../../gobject/gsignal.c:3447
#18 0x7ffff65a3323 in gtk_widget_event_internal ../../../../gtk/gtkwidget.c:7744
#19 0x7ffff6463975 in propagate_event_up ../../../../gtk/gtkmain.c:2592
#20 0x7ffff6463975 in propagate_event ../../../../gtk/gtkmain.c:2695
#21 0x7ffff6465a82 in gtk_main_do_event ../../../../gtk/gtkmain.c:1915
#22 0x7ffff6465a82 in gtk_main_do_event ../../../../gtk/gtkmain.c:1685
#23 0x7ffff6167464 in _gdk_event_emit ../../../../gdk/gdkevents.c:73
#24 0x7ffff6198111 in gdk_event_source_dispatch ../../../../../gdk/x11/gdkeventsource.c:367
#25 0x7ffff5f41f2d in g_main_dispatch ../../../glib/gmain.c:3182
#26 0x7ffff5f41f2d in g_main_context_dispatch ../../../glib/gmain.c:3847
#27 0x7ffff5f421c7 in g_main_context_iterate ../../../glib/gmain.c:3920
#28 0x7ffff5f424c1 in g_main_loop_run ../../../glib/gmain.c:4116
#29 0x7ffff6464b14 in gtk_main ../../../../gtk/gtkmain.c:1323
#30 0x55555601d576 in main ../src/platform/entrygui.cpp:27
#31 0x7ffff4b8a09a in __libc_start_main ../csu/libc-start.c:308
#32 0x55555602d0f9 in _start (/home/ryan/src/third-party/solvespace/build/bin/solvespace+0xad90f9)
0x60600030fbc0 is located 0 bytes inside of 56-byte region [0x60600030fbc0,0x60600030fbf8)
allocated by thread T0 here:
#0 0x7ffff7281d30 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xead30)
#1 0x5555560e3312 in sigc::slot0<bool>::slot0<SolveSpace::Platform::TimerImplGtk::RunAfter(unsigned int)::{lambda()#1}>(SolveSpace::Platform::TimerImplGtk::RunAfter(unsigned int)::{lambda()#1} const&) /usr/include/sigc++-2.0/sigc++/functors/slot.h:546
#2 0x5555560e3312 in sigc::slot<bool, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>::slot<SolveSpace::Platform::TimerImplGtk::RunAfter(unsigned int)::{lambda()#1}>(SolveSpace::Platform::TimerImplGtk::RunAfter(unsigned int)::{lambda()#1} const&) /usr/include/sigc++-2.0/sigc++/functors/slot.h:1774
#3 0x5555560e3312 in SolveSpace::Platform::TimerImplGtk::RunAfter(unsigned int) ../src/platform/guigtk.cpp:225
SUMMARY: AddressSanitizer: new-delete-type-mismatch (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xec128) in operator delete(void*, unsigned long)
==4046==HINT: if you don't care about these errors you may set ASAN_OPTIONS=new_delete_type_mismatch=0
bad, edge_inters=4
bad, edge_inters=4
bad, edge_inters=4
bad, edge_inters=4
Generate::DIRTY took 45 ms
=================================================================
==4046==ERROR: AddressSanitizer: new-delete-type-mismatch on 0x606000580640 in thread T0:
object passed to delete has wrong type:
size of the allocated type: 56 bytes;
size of the deallocated type: 48 bytes.
#0 0x7ffff7283128 in operator delete(void*, unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xec128)
#1 0x7ffff60cdce0 in ~SourceConnectionNode glib/glibmm/main.cc:65
#2 0x7ffff60cdce0 in destroy_notify_callback glib/glibmm/main.cc:118
#3 0x7ffff5f3e7e2 in g_source_callback_unref ../../../glib/gmain.c:1551
#4 0x7ffff5f3e7e2 in g_source_callback_unref ../../../glib/gmain.c:1544
#5 0x7ffff5f3f20d in g_source_destroy_internal ../../../glib/gmain.c:1236
#6 0x7ffff5f41e67 in g_main_dispatch ../../../glib/gmain.c:3206
#7 0x7ffff5f41e67 in g_main_context_dispatch ../../../glib/gmain.c:3847
#8 0x7ffff5f421c7 in g_main_context_iterate ../../../glib/gmain.c:3920
#9 0x7ffff5f424c1 in g_main_loop_run ../../../glib/gmain.c:4116
#10 0x7ffff6464b14 in gtk_main ../../../../gtk/gtkmain.c:1323
#11 0x55555601d576 in main ../src/platform/entrygui.cpp:27
#12 0x7ffff4b8a09a in __libc_start_main ../csu/libc-start.c:308
#13 0x55555602d0f9 in _start (/home/ryan/src/third-party/solvespace/build/bin/solvespace+0xad90f9)
0x606000580640 is located 0 bytes inside of 56-byte region [0x606000580640,0x606000580678)
allocated by thread T0 here:
#0 0x7ffff7281d30 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xead30)
#1 0x5555560de26d in sigc::internal::typed_slot_rep<SolveSpace::Platform::TimerImplGtk::RunAfter(unsigned int)::{lambda()#1}>::dup(void*) /usr/include/sigc++-2.0/sigc++/functors/slot.h:111
#2 0x555556b810af (/home/ryan/src/third-party/solvespace/build/bin/solvespace+0x162d0af)
SUMMARY: AddressSanitizer: new-delete-type-mismatch (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xec128) in operator delete(void*, unsigned long)
==4046==HINT: if you don't care about these errors you may set ASAN_OPTIONS=new_delete_type_mismatch=0
=================================================================
==4046==ERROR: AddressSanitizer: new-delete-type-mismatch on 0x60600030c4a0 in thread T0:
object passed to delete has wrong type:
size of the allocated type: 56 bytes;
size of the deallocated type: 48 bytes.
#0 0x7ffff7283128 in operator delete(void*, unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xec128)
#1 0x7ffff60cdce0 in ~SourceConnectionNode glib/glibmm/main.cc:65
#2 0x7ffff60cdce0 in destroy_notify_callback glib/glibmm/main.cc:118
#3 0x7ffff5f3e7e2 in g_source_callback_unref ../../../glib/gmain.c:1551
#4 0x7ffff5f3e7e2 in g_source_callback_unref ../../../glib/gmain.c:1544
#5 0x7ffff5f3f20d in g_source_destroy_internal ../../../glib/gmain.c:1236
#6 0x7ffff5f41e67 in g_main_dispatch ../../../glib/gmain.c:3206
#7 0x7ffff5f41e67 in g_main_context_dispatch ../../../glib/gmain.c:3847
#8 0x7ffff5f421c7 in g_main_context_iterate ../../../glib/gmain.c:3920
#9 0x7ffff5f424c1 in g_main_loop_run ../../../glib/gmain.c:4116
#10 0x7ffff6464b14 in gtk_main ../../../../gtk/gtkmain.c:1323
#11 0x55555601d576 in main ../src/platform/entrygui.cpp:27
#12 0x7ffff4b8a09a in __libc_start_main ../csu/libc-start.c:308
#13 0x55555602d0f9 in _start (/home/ryan/src/third-party/solvespace/build/bin/solvespace+0xad90f9)
0x60600030c4a0 is located 0 bytes inside of 56-byte region [0x60600030c4a0,0x60600030c4d8)
allocated by thread T0 here:
#0 0x7ffff7281d30 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xead30)
#1 0x5555560de26d in sigc::internal::typed_slot_rep<SolveSpace::Platform::TimerImplGtk::RunAfter(unsigned int)::{lambda()#1}>::dup(void*) /usr/include/sigc++-2.0/sigc++/functors/slot.h:111
#2 0x555556b810af (/home/ryan/src/third-party/solvespace/build/bin/solvespace+0x162d0af)
SUMMARY: AddressSanitizer: new-delete-type-mismatch (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xec128) in operator delete(void*, unsigned long)
==4046==HINT: if you don't care about these errors you may set ASAN_OPTIONS=new_delete_type_mismatch=0
=================================================================
==4046==ERROR: AddressSanitizer: new-delete-type-mismatch on 0x6080000405a0 in thread T0:
object passed to delete has wrong type:
size of the allocated type: 88 bytes;
size of the deallocated type: 48 bytes.
#0 0x7ffff7283128 in operator delete(void*, unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xec128)
#1 0x7ffff60d3139 in Glib::SignalProxyConnectionNode::~SignalProxyConnectionNode() ../glibmm/signalproxy_connectionnode.h:39
#2 0x7ffff60d3139 in Glib::SignalProxyConnectionNode::destroy_notify_handler(void*, _GClosure*) glib/glibmm/signalproxy_connectionnode.cc:96
#3 0x7ffff60253c3 in closure_invoke_notifiers ../../../gobject/gclosure.c:263
#4 0x7ffff60253c3 in g_closure_unref ../../../gobject/gclosure.c:615
#5 0x7ffff60253c3 in g_closure_unref ../../../gobject/gclosure.c:601
#6 0x7ffff60402e3 in handler_unref_R ../../../gobject/gsignal.c:700
#7 0x7ffff60402e3 in g_signal_handlers_destroy ../../../gobject/gsignal.c:2714
#8 0x7ffff602a3ec in g_object_real_dispose ../../../gobject/gobject.c:1054
#9 0x7ffff602adb2 in g_object_unref ../../../gobject/gobject.c:3309
#10 0x7ffff602adb2 in g_object_unref ../../../gobject/gobject.c:3238
#11 0x7ffff64c2340 in gtk_range_destroy ../../../../gtk/gtkrange.c:1781
#12 0x7ffff6025c8c in g_closure_invoke ../../../gobject/gclosure.c:810
#13 0x7ffff6039675 in signal_emit_unlocked_R ../../../gobject/gsignal.c:3751
#14 0x7ffff60422bd in g_signal_emit_valist ../../../gobject/gsignal.c:3391
#15 0x7ffff604297e in g_signal_emit ../../../gobject/gsignal.c:3447
#16 0x7ffff65ac30b in gtk_widget_dispose ../../../../gtk/gtkwidget.c:12098
#17 0x7ffff602c5f7 in g_object_run_dispose ../../../gobject/gobject.c:1108
#18 0x7ffff6dd0ec7 in Gtk::Object::_release_c_instance() (/usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1+0x405ec7)
#19 0x7ffff6dbf266 in Gtk::VScrollbar::~VScrollbar() (/usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1+0x3f4266)
#20 0x55555610b99a in SolveSpace::Platform::GtkWindow::~GtkWindow() ../src/platform/guigtk.cpp:733
#21 0x55555610ceba in SolveSpace::Platform::WindowImplGtk::~WindowImplGtk() ../src/platform/guigtk.cpp:853
#22 0x55555610ceba in void __gnu_cxx::new_allocator<SolveSpace::Platform::WindowImplGtk>::destroy<SolveSpace::Platform::WindowImplGtk>(SolveSpace::Platform::WindowImplGtk*) /usr/include/c++/8/ext/new_allocator.h:140
#23 0x55555610ceba in void std::allocator_traits<std::allocator<SolveSpace::Platform::WindowImplGtk> >::destroy<SolveSpace::Platform::WindowImplGtk>(std::allocator<SolveSpace::Platform::WindowImplGtk>&, SolveSpace::Platform::WindowImplGtk*) /usr/include/c++/8/bits/alloc_traits.h:487
#24 0x55555610ceba in std::_Sp_counted_ptr_inplace<SolveSpace::Platform::WindowImplGtk, std::allocator<SolveSpace::Platform::WindowImplGtk>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/include/c++/8/bits/shared_ptr_base.h:554
#25 0x555556060b44 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/8/bits/shared_ptr_base.h:155
#26 0x555556060b44 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/8/bits/shared_ptr_base.h:148
#27 0x55555603538f in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() /usr/include/c++/8/bits/shared_ptr_base.h:728
#28 0x55555603538f in std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() /usr/include/c++/8/bits/shared_ptr_base.h:1167
#29 0x55555603538f in std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>&&) /usr/include/c++/8/bits/shared_ptr_base.h:1263
#30 0x55555603538f in std::shared_ptr<SolveSpace::Platform::Window>::operator=(std::shared_ptr<SolveSpace::Platform::Window>&&) /usr/include/c++/8/bits/shared_ptr.h:335
#31 0x55555603538f in SolveSpace::SolveSpaceUI::Clear() ../src/solvespace.cpp:1023
#32 0x55555601d587 in main ../src/platform/entrygui.cpp:30
#33 0x7ffff4b8a09a in __libc_start_main ../csu/libc-start.c:308
#34 0x55555602d0f9 in _start (/home/ryan/src/third-party/solvespace/build/bin/solvespace+0xad90f9)
0x6080000405a0 is located 0 bytes inside of 88-byte region [0x6080000405a0,0x6080000405f8)
allocated by thread T0 here:
#0 0x7ffff7281d30 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xead30)
#1 0x5555561099e8 in sigc::slot0<void>::slot0<sigc::bound_mem_functor0<void, SolveSpace::Platform::GtkWindow> >(sigc::bound_mem_functor0<void, SolveSpace::Platform::GtkWindow> const&) /usr/include/sigc++-2.0/sigc++/functors/slot.h:546
#2 0x5555561099e8 in sigc::slot<void, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>::slot<sigc::bound_mem_functor0<void, SolveSpace::Platform::GtkWindow> >(sigc::bound_mem_functor0<void, SolveSpace::Platform::GtkWindow> const&) /usr/include/sigc++-2.0/sigc++/functors/slot.h:1774
#3 0x5555561099e8 in SolveSpace::Platform::GtkWindow::GtkWindow(SolveSpace::Platform::Window*) ../src/platform/guigtk.cpp:758
#4 0x6190003d6d8f (<unknown module>)
SUMMARY: AddressSanitizer: new-delete-type-mismatch (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xec128) in operator delete(void*, unsigned long)
==4046==HINT: if you don't care about these errors you may set ASAN_OPTIONS=new_delete_type_mismatch=0
=================================================================
==4046==ERROR: AddressSanitizer: new-delete-type-mismatch on 0x608000040520 in thread T0:
object passed to delete has wrong type:
size of the allocated type: 88 bytes;
size of the deallocated type: 48 bytes.
#0 0x7ffff7283128 in operator delete(void*, unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xec128)
#1 0x7ffff60d3139 in Glib::SignalProxyConnectionNode::~SignalProxyConnectionNode() ../glibmm/signalproxy_connectionnode.h:39
#2 0x7ffff60d3139 in Glib::SignalProxyConnectionNode::destroy_notify_handler(void*, _GClosure*) glib/glibmm/signalproxy_connectionnode.cc:96
#3 0x7ffff60253c3 in closure_invoke_notifiers ../../../gobject/gclosure.c:263
#4 0x7ffff60253c3 in g_closure_unref ../../../gobject/gclosure.c:615
#5 0x7ffff60253c3 in g_closure_unref ../../../gobject/gclosure.c:601
#6 0x7ffff60402e3 in handler_unref_R ../../../gobject/gsignal.c:700
#7 0x7ffff60402e3 in g_signal_handlers_destroy ../../../gobject/gsignal.c:2714
#8 0x7ffff602a3ec in g_object_real_dispose ../../../gobject/gobject.c:1054
#9 0x7ffff602c5f7 in g_object_run_dispose ../../../gobject/gobject.c:1108
#10 0x7ffff6dd0ec7 in Gtk::Object::_release_c_instance() (/usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1+0x405ec7)
#11 0x7ffff6d14cc1 in Gtk::Entry::~Entry() (/usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1+0x349cc1)
#12 0x55555610ba83 in SolveSpace::Platform::GtkEditorOverlay::~GtkEditorOverlay() ../src/platform/guigtk.cpp:615
#13 0x55555610ba83 in SolveSpace::Platform::GtkWindow::~GtkWindow() ../src/platform/guigtk.cpp:733
#14 0x55555610ceba in SolveSpace::Platform::WindowImplGtk::~WindowImplGtk() ../src/platform/guigtk.cpp:853
#15 0x55555610ceba in void __gnu_cxx::new_allocator<SolveSpace::Platform::WindowImplGtk>::destroy<SolveSpace::Platform::WindowImplGtk>(SolveSpace::Platform::WindowImplGtk*) /usr/include/c++/8/ext/new_allocator.h:140
#16 0x55555610ceba in void std::allocator_traits<std::allocator<SolveSpace::Platform::WindowImplGtk> >::destroy<SolveSpace::Platform::WindowImplGtk>(std::allocator<SolveSpace::Platform::WindowImplGtk>&, SolveSpace::Platform::WindowImplGtk*) /usr/include/c++/8/bits/alloc_traits.h:487
#17 0x55555610ceba in std::_Sp_counted_ptr_inplace<SolveSpace::Platform::WindowImplGtk, std::allocator<SolveSpace::Platform::WindowImplGtk>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/include/c++/8/bits/shared_ptr_base.h:554
#18 0x555556060b44 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/8/bits/shared_ptr_base.h:155
#19 0x555556060b44 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/8/bits/shared_ptr_base.h:148
#20 0x55555603538f in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() /usr/include/c++/8/bits/shared_ptr_base.h:728
#21 0x55555603538f in std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() /usr/include/c++/8/bits/shared_ptr_base.h:1167
#22 0x55555603538f in std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>&&) /usr/include/c++/8/bits/shared_ptr_base.h:1263
#23 0x55555603538f in std::shared_ptr<SolveSpace::Platform::Window>::operator=(std::shared_ptr<SolveSpace::Platform::Window>&&) /usr/include/c++/8/bits/shared_ptr.h:335
#24 0x55555603538f in SolveSpace::SolveSpaceUI::Clear() ../src/solvespace.cpp:1023
#25 0x55555601d587 in main ../src/platform/entrygui.cpp:30
#26 0x7ffff4b8a09a in __libc_start_main ../csu/libc-start.c:308
#27 0x55555602d0f9 in _start (/home/ryan/src/third-party/solvespace/build/bin/solvespace+0xad90f9)
0x608000040520 is located 0 bytes inside of 88-byte region [0x608000040520,0x608000040578)
allocated by thread T0 here:
#0 0x7ffff7281d30 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xead30)
#1 0x5555561092f5 in sigc::slot0<void>::slot0<sigc::bound_mem_functor0<void, SolveSpace::Platform::GtkEditorOverlay> >(sigc::bound_mem_functor0<void, SolveSpace::Platform::GtkEditorOverlay> const&) /usr/include/sigc++-2.0/sigc++/functors/slot.h:546
#2 0x5555561092f5 in sigc::slot<void, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>::slot<sigc::bound_mem_functor0<void, SolveSpace::Platform::GtkEditorOverlay> >(sigc::bound_mem_functor0<void, SolveSpace::Platform::GtkEditorOverlay> const&) /usr/include/sigc++-2.0/sigc++/functors/slot.h:1774
#3 0x5555561092f5 in SolveSpace::Platform::GtkEditorOverlay::GtkEditorOverlay(SolveSpace::Platform::Window*) ../src/platform/guigtk.cpp:629
#4 0x5555561092f5 in SolveSpace::Platform::GtkWindow::GtkWindow(SolveSpace::Platform::Window*) ../src/platform/guigtk.cpp:746
#5 0x6190003d6d8f (<unknown module>)
SUMMARY: AddressSanitizer: new-delete-type-mismatch (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xec128) in operator delete(void*, unsigned long)
==4046==HINT: if you don't care about these errors you may set ASAN_OPTIONS=new_delete_type_mismatch=0
=================================================================
==4046==ERROR: AddressSanitizer: new-delete-type-mismatch on 0x608000040620 in thread T0:
object passed to delete has wrong type:
size of the allocated type: 88 bytes;
size of the deallocated type: 48 bytes.
#0 0x7ffff7283128 in operator delete(void*, unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xec128)
#1 0x7ffff60d3139 in Glib::SignalProxyConnectionNode::~SignalProxyConnectionNode() ../glibmm/signalproxy_connectionnode.h:39
#2 0x7ffff60d3139 in Glib::SignalProxyConnectionNode::destroy_notify_handler(void*, _GClosure*) glib/glibmm/signalproxy_connectionnode.cc:96
#3 0x7ffff60253c3 in closure_invoke_notifiers ../../../gobject/gclosure.c:263
#4 0x7ffff60253c3 in g_closure_unref ../../../gobject/gclosure.c:615
#5 0x7ffff60253c3 in g_closure_unref ../../../gobject/gclosure.c:601
#6 0x7ffff60402e3 in handler_unref_R ../../../gobject/gsignal.c:700
#7 0x7ffff60402e3 in g_signal_handlers_destroy ../../../gobject/gsignal.c:2714
#8 0x7ffff602a3ec in g_object_real_dispose ../../../gobject/gobject.c:1054
#9 0x7ffff602c5f7 in g_object_run_dispose ../../../gobject/gobject.c:1108
#10 0x7ffff6dd0ec7 in Gtk::Object::_release_c_instance() (/usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1+0x405ec7)
#11 0x7ffff6d2ecbb in Gtk::GLArea::~GLArea() (/usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1+0x363cbb)
#12 0x55555610bb59 in SolveSpace::Platform::GtkGLWidget::~GtkGLWidget() ../src/platform/guigtk.cpp:448
#13 0x55555610bb59 in SolveSpace::Platform::GtkEditorOverlay::~GtkEditorOverlay() ../src/platform/guigtk.cpp:615
#14 0x55555610bb59 in SolveSpace::Platform::GtkWindow::~GtkWindow() ../src/platform/guigtk.cpp:733
#15 0x55555610ceba in SolveSpace::Platform::WindowImplGtk::~WindowImplGtk() ../src/platform/guigtk.cpp:853
#16 0x55555610ceba in void __gnu_cxx::new_allocator<SolveSpace::Platform::WindowImplGtk>::destroy<SolveSpace::Platform::WindowImplGtk>(SolveSpace::Platform::WindowImplGtk*) /usr/include/c++/8/ext/new_allocator.h:140
#17 0x55555610ceba in void std::allocator_traits<std::allocator<SolveSpace::Platform::WindowImplGtk> >::destroy<SolveSpace::Platform::WindowImplGtk>(std::allocator<SolveSpace::Platform::WindowImplGtk>&, SolveSpace::Platform::WindowImplGtk*) /usr/include/c++/8/bits/alloc_traits.h:487
#18 0x55555610ceba in std::_Sp_counted_ptr_inplace<SolveSpace::Platform::WindowImplGtk, std::allocator<SolveSpace::Platform::WindowImplGtk>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/include/c++/8/bits/shared_ptr_base.h:554
#19 0x555556060b44 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/8/bits/shared_ptr_base.h:155
#20 0x555556060b44 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/8/bits/shared_ptr_base.h:148
#21 0x55555603538f in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() /usr/include/c++/8/bits/shared_ptr_base.h:728
#22 0x55555603538f in std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() /usr/include/c++/8/bits/shared_ptr_base.h:1167
#23 0x55555603538f in std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>&&) /usr/include/c++/8/bits/shared_ptr_base.h:1263
#24 0x55555603538f in std::shared_ptr<SolveSpace::Platform::Window>::operator=(std::shared_ptr<SolveSpace::Platform::Window>&&) /usr/include/c++/8/bits/shared_ptr.h:335
#25 0x55555603538f in SolveSpace::SolveSpaceUI::Clear() ../src/solvespace.cpp:1023
#26 0x55555601d587 in main ../src/platform/entrygui.cpp:30
#27 0x7ffff4b8a09a in __libc_start_main ../csu/libc-start.c:308
#28 0x55555602d0f9 in _start (/home/ryan/src/third-party/solvespace/build/bin/solvespace+0xad90f9)
0x608000040620 is located 0 bytes inside of 88-byte region [0x608000040620,0x608000040678)
allocated by thread T0 here:
#0 0x7ffff7281d30 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xead30)
#1 0x555556109f53 in sigc::slot4<bool, int, int, bool, Glib::RefPtr<Gtk::Tooltip> const&>::slot4<sigc::bound_mem_functor4<bool, SolveSpace::Platform::GtkWindow, int, int, bool, Glib::RefPtr<Gtk::Tooltip> const&> >(sigc::bound_mem_functor4<bool, SolveSpace::Platform::GtkWindow, int, int, bool, Glib::RefPtr<Gtk::Tooltip> const&> const&) /usr/include/sigc++-2.0/sigc++/functors/slot.h:1084
#2 0x555556109f53 in sigc::slot<bool, int, int, bool, Glib::RefPtr<Gtk::Tooltip> const&, sigc::nil, sigc::nil, sigc::nil>::slot<sigc::bound_mem_functor4<bool, SolveSpace::Platform::GtkWindow, int, int, bool, Glib::RefPtr<Gtk::Tooltip> const&> >(sigc::bound_mem_functor4<bool, SolveSpace::Platform::GtkWindow, int, int, bool, Glib::RefPtr<Gtk::Tooltip> const&> const&) /usr/include/sigc++-2.0/sigc++/functors/slot.h:2050
#3 0x555556109f53 in SolveSpace::Platform::GtkWindow::GtkWindow(SolveSpace::Platform::Window*) ../src/platform/guigtk.cpp:762
#4 0x6190003d6d8f (<unknown module>)
SUMMARY: AddressSanitizer: new-delete-type-mismatch (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xec128) in operator delete(void*, unsigned long)
==4046==HINT: if you don't care about these errors you may set ASAN_OPTIONS=new_delete_type_mismatch=0
=================================================================
==4046==ERROR: AddressSanitizer: new-delete-type-mismatch on 0x6080000376a0 in thread T0:
object passed to delete has wrong type:
size of the allocated type: 88 bytes;
size of the deallocated type: 48 bytes.
#0 0x7ffff7283128 in operator delete(void*, unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xec128)
#1 0x7ffff60d3139 in Glib::SignalProxyConnectionNode::~SignalProxyConnectionNode() ../glibmm/signalproxy_connectionnode.h:39
#2 0x7ffff60d3139 in Glib::SignalProxyConnectionNode::destroy_notify_handler(void*, _GClosure*) glib/glibmm/signalproxy_connectionnode.cc:96
#3 0x7ffff60253c3 in closure_invoke_notifiers ../../../gobject/gclosure.c:263
#4 0x7ffff60253c3 in g_closure_unref ../../../gobject/gclosure.c:615
#5 0x7ffff60253c3 in g_closure_unref ../../../gobject/gclosure.c:601
#6 0x7ffff60402e3 in handler_unref_R ../../../gobject/gsignal.c:700
#7 0x7ffff60402e3 in g_signal_handlers_destroy ../../../gobject/gsignal.c:2714
#8 0x7ffff602a3ec in g_object_real_dispose ../../../gobject/gobject.c:1054
#9 0x7ffff602c5f7 in g_object_run_dispose ../../../gobject/gobject.c:1108
#10 0x7ffff6dd0ec7 in Gtk::Object::_release_c_instance() (/usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1+0x405ec7)
#11 0x7ffff6d4415b in Gtk::MenuBar::~MenuBar() (/usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1+0x37915b)
#12 0x55555610d7a0 in SolveSpace::Platform::MenuBarImplGtk::~MenuBarImplGtk() ../src/platform/guigtk.cpp:414
#13 0x55555610d7a0 in void __gnu_cxx::new_allocator<SolveSpace::Platform::MenuBarImplGtk>::destroy<SolveSpace::Platform::MenuBarImplGtk>(SolveSpace::Platform::MenuBarImplGtk*) /usr/include/c++/8/ext/new_allocator.h:140
#14 0x55555610d7a0 in void std::allocator_traits<std::allocator<SolveSpace::Platform::MenuBarImplGtk> >::destroy<SolveSpace::Platform::MenuBarImplGtk>(std::allocator<SolveSpace::Platform::MenuBarImplGtk>&, SolveSpace::Platform::MenuBarImplGtk*) /usr/include/c++/8/bits/alloc_traits.h:487
#15 0x55555610d7a0 in std::_Sp_counted_ptr_inplace<SolveSpace::Platform::MenuBarImplGtk, std::allocator<SolveSpace::Platform::MenuBarImplGtk>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/include/c++/8/bits/shared_ptr_base.h:554
#16 0x555556060b44 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/8/bits/shared_ptr_base.h:155
#17 0x555556060b44 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/8/bits/shared_ptr_base.h:148
#18 0x55555610cea4 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() /usr/include/c++/8/bits/shared_ptr_base.h:728
#19 0x55555610cea4 in std::__shared_ptr<SolveSpace::Platform::MenuBar, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() /usr/include/c++/8/bits/shared_ptr_base.h:1167
#20 0x55555610cea4 in std::shared_ptr<SolveSpace::Platform::MenuBar>::~shared_ptr() /usr/include/c++/8/bits/shared_ptr.h:103
#21 0x55555610cea4 in SolveSpace::Platform::WindowImplGtk::~WindowImplGtk() ../src/platform/guigtk.cpp:853
#22 0x55555610cea4 in void __gnu_cxx::new_allocator<SolveSpace::Platform::WindowImplGtk>::destroy<SolveSpace::Platform::WindowImplGtk>(SolveSpace::Platform::WindowImplGtk*) /usr/include/c++/8/ext/new_allocator.h:140
#23 0x55555610cea4 in void std::allocator_traits<std::allocator<SolveSpace::Platform::WindowImplGtk> >::destroy<SolveSpace::Platform::WindowImplGtk>(std::allocator<SolveSpace::Platform::WindowImplGtk>&, SolveSpace::Platform::WindowImplGtk*) /usr/include/c++/8/bits/alloc_traits.h:487
#24 0x55555610cea4 in std::_Sp_counted_ptr_inplace<SolveSpace::Platform::WindowImplGtk, std::allocator<SolveSpace::Platform::WindowImplGtk>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/include/c++/8/bits/shared_ptr_base.h:554
#25 0x555556060b44 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/8/bits/shared_ptr_base.h:155
#26 0x555556060b44 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/8/bits/shared_ptr_base.h:148
#27 0x555556037573 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() /usr/include/c++/8/bits/shared_ptr_base.h:728
#28 0x555556037573 in std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() /usr/include/c++/8/bits/shared_ptr_base.h:1167
#29 0x555556037573 in std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>&&) /usr/include/c++/8/bits/shared_ptr_base.h:1263
#30 0x555556037573 in std::shared_ptr<SolveSpace::Platform::Window>::operator=(std::shared_ptr<SolveSpace::Platform::Window>&&) /usr/include/c++/8/bits/shared_ptr.h:335
#31 0x555556037573 in SolveSpace::SolveSpaceUI::Clear() ../src/solvespace.cpp:1039
#32 0x55555601d587 in main ../src/platform/entrygui.cpp:30
#33 0x7ffff4b8a09a in __libc_start_main ../csu/libc-start.c:308
#34 0x55555602d0f9 in _start (/home/ryan/src/third-party/solvespace/build/bin/solvespace+0xad90f9)
0x6080000376a0 is located 0 bytes inside of 88-byte region [0x6080000376a0,0x6080000376f8)
allocated by thread T0 here:
#0 0x7ffff7281d30 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xead30)
#1 0x7ffff6d4458b in Gtk::MenuBar::MenuBar() (/usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1+0x37958b)
SUMMARY: AddressSanitizer: new-delete-type-mismatch (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xec128) in operator delete(void*, unsigned long)
==4046==HINT: if you don't care about these errors you may set ASAN_OPTIONS=new_delete_type_mismatch=0
=================================================================
==4046==ERROR: AddressSanitizer: new-delete-type-mismatch on 0x6080000372a0 in thread T0:
object passed to delete has wrong type:
size of the allocated type: 88 bytes;
size of the deallocated type: 48 bytes.
#0 0x7ffff7283128 in operator delete(void*, unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xec128)
#1 0x7ffff60d3139 in Glib::SignalProxyConnectionNode::~SignalProxyConnectionNode() ../glibmm/signalproxy_connectionnode.h:39
#2 0x7ffff60d3139 in Glib::SignalProxyConnectionNode::destroy_notify_handler(void*, _GClosure*) glib/glibmm/signalproxy_connectionnode.cc:96
#3 0x7ffff60253c3 in closure_invoke_notifiers ../../../gobject/gclosure.c:263
#4 0x7ffff60253c3 in g_closure_unref ../../../gobject/gclosure.c:615
#5 0x7ffff60253c3 in g_closure_unref ../../../gobject/gclosure.c:601
#6 0x7ffff60402e3 in handler_unref_R ../../../gobject/gsignal.c:700
#7 0x7ffff60402e3 in g_signal_handlers_destroy ../../../gobject/gsignal.c:2714
#8 0x7ffff602a3ec in g_object_real_dispose ../../../gobject/gobject.c:1054
#9 0x7ffff602adb2 in g_object_unref ../../../gobject/gobject.c:3309
#10 0x7ffff602adb2 in g_object_unref ../../../gobject/gobject.c:3238
#11 0x7ffff64c2340 in gtk_range_destroy ../../../../gtk/gtkrange.c:1781
#12 0x7ffff6025c8c in g_closure_invoke ../../../gobject/gclosure.c:810
#13 0x7ffff6039675 in signal_emit_unlocked_R ../../../gobject/gsignal.c:3751
#14 0x7ffff60422bd in g_signal_emit_valist ../../../gobject/gsignal.c:3391
#15 0x7ffff604297e in g_signal_emit ../../../gobject/gsignal.c:3447
#16 0x7ffff65ac30b in gtk_widget_dispose ../../../../gtk/gtkwidget.c:12098
#17 0x7ffff602c5f7 in g_object_run_dispose ../../../gobject/gobject.c:1108
#18 0x7ffff6dd0ec7 in Gtk::Object::_release_c_instance() (/usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1+0x405ec7)
#19 0x7ffff6dbf266 in Gtk::VScrollbar::~VScrollbar() (/usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1+0x3f4266)
#20 0x55555610b99a in SolveSpace::Platform::GtkWindow::~GtkWindow() ../src/platform/guigtk.cpp:733
#21 0x55555610ceba in SolveSpace::Platform::WindowImplGtk::~WindowImplGtk() ../src/platform/guigtk.cpp:853
#22 0x55555610ceba in void __gnu_cxx::new_allocator<SolveSpace::Platform::WindowImplGtk>::destroy<SolveSpace::Platform::WindowImplGtk>(SolveSpace::Platform::WindowImplGtk*) /usr/include/c++/8/ext/new_allocator.h:140
#23 0x55555610ceba in void std::allocator_traits<std::allocator<SolveSpace::Platform::WindowImplGtk> >::destroy<SolveSpace::Platform::WindowImplGtk>(std::allocator<SolveSpace::Platform::WindowImplGtk>&, SolveSpace::Platform::WindowImplGtk*) /usr/include/c++/8/bits/alloc_traits.h:487
#24 0x55555610ceba in std::_Sp_counted_ptr_inplace<SolveSpace::Platform::WindowImplGtk, std::allocator<SolveSpace::Platform::WindowImplGtk>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/include/c++/8/bits/shared_ptr_base.h:554
#25 0x555556060b44 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/8/bits/shared_ptr_base.h:155
#26 0x555556060b44 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/8/bits/shared_ptr_base.h:148
#27 0x555556037573 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() /usr/include/c++/8/bits/shared_ptr_base.h:728
#28 0x555556037573 in std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() /usr/include/c++/8/bits/shared_ptr_base.h:1167
#29 0x555556037573 in std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>&&) /usr/include/c++/8/bits/shared_ptr_base.h:1263
#30 0x555556037573 in std::shared_ptr<SolveSpace::Platform::Window>::operator=(std::shared_ptr<SolveSpace::Platform::Window>&&) /usr/include/c++/8/bits/shared_ptr.h:335
#31 0x555556037573 in SolveSpace::SolveSpaceUI::Clear() ../src/solvespace.cpp:1039
#32 0x55555601d587 in main ../src/platform/entrygui.cpp:30
#33 0x7ffff4b8a09a in __libc_start_main ../csu/libc-start.c:308
#34 0x55555602d0f9 in _start (/home/ryan/src/third-party/solvespace/build/bin/solvespace+0xad90f9)
0x6080000372a0 is located 0 bytes inside of 88-byte region [0x6080000372a0,0x6080000372f8)
allocated by thread T0 here:
#0 0x7ffff7281d30 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xead30)
#1 0x5555561099e8 in sigc::slot0<void>::slot0<sigc::bound_mem_functor0<void, SolveSpace::Platform::GtkWindow> >(sigc::bound_mem_functor0<void, SolveSpace::Platform::GtkWindow> const&) /usr/include/sigc++-2.0/sigc++/functors/slot.h:546
#2 0x5555561099e8 in sigc::slot<void, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>::slot<sigc::bound_mem_functor0<void, SolveSpace::Platform::GtkWindow> >(sigc::bound_mem_functor0<void, SolveSpace::Platform::GtkWindow> const&) /usr/include/sigc++-2.0/sigc++/functors/slot.h:1774
#3 0x5555561099e8 in SolveSpace::Platform::GtkWindow::GtkWindow(SolveSpace::Platform::Window*) ../src/platform/guigtk.cpp:758
#4 0x61900037ff8f (<unknown module>)
SUMMARY: AddressSanitizer: new-delete-type-mismatch (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xec128) in operator delete(void*, unsigned long)
==4046==HINT: if you don't care about these errors you may set ASAN_OPTIONS=new_delete_type_mismatch=0
=================================================================
==4046==ERROR: AddressSanitizer: new-delete-type-mismatch on 0x6080000363a0 in thread T0:
object passed to delete has wrong type:
size of the allocated type: 88 bytes;
size of the deallocated type: 48 bytes.
#0 0x7ffff7283128 in operator delete(void*, unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xec128)
#1 0x7ffff60d3139 in Glib::SignalProxyConnectionNode::~SignalProxyConnectionNode() ../glibmm/signalproxy_connectionnode.h:39
#2 0x7ffff60d3139 in Glib::SignalProxyConnectionNode::destroy_notify_handler(void*, _GClosure*) glib/glibmm/signalproxy_connectionnode.cc:96
#3 0x7ffff60253c3 in closure_invoke_notifiers ../../../gobject/gclosure.c:263
#4 0x7ffff60253c3 in g_closure_unref ../../../gobject/gclosure.c:615
#5 0x7ffff60253c3 in g_closure_unref ../../../gobject/gclosure.c:601
#6 0x7ffff60402e3 in handler_unref_R ../../../gobject/gsignal.c:700
#7 0x7ffff60402e3 in g_signal_handlers_destroy ../../../gobject/gsignal.c:2714
#8 0x7ffff602a3ec in g_object_real_dispose ../../../gobject/gobject.c:1054
#9 0x7ffff602c5f7 in g_object_run_dispose ../../../gobject/gobject.c:1108
#10 0x7ffff6dd0ec7 in Gtk::Object::_release_c_instance() (/usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1+0x405ec7)
#11 0x7ffff6d14cc1 in Gtk::Entry::~Entry() (/usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1+0x349cc1)
#12 0x55555610ba83 in SolveSpace::Platform::GtkEditorOverlay::~GtkEditorOverlay() ../src/platform/guigtk.cpp:615
#13 0x55555610ba83 in SolveSpace::Platform::GtkWindow::~GtkWindow() ../src/platform/guigtk.cpp:733
#14 0x55555610ceba in SolveSpace::Platform::WindowImplGtk::~WindowImplGtk() ../src/platform/guigtk.cpp:853
#15 0x55555610ceba in void __gnu_cxx::new_allocator<SolveSpace::Platform::WindowImplGtk>::destroy<SolveSpace::Platform::WindowImplGtk>(SolveSpace::Platform::WindowImplGtk*) /usr/include/c++/8/ext/new_allocator.h:140
#16 0x55555610ceba in void std::allocator_traits<std::allocator<SolveSpace::Platform::WindowImplGtk> >::destroy<SolveSpace::Platform::WindowImplGtk>(std::allocator<SolveSpace::Platform::WindowImplGtk>&, SolveSpace::Platform::WindowImplGtk*) /usr/include/c++/8/bits/alloc_traits.h:487
#17 0x55555610ceba in std::_Sp_counted_ptr_inplace<SolveSpace::Platform::WindowImplGtk, std::allocator<SolveSpace::Platform::WindowImplGtk>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/include/c++/8/bits/shared_ptr_base.h:554
#18 0x555556060b44 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/8/bits/shared_ptr_base.h:155
#19 0x555556060b44 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/8/bits/shared_ptr_base.h:148
#20 0x555556037573 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() /usr/include/c++/8/bits/shared_ptr_base.h:728
#21 0x555556037573 in std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() /usr/include/c++/8/bits/shared_ptr_base.h:1167
#22 0x555556037573 in std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>&&) /usr/include/c++/8/bits/shared_ptr_base.h:1263
#23 0x555556037573 in std::shared_ptr<SolveSpace::Platform::Window>::operator=(std::shared_ptr<SolveSpace::Platform::Window>&&) /usr/include/c++/8/bits/shared_ptr.h:335
#24 0x555556037573 in SolveSpace::SolveSpaceUI::Clear() ../src/solvespace.cpp:1039
#25 0x55555601d587 in main ../src/platform/entrygui.cpp:30
#26 0x7ffff4b8a09a in __libc_start_main ../csu/libc-start.c:308
#27 0x55555602d0f9 in _start (/home/ryan/src/third-party/solvespace/build/bin/solvespace+0xad90f9)
0x6080000363a0 is located 0 bytes inside of 88-byte region [0x6080000363a0,0x6080000363f8)
allocated by thread T0 here:
#0 0x7ffff7281d30 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xead30)
#1 0x5555561092f5 in sigc::slot0<void>::slot0<sigc::bound_mem_functor0<void, SolveSpace::Platform::GtkEditorOverlay> >(sigc::bound_mem_functor0<void, SolveSpace::Platform::GtkEditorOverlay> const&) /usr/include/sigc++-2.0/sigc++/functors/slot.h:546
#2 0x5555561092f5 in sigc::slot<void, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil, sigc::nil>::slot<sigc::bound_mem_functor0<void, SolveSpace::Platform::GtkEditorOverlay> >(sigc::bound_mem_functor0<void, SolveSpace::Platform::GtkEditorOverlay> const&) /usr/include/sigc++-2.0/sigc++/functors/slot.h:1774
#3 0x5555561092f5 in SolveSpace::Platform::GtkEditorOverlay::GtkEditorOverlay(SolveSpace::Platform::Window*) ../src/platform/guigtk.cpp:629
#4 0x5555561092f5 in SolveSpace::Platform::GtkWindow::GtkWindow(SolveSpace::Platform::Window*) ../src/platform/guigtk.cpp:746
#5 0x61900037ff8f (<unknown module>)
SUMMARY: AddressSanitizer: new-delete-type-mismatch (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xec128) in operator delete(void*, unsigned long)
==4046==HINT: if you don't care about these errors you may set ASAN_OPTIONS=new_delete_type_mismatch=0
=================================================================
==4046==ERROR: AddressSanitizer: new-delete-type-mismatch on 0x608000037320 in thread T0:
object passed to delete has wrong type:
size of the allocated type: 88 bytes;
size of the deallocated type: 48 bytes.
#0 0x7ffff7283128 in operator delete(void*, unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xec128)
#1 0x7ffff60d3139 in Glib::SignalProxyConnectionNode::~SignalProxyConnectionNode() ../glibmm/signalproxy_connectionnode.h:39
#2 0x7ffff60d3139 in Glib::SignalProxyConnectionNode::destroy_notify_handler(void*, _GClosure*) glib/glibmm/signalproxy_connectionnode.cc:96
#3 0x7ffff60253c3 in closure_invoke_notifiers ../../../gobject/gclosure.c:263
#4 0x7ffff60253c3 in g_closure_unref ../../../gobject/gclosure.c:615
#5 0x7ffff60253c3 in g_closure_unref ../../../gobject/gclosure.c:601
#6 0x7ffff60402e3 in handler_unref_R ../../../gobject/gsignal.c:700
#7 0x7ffff60402e3 in g_signal_handlers_destroy ../../../gobject/gsignal.c:2714
#8 0x7ffff602a3ec in g_object_real_dispose ../../../gobject/gobject.c:1054
#9 0x7ffff602c5f7 in g_object_run_dispose ../../../gobject/gobject.c:1108
#10 0x7ffff6dd0ec7 in Gtk::Object::_release_c_instance() (/usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1+0x405ec7)
#11 0x7ffff6d2ecbb in Gtk::GLArea::~GLArea() (/usr/lib/x86_64-linux-gnu/libgtkmm-3.0.so.1+0x363cbb)
#12 0x55555610bb59 in SolveSpace::Platform::GtkGLWidget::~GtkGLWidget() ../src/platform/guigtk.cpp:448
#13 0x55555610bb59 in SolveSpace::Platform::GtkEditorOverlay::~GtkEditorOverlay() ../src/platform/guigtk.cpp:615
#14 0x55555610bb59 in SolveSpace::Platform::GtkWindow::~GtkWindow() ../src/platform/guigtk.cpp:733
#15 0x55555610ceba in SolveSpace::Platform::WindowImplGtk::~WindowImplGtk() ../src/platform/guigtk.cpp:853
#16 0x55555610ceba in void __gnu_cxx::new_allocator<SolveSpace::Platform::WindowImplGtk>::destroy<SolveSpace::Platform::WindowImplGtk>(SolveSpace::Platform::WindowImplGtk*) /usr/include/c++/8/ext/new_allocator.h:140
#17 0x55555610ceba in void std::allocator_traits<std::allocator<SolveSpace::Platform::WindowImplGtk> >::destroy<SolveSpace::Platform::WindowImplGtk>(std::allocator<SolveSpace::Platform::WindowImplGtk>&, SolveSpace::Platform::WindowImplGtk*) /usr/include/c++/8/bits/alloc_traits.h:487
#18 0x55555610ceba in std::_Sp_counted_ptr_inplace<SolveSpace::Platform::WindowImplGtk, std::allocator<SolveSpace::Platform::WindowImplGtk>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/include/c++/8/bits/shared_ptr_base.h:554
#19 0x555556060b44 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/8/bits/shared_ptr_base.h:155
#20 0x555556060b44 in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/8/bits/shared_ptr_base.h:148
#21 0x555556037573 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() /usr/include/c++/8/bits/shared_ptr_base.h:728
#22 0x555556037573 in std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() /usr/include/c++/8/bits/shared_ptr_base.h:1167
#23 0x555556037573 in std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>::operator=(std::__shared_ptr<SolveSpace::Platform::Window, (__gnu_cxx::_Lock_policy)2>&&) /usr/include/c++/8/bits/shared_ptr_base.h:1263
#24 0x555556037573 in std::shared_ptr<SolveSpace::Platform::Window>::operator=(std::shared_ptr<SolveSpace::Platform::Window>&&) /usr/include/c++/8/bits/shared_ptr.h:335
#25 0x555556037573 in SolveSpace::SolveSpaceUI::Clear() ../src/solvespace.cpp:1039
#26 0x55555601d587 in main ../src/platform/entrygui.cpp:30
#27 0x7ffff4b8a09a in __libc_start_main ../csu/libc-start.c:308
#28 0x55555602d0f9 in _start (/home/ryan/src/third-party/solvespace/build/bin/solvespace+0xad90f9)
0x608000037320 is located 0 bytes inside of 88-byte region [0x608000037320,0x608000037378)
allocated by thread T0 here:
#0 0x7ffff7281d30 in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xead30)
#1 0x555556109f53 in sigc::slot4<bool, int, int, bool, Glib::RefPtr<Gtk::Tooltip> const&>::slot4<sigc::bound_mem_functor4<bool, SolveSpace::Platform::GtkWindow, int, int, bool, Glib::RefPtr<Gtk::Tooltip> const&> >(sigc::bound_mem_functor4<bool, SolveSpace::Platform::GtkWindow, int, int, bool, Glib::RefPtr<Gtk::Tooltip> const&> const&) /usr/include/sigc++-2.0/sigc++/functors/slot.h:1084
#2 0x555556109f53 in sigc::slot<bool, int, int, bool, Glib::RefPtr<Gtk::Tooltip> const&, sigc::nil, sigc::nil, sigc::nil>::slot<sigc::bound_mem_functor4<bool, SolveSpace::Platform::GtkWindow, int, int, bool, Glib::RefPtr<Gtk::Tooltip> const&> >(sigc::bound_mem_functor4<bool, SolveSpace::Platform::GtkWindow, int, int, bool, Glib::RefPtr<Gtk::Tooltip> const&> const&) /usr/include/sigc++-2.0/sigc++/functors/slot.h:2050
#3 0x555556109f53 in SolveSpace::Platform::GtkWindow::GtkWindow(SolveSpace::Platform::Window*) ../src/platform/guigtk.cpp:762
#4 0x61900037ff8f (<unknown module>)
SUMMARY: AddressSanitizer: new-delete-type-mismatch (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xec128) in operator delete(void*, unsigned long)
@rpavlik I wonder if we need to explicitly destroy or stop the timers when tearing down the app or when there is no geometry to display? Maybe they are firing when we don't want them to. I know for sure they don't always fire in a predictable order.
Well, at least some of those mismatched new delete warnings about timers are false positives: shortly after I posted my last comment here, I found another bug report with a similar message and info on the root cause, so you'll notice there is now a comment on the relevant line of SolveSpace explaining it with a link to upstream 😁
It's possible there's a lifetime management thing going on here, but I wouldn't assume there is just based on my sanitizer results above.
I just reinstalled system with MX Linux MX-19.4
distro — on "clean install" SolveSpace 3.0~
https://github.com/solvespace/solvespace/commit/33091817738d780d904bcd3e077022d87ebf2cd3 can opens testcase file without Segmentation fault
.
$ solvespace
SolveSpace!
json_object_from_file: error opening file /home/user/.config/solvespace/settings.json: No such file or directory
(solvespace:8064): Gtk-WARNING **: 21:45:58.476: gtk_window_present_with_time() should not be called with 0, or GDK_CURRENT_TIME as a timestamp, the timestamp should instead be gathered at the time the user initiated the request for the window to be shown
Generate::REGEN (for bounding box) took 107 ms
Generate::REGEN took 232 ms
Generate::ALL (for bounding box) took 121 ms
bad, edge_inters=4
bad, edge_inters=4
bad, edge_inters=4
bad, edge_inters=4
bad, edge_inters=4
bad, edge_inters=4
Generate::ALL took 353 ms
Generate::DIRTY (for bounding box) took 82 ms
bad, edge_inters=4
bad, edge_inters=4
bad, edge_inters=4
bad, edge_inters=4
Generate::DIRTY took 198 ms
Generate::DIRTY (for bounding box) took 88 ms
Generate::DIRTY took 172 ms
$
@robnee @rpavlik, Does it looks OK?
The messages look fine. I would say if this file no longer seg faults then this issue can be closed. I don't think anyone one else was able to reproduce.
yep, that's all good. Thanks for bearing with us as we dug into this one.
System information
Expected behavior
.slvs
file saved with SolveSpace should be opened in same version of SolveSpace.Actual behavior
SolveSpace crashed just on opening
.slvs
, which was created just with it.Additional information
.slvs
(direct link; use "Save As..." to download) - https://github.com/Symbian9/SolveSpace-Daily-Engineering/raw/master/DailySolveSpace/dailysolvespace-20210309_1.slvsScreenshot taken from previous session when file created & then saved: