#619 Made TreeView stable
-
- Veteran
- Posts: 2190
- Joined: Tue Jan 03, 2017 10:55 am
#619 Made TreeView stable
The TreeView item (DocumentObjectItem) and DocumentObject now have a N:1 relationship. Adding or removing object with claimed children no longer affects existing TreeView items. Semi-lazy-loading strategy is employed to avoid creating duplicate items until expansion.
Previous related discussion thread: https://forum.freecadweb.org/viewtopic.php?f=34&t=20197
Also improved TreeView drag and drop by enabling drop only action (i.e. no item removal from dragged parent item) if CTRL key is pressed at the time of drop.
This is a somewhat significant change, considering the important role of TreeView, and also numerous possible use cases. Please fork and tested it.
Previous related discussion thread: https://forum.freecadweb.org/viewtopic.php?f=34&t=20197
Also improved TreeView drag and drop by enabling drop only action (i.e. no item removal from dragged parent item) if CTRL key is pressed at the time of drop.
This is a somewhat significant change, considering the important role of TreeView, and also numerous possible use cases. Please fork and tested it.
- DeepSOIC
- Veteran
- Posts: 7896
- Joined: Fri Aug 29, 2014 12:45 am
- Location: used to be Saint-Petersburg, Russia
Re: #619 Made TreeView stable
Interesting...
- DeepSOIC
- Veteran
- Posts: 7896
- Joined: Fri Aug 29, 2014 12:45 am
- Location: used to be Saint-Petersburg, Russia
Re: #619 Made TreeView stable
Links:
Pull request: https://github.com/FreeCAD/FreeCAD/pull/619
Clone address: https://github.com/realthunder/FreeCAD.git branch "StableTree"
(was a bit painful to find, so I post here )
Pull request: https://github.com/FreeCAD/FreeCAD/pull/619
Clone address: https://github.com/realthunder/FreeCAD.git branch "StableTree"
(was a bit painful to find, so I post here )
- DeepSOIC
- Veteran
- Posts: 7896
- Joined: Fri Aug 29, 2014 12:45 am
- Location: used to be Saint-Petersburg, Russia
Re: #619 Made TreeView stable
I compiled your branch, and got a quick crash. Note that I have part-o-magic active...
I didn't do a clean build, so it might be a false alarm. I'll investigate further in the meantime, if you don't manage to fix it sooner
I didn't do a clean build, so it might be a false alarm. I'll investigate further in the meantime, if you don't manage to fix it sooner
- Attachments
-
- realthunder-tree-crash.png (201 KiB) Viewed 3122 times
- DeepSOIC
- Veteran
- Posts: 7896
- Joined: Fri Aug 29, 2014 12:45 am
- Location: used to be Saint-Petersburg, Russia
Re: #619 Made TreeView stable
False alarm. After clean build, no crashes so far.
-
- Veteran
- Posts: 2190
- Joined: Tue Jan 03, 2017 10:55 am
Re: #619 Made TreeView stable
-_-; wish there is a wiping sweat emoticon.DeepSOIC wrote:False alarm. After clean build, no crashes so far.
On the other hand, I'll be surprised if this patch isn't causing a bunch of problems here and there.
- DeepSOIC
- Veteran
- Posts: 7896
- Joined: Fri Aug 29, 2014 12:45 am
- Location: used to be Saint-Petersburg, Russia
Re: #619 Made TreeView stable
Lazy loading works well. This graph (with every compoundfilter claiming compound as child), there is no significant memory consumption.
Minor complaints:
* when I select an object in tree, and it has a twin item, the twin shows no signs of being a twin. That is, no highlighting. I guess it might be important to be so for drag-drop support to work properly. In contrast, if I select an object in 3d view, all instantiations of the object in tree are highlighted.
EDIT: I only tested it as user, I didn't look into the code.
Overall, so far I put a thick approval Minor complaints:
* when I select an object in tree, and it has a twin item, the twin shows no signs of being a twin. That is, no highlighting. I guess it might be important to be so for drag-drop support to work properly. In contrast, if I select an object in 3d view, all instantiations of the object in tree are highlighted.
EDIT: I only tested it as user, I didn't look into the code.
- DeepSOIC
- Veteran
- Posts: 7896
- Joined: Fri Aug 29, 2014 12:45 am
- Location: used to be Saint-Petersburg, Russia
Re: #619 Made TreeView stable
Oh, no it just crashed again...
-
- Veteran
- Posts: 2190
- Joined: Tue Jan 03, 2017 10:55 am
Re: #619 Made TreeView stable
Did it crashed at the same line number? It's an assertion failure. That assertion is probably incorrect. I've removed it. Please sync the branch and try again.DeepSOIC wrote:Oh, no it just crashed again...
- DeepSOIC
- Veteran
- Posts: 7896
- Joined: Fri Aug 29, 2014 12:45 am
- Location: used to be Saint-Petersburg, Russia
Re: #619 Made TreeView stable
I caught the crash in debugger.
What I did:
1. Create Part-o-magic ShapeGroup
2. Part Cube
3. Part Cylinder ->crash
The crash is occasional, and at first it was happening almost every time, now it happens really occasionally. And I don't know why.
Call stack:
My analysis:
key points in stack are: Cylinder creation -> Tree is notified -> Tree loads icon -> during icon load, Part-o-magic's timer fires -> part-o-magic tries to add Cylinder to ShapeGroup -> Tree is notified -> Tree crashes
What I did:
1. Create Part-o-magic ShapeGroup
2. Part Cube
3. Part Cylinder ->crash
The crash is occasional, and at first it was happening almost every time, now it happens really occasionally. And I don't know why.
Call stack:
Code: Select all
0 std::_Tree<std::_Tset_traits<Gui::DocumentObjectItem * __ptr64,std::less<Gui::DocumentObjectItem * __ptr64>,std::allocator<Gui::DocumentObjectItem * __ptr64>,0>>::_Lmost xtree 2123 0x7ffc06baaca3
1 std::_Tree<std::_Tset_traits<Gui::DocumentObjectItem * __ptr64,std::less<Gui::DocumentObjectItem * __ptr64>,std::allocator<Gui::DocumentObjectItem * __ptr64>,0>>::begin xtree 1212 0x7ffc06bad9cd
2 Gui::DocumentItem::testStatus Tree.cpp 1260 0x7ffc06b837de
3 Gui::TreeWidget::onTestStatus Tree.cpp 730 0x7ffc06b8107f
4 Gui::TreeWidget::qt_static_metacall moc_Tree.cpp 82 0x7ffc06b7c0cd
5 QBuffer::qt_static_metacall QtCored4 0x5b3fb109
6 QBuffer::qt_static_metacall QtCored4 0x5b499040
7 QBuffer::qt_static_metacall QtCored4 0x5b4122a5
8 QBuffer::qt_static_metacall QtCored4 0x5b3fcaf3
9 QAbstractItemView::qt_metacast QtGuid4 0x5928bbf6
10 QAbstractItemView::qt_metacast QtGuid4 0x592865e8
11 Gui::GUIApplication::notify GuiApplication.cpp 91 0x7ffc0693e822
12 QBuffer::qt_static_metacall QtCored4 0x5b3da1ca
13 QBuffer::qt_static_metacall QtCored4 0x5b3e2d43
14 QBuffer::qt_static_metacall QtCored4 0x5b430bc7
15 QBuffer::qt_static_metacall QtCored4 0x5b42e4a3
16 CallWindowProcW USER32 0x7ffc47401c24
17 DispatchMessageW USER32 0x7ffc4740156c
18 DialogBoxIndirectParamAorW USER32 0x7ffc4741e4a6
19 DialogBoxIndirectParamAorW USER32 0x7ffc4741e223
20 SoftModalMessageBox USER32 0x7ffc4747ae5b
21 MessageBoxW USER32 0x7ffc474788e8
22 MessageBoxTimeoutW USER32 0x7ffc47478565
23 MessageBoxW USER32 0x7ffc474785ee
24 _CppXcptFilter MSVCR120D 0x7ffc2c4f7509
25 wassert MSVCR120D 0x7ffc2c4eccad
26 Gui::DocumentItem::slotNewObject Tree.cpp 1006 0x7ffc06b8459d
27 Gui::DocumentItem::populateItem Tree.cpp 1124 0x7ffc06b84278
28 Gui::DocumentItem::slotChangeObject Tree.cpp 1144 0x7ffc06b851e6
29 boost::_mfi::mf1<void,Gui::DocumentItem,Gui::ViewProviderDocumentObject const & __ptr64>::operator() mem_fn_template.hpp 166 0x7ffc06ba76b9
30 boost::_bi::list2<boost::_bi::value<Gui::DocumentItem * __ptr64>,boost::arg<1>>::operator()<boost::_mfi::mf1<void,Gui::DocumentItem,Gui::ViewProviderDocumentObject const & __ptr64>,boost::_bi::list2<Gui::ViewProviderDocumentObject const & __ptr6 bind.hpp 314 0x7ffc06b8d1ba
31 boost::_bi::bind_t<void,boost::_mfi::mf1<void,Gui::DocumentItem,Gui::ViewProviderDocumentObject const & __ptr64>,boost::_bi::list2<boost::_bi::value<Gui::DocumentItem * __ptr64>,boost::arg<1>>>::operator()<Gui::ViewProviderDocumentObject,App::P bind_template.hpp 103 0x7ffc06b8da38
32 boost::detail::function::void_function_obj_invoker2<boost::_bi::bind_t<void,boost::_mfi::mf1<void,Gui::DocumentItem,Gui::ViewProviderDocumentObject const & __ptr64>,boost::_bi::list2<boost::_bi::value<Gui::DocumentItem * __ptr64>,boost::arg<1>> function_template.hpp 154 0x7ffc06bb32dc
33 boost::function2<void,Gui::ViewProviderDocumentObject const & __ptr64,App::Property const & __ptr64>::operator() function_template.hpp 768 0x7ffc068f2bde
34 boost::signals::detail::call_bound2<void>::caller<Gui::ViewProviderDocumentObject const & __ptr64,App::Property const & __ptr64,boost::function<void __cdecl(Gui::ViewProviderDocumentObject const & __ptr64,App::Property const & __ptr64)>>::operat signal_template.hpp 120 0x7ffc068d139f
35 boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound2<void>::caller<Gui::ViewProviderDocumentObject const & __ptr64,App::Property const & __ptr64,boost::function<void __cdecl(Gui::ViewProviderDocumentObject const & __ptr6 slot_call_iterator.hpp 61 0x7ffc068fd0fc
36 boost::iterator_core_access::dereference<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound2<void>::caller<Gui::ViewProviderDocumentObject const & __ptr64,App::Property const & __ptr64,boost::function<void __cdecl(Gui:: iterator_facade.hpp 515 0x7ffc068e4308
37 boost::iterator_facade<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound2<void>::caller<Gui::ViewProviderDocumentObject const & __ptr64,App::Property const & __ptr64,boost::function<void __cdecl(Gui::ViewProviderDocume iterator_facade.hpp 640 0x7ffc068f0670
38 boost::detail::postfix_increment_proxy<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound2<void>::caller<Gui::ViewProviderDocumentObject const & __ptr64,App::Property const & __ptr64,boost::function<void __cdecl(Gui::Vi iterator_facade.hpp 146 0x7ffc068eab0d
39 boost::operator++<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound2<void>::caller<Gui::ViewProviderDocumentObject const & __ptr64,App::Property const & __ptr64,boost::function<void __cdecl(Gui::ViewProviderDocumentObj iterator_facade.hpp 730 0x7ffc068d1047
40 boost::last_value<void>::operator()<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound2<void>::caller<Gui::ViewProviderDocumentObject const & __ptr64,App::Property const & __ptr64,boost::function<void __cdecl(Gui::ViewP last_value.hpp 49 0x7ffc068d1dc9
41 boost::signal2<void,Gui::ViewProviderDocumentObject const & __ptr64,App::Property const & __ptr64,boost::last_value<void>,int,std::less<int>,boost::function<void __cdecl(Gui::ViewProviderDocumentObject const & __ptr64,App::Property const & __ptr6 signal_template.hpp 354 0x7ffc068f3649
42 Gui::Document::slotChangedObject Document.cpp 526 0x7ffc068c3123
43 boost::_mfi::mf2<void,Gui::Document,App::DocumentObject const & __ptr64,App::Property const & __ptr64>::operator() mem_fn_template.hpp 281 0x7ffc068f2ee3
44 boost::_bi::list3<boost::_bi::value<Gui::Document * __ptr64>,boost::arg<1>,boost::arg<2>>::operator()<boost::_mfi::mf2<void,Gui::Document,App::DocumentObject const & __ptr64,App::Property const & __ptr64>,boost::_bi::list2<App::DocumentObject co bind.hpp 393 0x7ffc068d1ad8
45 boost::_bi::bind_t<void,boost::_mfi::mf2<void,Gui::Document,App::DocumentObject const & __ptr64,App::Property const & __ptr64>,boost::_bi::list3<boost::_bi::value<Gui::Document * __ptr64>,boost::arg<1>,boost::arg<2>>>::operator()<App::DocumentO bind_template.hpp 103 0x7ffc068d2268
46 boost::detail::function::void_function_obj_invoker2<boost::_bi::bind_t<void,boost::_mfi::mf2<void,Gui::Document,App::DocumentObject const & __ptr64,App::Property const & __ptr64>,boost::_bi::list3<boost::_bi::value<Gui::Document * __ptr64>,boost: function_template.hpp 154 0x7ffc0690308c
47 boost::function2<void,App::DocumentObject const & __ptr64,App::Property const & __ptr64>::operator() function_template.hpp 768 0x7ffc11a96fae
48 boost::signals::detail::call_bound2<void>::caller<App::DocumentObject const & __ptr64,App::Property const & __ptr64,boost::function<void __cdecl(App::DocumentObject const & __ptr64,App::Property const & __ptr64)>>::operator()<boost::signals::det signal_template.hpp 120 0x7ffc119ea04f
49 boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound2<void>::caller<App::DocumentObject const & __ptr64,App::Property const & __ptr64,boost::function<void __cdecl(App::DocumentObject const & __ptr64,App::Property const & slot_call_iterator.hpp 61 0x7ffc11ad4b3c
50 boost::iterator_core_access::dereference<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound2<void>::caller<App::DocumentObject const & __ptr64,App::Property const & __ptr64,boost::function<void __cdecl(App::DocumentObje iterator_facade.hpp 515 0x7ffc11a2b778
51 boost::iterator_facade<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound2<void>::caller<App::DocumentObject const & __ptr64,App::Property const & __ptr64,boost::function<void __cdecl(App::DocumentObject const & __ptr64 iterator_facade.hpp 640 0x7ffc11a8a800
52 boost::detail::postfix_increment_proxy<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound2<void>::caller<App::DocumentObject const & __ptr64,App::Property const & __ptr64,boost::function<void __cdecl(App::DocumentObject iterator_facade.hpp 146 0x7ffc11a57e8d
53 boost::operator++<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound2<void>::caller<App::DocumentObject const & __ptr64,App::Property const & __ptr64,boost::function<void __cdecl(App::DocumentObject const & __ptr64,App: iterator_facade.hpp 730 0x7ffc119e8c47
54 boost::last_value<void>::operator()<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound2<void>::caller<App::DocumentObject const & __ptr64,App::Property const & __ptr64,boost::function<void __cdecl(App::DocumentObject co last_value.hpp 49 0x7ffc119eb0c9
55 boost::signal2<void,App::DocumentObject const & __ptr64,App::Property const & __ptr64,boost::last_value<void>,int,std::less<int>,boost::function<void __cdecl(App::DocumentObject const & __ptr64,App::Property const & __ptr64)>>::operator() signal_template.hpp 354 0x7ffc11a9c359
56 App::Document::onChangedProperty Document.cpp 955 0x7ffc119d69a5
57 App::DocumentObject::onChanged DocumentObject.cpp 419 0x7ffc11b031ad
58 Part::Feature::onChanged PartFeature.cpp 144 0x7ffc088c3e6d
59 App::FeaturePythonT<Part::Feature>::onChanged FeaturePython.h 203 0x7ffc088d0969
60 App::Property::hasSetValue Property.cpp 126 0x7ffc11c06bda
61 App::PropertyLinkList::setValues PropertyLinks.cpp 241 0x7ffc11c23aad
62 App::GroupExtension::addObject GroupExtension.cpp 74 0x7ffc11b23893
63 App::OriginGroupExtension::addObject OriginGroupExtension.cpp 193 0x7ffc11bb93d1
64 App::GroupExtensionPy::addObject GroupExtensionPyImp.cpp 90 0x7ffc11b285c9
65 App::GroupExtensionPy::staticCallback_addObject GroupExtensionPy.cpp 220 0x7ffc11b28292
66 PyCFunction_Call methodobject.c 81 0x1e17dd18
67 call_function ceval.c 4033 0x1e21c934
68 PyEval_EvalFrameEx ceval.c 2681 0x1e21a2ca
69 PyEval_EvalCodeEx ceval.c 3265 0x1e214dff
70 fast_function ceval.c 4133 0x1e21deea
71 call_function ceval.c 4055 0x1e21ca19
72 PyEval_EvalFrameEx ceval.c 2681 0x1e21a2ca
73 fast_function ceval.c 4120 0x1e21de4f
74 call_function ceval.c 4055 0x1e21ca19
75 PyEval_EvalFrameEx ceval.c 2681 0x1e21a2ca
76 fast_function ceval.c 4120 0x1e21de4f
77 call_function ceval.c 4055 0x1e21ca19
78 PyEval_EvalFrameEx ceval.c 2681 0x1e21a2ca
79 PyEval_EvalCodeEx ceval.c 3265 0x1e214dff
80 fast_function ceval.c 4133 0x1e21deea
81 call_function ceval.c 4055 0x1e21ca19
82 PyEval_EvalFrameEx ceval.c 2681 0x1e21a2ca
83 fast_function ceval.c 4120 0x1e21de4f
84 call_function ceval.c 4055 0x1e21ca19
85 PyEval_EvalFrameEx ceval.c 2681 0x1e21a2ca
86 PyEval_EvalCodeEx ceval.c 3265 0x1e214dff
87 function_call funcobject.c 531 0x1e15cb1d
88 PyObject_Call abstract.c 2529 0x1e10bddb
89 instancemethod_call classobject.c 2602 0x1e12b749
90 PyObject_Call abstract.c 2529 0x1e10bddb
91 PyEval_CallObjectWithKeywords ceval.c 3903 0x1e214426
92 PyObject_CallObject abstract.c 2518 0x1e10c360
93 PySide::SignalManager::callPythonMetaMethod signalmanager.cpp 480 0x7ffc2a38417f
94 PySide::GlobalReceiverV2::qt_metacall globalreceiverv2.cpp 293 0x7ffc2a38e506
95 QBuffer::qt_static_metacall QtCored4 0x5b3e6d74
96 QBuffer::qt_static_metacall QtCored4 0x5b3fb202
97 QBuffer::qt_static_metacall QtCored4 0x5b499040
98 QBuffer::qt_static_metacall QtCored4 0x5b4122a5
99 initQtCore QtCore_d 0x7ffc0fb4e5bc
100 QBuffer::qt_static_metacall QtCored4 0x5b3fcaf3
101 initQtCore QtCore_d 0x7ffc0fb4dd6c
102 QAbstractItemView::qt_metacast QtGuid4 0x5928bbf6
103 QAbstractItemView::qt_metacast QtGuid4 0x592865e8
104 Gui::GUIApplication::notify GuiApplication.cpp 91 0x7ffc0693e822
105 QBuffer::qt_static_metacall QtCored4 0x5b3da1ca
106 QBuffer::qt_static_metacall QtCored4 0x5b3e2d43
107 QBuffer::qt_static_metacall QtCored4 0x5b430bc7
108 QBuffer::qt_static_metacall QtCored4 0x5b42e4a3
109 CallWindowProcW USER32 0x7ffc47401c24
110 DispatchMessageW USER32 0x7ffc4740156c
111 QBuffer::qt_static_metacall QtCored4 0x5b42eef8
112 QAbstractItemView::qt_metacast QtGuid4 0x5937c875
113 QBuffer::qt_static_metacall QtCored4 0x5b3d8379
114 Gui::BitmapFactoryInst::pixmapFromSvg BitmapFactory.cpp 396 0x7ffc068ba92f
115 Gui::BitmapFactoryInst::loadPixmap BitmapFactory.cpp 239 0x7ffc068bcbcc
116 Gui::BitmapFactoryInst::pixmap BitmapFactory.cpp 278 0x7ffc068b9f85
117 Gui::ViewProvider::getIcon ViewProvider.cpp 247 0x7ffc06e3f4f2
118 Gui::DocumentItem::slotNewObject Tree.cpp 1017 0x7ffc06b847a2
119 boost::_mfi::mf2<void,Gui::DocumentItem,Gui::DocumentObjectItem * __ptr64,Gui::ViewProviderDocumentObject const & __ptr64>::operator() mem_fn_template.hpp 281 0x7ffc06ba7833
120 boost::_bi::list3<boost::_bi::value<Gui::DocumentItem * __ptr64>,boost::_bi::value<Gui::DocumentObjectItem * __ptr64>,boost::arg<1>>::operator()<boost::_mfi::mf2<void,Gui::DocumentItem,Gui::DocumentObjectItem * __ptr64,Gui::ViewProviderDocumentO bind.hpp 393 0x7ffc06b8d5cd
121 boost::_bi::bind_t<void,boost::_mfi::mf2<void,Gui::DocumentItem,Gui::DocumentObjectItem * __ptr64,Gui::ViewProviderDocumentObject const & __ptr64>,boost::_bi::list3<boost::_bi::value<Gui::DocumentItem * __ptr64>,boost::_bi::value<Gui::DocumentObj bind_template.hpp 48 0x7ffc06b8d98b
122 boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void,boost::_mfi::mf2<void,Gui::DocumentItem,Gui::DocumentObjectItem * __ptr64,Gui::ViewProviderDocumentObject const & __ptr64>,boost::_bi::list3<boost::_bi::value<Gui::Docume function_template.hpp 154 0x7ffc06bb3262
123 boost::function1<void,Gui::ViewProviderDocumentObject const & __ptr64>::operator() function_template.hpp 768 0x7ffc068f2b11
124 boost::signals::detail::call_bound1<void>::caller<Gui::ViewProviderDocumentObject const & __ptr64,boost::function<void __cdecl(Gui::ViewProviderDocumentObject const & __ptr64)>>::operator()<boost::signals::detail::connection_slot_pair> signal_template.hpp 120 0x7ffc068d14d3
125 boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound1<void>::caller<Gui::ViewProviderDocumentObject const & __ptr64,boost::function<void __cdecl(Gui::ViewProviderDocumentObject const & __ptr64)>>,boost::signals::detail:: slot_call_iterator.hpp 61 0x7ffc068fd25c
126 boost::iterator_core_access::dereference<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound1<void>::caller<Gui::ViewProviderDocumentObject const & __ptr64,boost::function<void __cdecl(Gui::ViewProviderDocumentObject con iterator_facade.hpp 515 0x7ffc068e4388
127 boost::iterator_facade<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound1<void>::caller<Gui::ViewProviderDocumentObject const & __ptr64,boost::function<void __cdecl(Gui::ViewProviderDocumentObject const & __ptr64)>>,b iterator_facade.hpp 640 0x7ffc068f0710
128 boost::detail::postfix_increment_proxy<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound1<void>::caller<Gui::ViewProviderDocumentObject const & __ptr64,boost::function<void __cdecl(Gui::ViewProviderDocumentObject const iterator_facade.hpp 146 0x7ffc068eabad
129 boost::operator++<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound1<void>::caller<Gui::ViewProviderDocumentObject const & __ptr64,boost::function<void __cdecl(Gui::ViewProviderDocumentObject const & __ptr64)>>,boost: iterator_facade.hpp 730 0x7ffc068d1167
130 boost::last_value<void>::operator()<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound1<void>::caller<Gui::ViewProviderDocumentObject const & __ptr64,boost::function<void __cdecl(Gui::ViewProviderDocumentObject const & last_value.hpp 49 0x7ffc068d1f09
131 boost::signal1<void,Gui::ViewProviderDocumentObject const & __ptr64,boost::last_value<void>,int,std::less<int>,boost::function<void __cdecl(Gui::ViewProviderDocumentObject const & __ptr64)>>::operator() signal_template.hpp 354 0x7ffc068f327c
132 Gui::Document::slotNewObject Document.cpp 466 0x7ffc068c2cd8
133 boost::_mfi::mf1<void,Gui::Document,App::DocumentObject const & __ptr64>::operator() mem_fn_template.hpp 166 0x7ffc068f2e29
134 boost::_bi::list2<boost::_bi::value<Gui::Document * __ptr64>,boost::arg<1>>::operator()<boost::_mfi::mf1<void,Gui::Document,App::DocumentObject const & __ptr64>,boost::_bi::list1<App::DocumentObject const & __ptr64>> bind.hpp 314 0x7ffc068d18aa
135 boost::_bi::bind_t<void,boost::_mfi::mf1<void,Gui::Document,App::DocumentObject const & __ptr64>,boost::_bi::list2<boost::_bi::value<Gui::Document * __ptr64>,boost::arg<1>>>::operator()<App::DocumentObject> bind_template.hpp 48 0x7ffc068d210b
136 boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void,boost::_mfi::mf1<void,Gui::Document,App::DocumentObject const & __ptr64>,boost::_bi::list2<boost::_bi::value<Gui::Document * __ptr64>,boost::arg<1>>>,void,App::Document function_template.hpp 154 0x7ffc06902f92
137 boost::function1<void,App::DocumentObject const & __ptr64>::operator() function_template.hpp 768 0x7ffc11a96d41
138 boost::signals::detail::call_bound1<void>::caller<App::DocumentObject const & __ptr64,boost::function<void __cdecl(App::DocumentObject const & __ptr64)>>::operator()<boost::signals::detail::connection_slot_pair> signal_template.hpp 120 0x7ffc119ea183
139 boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound1<void>::caller<App::DocumentObject const & __ptr64,boost::function<void __cdecl(App::DocumentObject const & __ptr64)>>,boost::signals::detail::named_slot_map_iterator> slot_call_iterator.hpp 61 0x7ffc11ad4c9c
140 boost::iterator_core_access::dereference<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound1<void>::caller<App::DocumentObject const & __ptr64,boost::function<void __cdecl(App::DocumentObject const & __ptr64)>>,boost:: iterator_facade.hpp 515 0x7ffc11a2b7f8
141 boost::iterator_facade<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound1<void>::caller<App::DocumentObject const & __ptr64,boost::function<void __cdecl(App::DocumentObject const & __ptr64)>>,boost::signals::detail::n iterator_facade.hpp 640 0x7ffc11a8a8a0
142 boost::detail::postfix_increment_proxy<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound1<void>::caller<App::DocumentObject const & __ptr64,boost::function<void __cdecl(App::DocumentObject const & __ptr64)>>,boost::si iterator_facade.hpp 146 0x7ffc11a57f2d
143 boost::operator++<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound1<void>::caller<App::DocumentObject const & __ptr64,boost::function<void __cdecl(App::DocumentObject const & __ptr64)>>,boost::signals::detail::named_ iterator_facade.hpp 730 0x7ffc119e8d67
144 boost::last_value<void>::operator()<boost::signals::detail::slot_call_iterator<boost::signals::detail::call_bound1<void>::caller<App::DocumentObject const & __ptr64,boost::function<void __cdecl(App::DocumentObject const & __ptr64)>>,boost::signa last_value.hpp 49 0x7ffc119eb209
145 boost::signal1<void,App::DocumentObject const & __ptr64,boost::last_value<void>,int,std::less<int>,boost::function<void __cdecl(App::DocumentObject const & __ptr64)>>::operator() signal_template.hpp 354 0x7ffc11a9b7ec
146 App::Document::addObject Document.cpp 2194 0x7ffc119cb82c
147 App::DocumentPy::addObject DocumentPyImp.cpp 228 0x7ffc11b48928
148 App::DocumentPy::staticCallback_addObject DocumentPy.cpp 1115 0x7ffc11b48792
149 PyCFunction_Call methodobject.c 81 0x1e17dd18
150 call_function ceval.c 4033 0x1e21c934
151 PyEval_EvalFrameEx ceval.c 2681 0x1e21a2ca
152 PyEval_EvalCodeEx ceval.c 3265 0x1e214dff
153 PyEval_EvalCode ceval.c 679 0x1e2144a9
154 run_mod pythonrun.c 1377 0x1e278ed9
155 PyRun_StringFlags pythonrun.c 1340 0x1e27655d
156 Base::InterpreterSingleton::runString Interpreter.cpp 196 0x7ffc2aff12b5
157 Gui::Command::runCommand Command.cpp 485 0x7ffc0699638a
158 CmdPartCylinder::activated CommandParametric.cpp 63 0x7ffc09c6782b
159 Gui::Command::invoke Command.cpp 300 0x7ffc069957be
160 Gui::Action::onActivated Action.cpp 95 0x7ffc06980cde
161 Gui::Action::qt_static_metacall moc_Action.cpp 49 0x7ffc069801e1
162 QBuffer::qt_static_metacall QtCored4 0x5b3fb109
163 QAbstractItemView::qt_metacast QtGuid4 0x5925a5dd
164 QAbstractItemView::qt_metacast QtGuid4 0x59259a0d
165 QAbstractItemView::qt_metacast QtGuid4 0x5927f595
166 QAbstractItemView::qt_metacast QtGuid4 0x59a7ad84
167 QAbstractItemView::qt_metacast QtGuid4 0x59922c67
168 QAbstractItemView::qt_metacast QtGuid4 0x59921d46
169 QAbstractItemView::qt_metacast QtGuid4 0x59a7a89c
170 QAbstractItemView::qt_metacast QtGuid4 0x5932d556
171 QAbstractItemView::qt_metacast QtGuid4 0x59921879
172 QAbstractItemView::qt_metacast QtGuid4 0x59a7a6da
173 QAbstractItemView::qt_metacast QtGuid4 0x5928bbf6
174 QAbstractItemView::qt_metacast QtGuid4 0x59286f26
175 Gui::GUIApplication::notify GuiApplication.cpp 91 0x7ffc0693e822
176 QBuffer::qt_static_metacall QtCored4 0x5b3da1ca
177 QBuffer::qt_static_metacall QtCored4 0x5b4a3a6c
178 QAbstractItemView::qt_metacast QtGuid4 0x5928dac6
179 QAbstractItemView::qt_metacast QtGuid4 0x5937877f
180 QAbstractItemView::qt_metacast QtGuid4 0x59373991
181 CallWindowProcW USER32 0x7ffc47401c24
182 DispatchMessageW USER32 0x7ffc4740156c
183 QBuffer::qt_static_metacall QtCored4 0x5b42eef8
184 QAbstractItemView::qt_metacast QtGuid4 0x5937c875
185 QBuffer::qt_static_metacall QtCored4 0x5b3d5f24
186 QBuffer::qt_static_metacall QtCored4 0x5b3d6207
187 QBuffer::qt_static_metacall QtCored4 0x5b3d824c
188 QAbstractItemView::qt_metacast QtGuid4 0x592861c8
189 Gui::Application::runApplication Application.cpp 1757 0x7ffc067fbde7
190 main MainGui.cpp 239 0x7ff77a5835c5
191 WinMain FreeCAD_d 0x7ff77a5932d1
192 __tmainCRTStartup crtexe.c 618 0x7ff77a591391
193 WinMainCRTStartup crtexe.c 466 0x7ff77a59110e
194 BaseThreadInitThunk KERNEL32 0x7ffc48568364
195 RtlUserThreadStart ntdll 0x7ffc487170d1
key points in stack are: Cylinder creation -> Tree is notified -> Tree loads icon -> during icon load, Part-o-magic's timer fires -> part-o-magic tries to add Cylinder to ShapeGroup -> Tree is notified -> Tree crashes