Ticket #1273 (new bug)

Opened 15 months ago

Last modified 6 months ago

Canvas crashes on exit when using Discretize widget

Reported by: ales Owned by:
Milestone: Next 2.x Component: canvas
Severity: major Keywords:
Cc: Blocking:
Blocked By:

Description

After using Discretize widget and closing the window, canvas crashes with a segfault on MacOSX with stack trace

Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
0   libSystem.B.dylib             	0x00007fff8452a0b6 __kill + 10
1   libSystem.B.dylib             	0x00007fff845ca9f6 abort + 83
2   libSystem.B.dylib             	0x00007fff844e2195 free + 128
3   orange.so                     	0x0000000101076ae7 __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<float const, GCPtr<TDistribution> > > >::deallocate(std::_Rb_tree_node<std::pair<float const, GCPtr<TDistribution> > >*, unsigned long) + 29 (new_allocator.h:97)
4   orange.so                     	0x0000000101076b0f std::_Rb_tree<float, std::pair<float const, GCPtr<TDistribution> >, std::_Select1st<std::pair<float const, GCPtr<TDistribution> > >, std::less<float>, std::allocator<std::pair<float const, GCPtr<TDistribution> > > >::_M_put_node(std::_Rb_tree_node<std::pair<float const, GCPtr<TDistribution> > >*) + 37 (stl_tree.h:373)
5   orange.so                     	0x0000000101076b5a std::_Rb_tree<float, std::pair<float const, GCPtr<TDistribution> >, std::_Select1st<std::pair<float const, GCPtr<TDistribution> > >, std::less<float>, std::allocator<std::pair<float const, GCPtr<TDistribution> > > >::_M_destroy_node(std::_Rb_tree_node<std::pair<float const, GCPtr<TDistribution> > >*) + 72 (stl_tree.h:403)
6   orange.so                     	0x0000000101076bc3 std::_Rb_tree<float, std::pair<float const, GCPtr<TDistribution> >, std::_Select1st<std::pair<float const, GCPtr<TDistribution> > >, std::less<float>, std::allocator<std::pair<float const, GCPtr<TDistribution> > > >::_M_erase(std::_Rb_tree_node<std::pair<float const, GCPtr<TDistribution> > >*) + 65 (stl_tree.h:1328)
7   orange.so                     	0x0000000101076ba9 std::_Rb_tree<float, std::pair<float const, GCPtr<TDistribution> >, std::_Select1st<std::pair<float const, GCPtr<TDistribution> > >, std::less<float>, std::allocator<std::pair<float const, GCPtr<TDistribution> > > >::_M_erase(std::_Rb_tree_node<std::pair<float const, GCPtr<TDistribution> > >*) + 39 (stl_tree.h:1326)
8   orange.so                     	0x0000000101076ba9 std::_Rb_tree<float, std::pair<float const, GCPtr<TDistribution> >, std::_Select1st<std::pair<float const, GCPtr<TDistribution> > >, std::less<float>, std::allocator<std::pair<float const, GCPtr<TDistribution> > > >::_M_erase(std::_Rb_tree_node<std::pair<float const, GCPtr<TDistribution> > >*) + 39 (stl_tree.h:1326)
9   orange.so                     	0x0000000101076ba9 std::_Rb_tree<float, std::pair<float const, GCPtr<TDistribution> >, std::_Select1st<std::pair<float const, GCPtr<TDistribution> > >, std::less<float>, std::allocator<std::pair<float const, GCPtr<TDistribution> > > >::_M_erase(std::_Rb_tree_node<std::pair<float const, GCPtr<TDistribution> > >*) + 39 (stl_tree.h:1326)
10  orange.so                     	0x0000000101076ba9 std::_Rb_tree<float, std::pair<float const, GCPtr<TDistribution> >, std::_Select1st<std::pair<float const, GCPtr<TDistribution> > >, std::less<float>, std::allocator<std::pair<float const, GCPtr<TDistribution> > > >::_M_erase(std::_Rb_tree_node<std::pair<float const, GCPtr<TDistribution> > >*) + 39 (stl_tree.h:1326)
11  orange.so                     	0x0000000101076ba9 std::_Rb_tree<float, std::pair<float const, GCPtr<TDistribution> >, std::_Select1st<std::pair<float const, GCPtr<TDistribution> > >, std::less<float>, std::allocator<std::pair<float const, GCPtr<TDistribution> > > >::_M_erase(std::_Rb_tree_node<std::pair<float const, GCPtr<TDistribution> > >*) + 39 (stl_tree.h:1326)
12  orange.so                     	0x0000000101076ba9 std::_Rb_tree<float, std::pair<float const, GCPtr<TDistribution> >, std::_Select1st<std::pair<float const, GCPtr<TDistribution> > >, std::less<float>, std::allocator<std::pair<float const, GCPtr<TDistribution> > > >::_M_erase(std::_Rb_tree_node<std::pair<float const, GCPtr<TDistribution> > >*) + 39 (stl_tree.h:1326)
13  orange.so                     	0x0000000101076ba9 std::_Rb_tree<float, std::pair<float const, GCPtr<TDistribution> >, std::_Select1st<std::pair<float const, GCPtr<TDistribution> > >, std::less<float>, std::allocator<std::pair<float const, GCPtr<TDistribution> > > >::_M_erase(std::_Rb_tree_node<std::pair<float const, GCPtr<TDistribution> > >*) + 39 (stl_tree.h:1326)
14  orange.so                     	0x0000000101076bf6 std::_Rb_tree<float, std::pair<float const, GCPtr<TDistribution> >, std::_Select1st<std::pair<float const, GCPtr<TDistribution> > >, std::less<float>, std::allocator<std::pair<float const, GCPtr<TDistribution> > > >::~_Rb_tree() + 34 (stl_tree.h:594)
15  orange.so                     	0x00000001010e6af9 std::map<float, GCPtr<TDistribution>, std::less<float>, std::allocator<std::pair<float const, GCPtr<TDistribution> > > >::~map() + 21 (stl_map.h:94)
16  orange.so                     	0x000000010106e0d2 TContingency::~TContingency() + 118 (contingency.cpp:125)
17  orange.so                     	0x00000001010771a9 TContingencyClass::~TContingencyClass() + 35 (contingency.hpp:90)
18  orange.so                     	0x0000000101077251 TContingencyAttrClass::~TContingencyAttrClass() + 35 (contingency.hpp:134)
19  orange.so                     	0x000000010105d038 Orange_dealloc(TGCCounter*) + 77 (cls_orange.cpp:760)
20  orange.so                     	0x0000000101002597 TGCCounter::freeRef() + 59 (garbage.hpp:96)
21  orange.so                     	0x0000000101059182 GCPtr<TOrange>::operator=(GCPtr<TOrange> const&) + 64 (garbage.hpp:246)
22  orange.so                     	0x000000010138e846 TOrange::dropReferences() + 82 (root.cpp:159)
23  orange.so                     	0x000000010105b445 Orange_clear(TGCCounter*) + 43 (cls_orange.cpp:254)
24  org.python.python             	0x00000001000ff5a8 collect + 1496
25  org.python.python             	0x00000001000ffc1f gc_collect + 111
26  org.python.python             	0x00000001000c04cd PyEval_EvalFrameEx + 21437
27  org.python.python             	0x00000001000c24d6 PyEval_EvalCodeEx + 2134
28  org.python.python             	0x00000001000c0015 PyEval_EvalFrameEx + 20229
29  org.python.python             	0x00000001000c24d6 PyEval_EvalCodeEx + 2134
30  org.python.python             	0x00000001000c25f6 PyEval_EvalCode + 54
31  org.python.python             	0x00000001000e716e PyRun_FileExFlags + 174
32  org.python.python             	0x00000001000b827c builtin_execfile + 364
33  org.python.python             	0x00000001000c04cd PyEval_EvalFrameEx + 21437
34  org.python.python             	0x00000001000c24d6 PyEval_EvalCodeEx + 2134
35  org.python.python             	0x00000001000c25f6 PyEval_EvalCode + 54
36  org.python.python             	0x00000001000e716e PyRun_FileExFlags + 174
37  org.python.python             	0x00000001000b827c builtin_execfile + 364
38  org.python.python             	0x00000001000c04cd PyEval_EvalFrameEx + 21437
39  org.python.python             	0x00000001000c24d6 PyEval_EvalCodeEx + 2134
40  org.python.python             	0x00000001000c25f6 PyEval_EvalCode + 54
41  org.python.python             	0x00000001000e716e PyRun_FileExFlags + 174
42  org.python.python             	0x00000001000e7429 PyRun_SimpleFileExFlags + 489
43  org.python.python             	0x00000001000fe35d Py_Main + 3085
44  python                        	0x0000000100000f14 0x100000000 + 3860

This only happens if changing the selected attribute in the 'Individual attribures' frame (using 'wine.tab' data set)

Change History

comment:1 Changed 6 months ago by ales

Maybe related, using the Interactive Tree Builder

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: 0x000000000000000d, 0x0000000000000000
Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
0   orange.so                     	0x00000001010025bc TGCCounter::freeRef() + 16 (garbage.hpp:75)
1   orange.so                     	0x0000000101002648 TWrapper::~TWrapper() + 36 (garbage.hpp:131)
2   orange.so                     	0x0000000101203645 GCPtr<TDistribution>::~GCPtr() + 21 (garbage.hpp:136)
3   orange.so                     	0x00000001010783e8 void std::_Destroy<GCPtr<TDistribution> >(GCPtr<TDistribution>*) + 21 (stl_construct.h:107)
4   orange.so                     	0x00000001010de1e7 void std::__destroy_aux<GCPtr<TDistribution>*>(GCPtr<TDistribution>*, GCPtr<TDistribution>*, std::__false_type) + 27 (stl_construct.h:121)
5   orange.so                     	0x00000001010de21c void std::_Destroy<GCPtr<TDistribution>*>(GCPtr<TDistribution>*, GCPtr<TDistribution>*) + 36 (stl_construct.h:155)
6   orange.so                     	0x000000010107840b void std::_Destroy<GCPtr<TDistribution>*, GCPtr<TDistribution> >(GCPtr<TDistribution>*, GCPtr<TDistribution>*, std::allocator<GCPtr<TDistribution> >) + 33 (stl_construct.h:182)
7   orange.so                     	0x0000000101078782 std::vector<GCPtr<TDistribution>, std::allocator<GCPtr<TDistribution> > >::~vector() + 58 (stl_vector.h:271)
8   orange.so                     	0x000000010106fb15 TContingency::~TContingency() + 67 (contingency.cpp:102)
9   orange.so                     	0x0000000101078c1f TContingencyClass::~TContingencyClass() + 35 (contingency.hpp:69)
10  orange.so                     	0x0000000101078cc7 TContingencyAttrClass::~TContingencyAttrClass() + 35 (contingency.hpp:113)
11  orange.so                     	0x000000010105e24c Orange_dealloc(TGCCounter*) + 77 (cls_orange.cpp:736)
12  orange.so                     	0x00000001010025e7 TGCCounter::freeRef() + 59 (garbage.hpp:75)
13  orange.so                     	0x0000000101002648 TWrapper::~TWrapper() + 36 (garbage.hpp:131)
14  orange.so                     	0x000000010102c307 GCPtr<TContingencyClass>::~GCPtr() + 21 (garbage.hpp:136)
15  orange.so                     	0x0000000101077e51 TOrangeVector<GCPtr<TContingencyClass>, true>::_Destroy(GCPtr<TContingencyClass>*, GCPtr<TContingencyClass>*) + 39 (orvector.hpp:423)
16  orange.so                     	0x00000001010786d1 TOrangeVector<GCPtr<TContingencyClass>, true>::clear() + 37 (orvector.hpp:330)
17  orange.so                     	0x000000010107873b TOrangeVector<GCPtr<TContingencyClass>, true>::dropReferences() + 47 (orvector.hpp:295)
18  orange.so                     	0x000000010105c50d Orange_clear(TGCCounter*) + 43 (cls_orange.cpp:233)
19  org.python.python             	0x00000001000bee73 collect + 1565
20  org.python.python             	0x00000001000bf441 gc_collect + 115
21  org.python.python             	0x0000000100091409 PyEval_EvalFrameEx + 16376
22  org.python.python             	0x000000010009329b PyEval_EvalCodeEx + 1872
23  org.python.python             	0x00000001000915f3 PyEval_EvalFrameEx + 16866
24  org.python.python             	0x000000010009329b PyEval_EvalCodeEx + 1872
25  org.python.python             	0x000000010009332e PyEval_EvalCode + 54
26  org.python.python             	0x00000001000ab06a run_mod + 66
27  org.python.python             	0x00000001000ab133 PyRun_FileExFlags + 150
28  org.python.python             	0x00000001000ac489 PyRun_SimpleFileExFlags + 735
29  org.python.python             	0x00000001000be125 Py_Main + 3060
30  python2                       	0x0000000100000f14 0x100000000 + 3860

Note: See TracTickets for help on using tickets.