#619 Made TreeView stable

Merged, abandoned or rejected pull requests are moved here to clear the main Pull Requests forum.
Post Reply
realthunder
Veteran
Posts: 2190
Joined: Tue Jan 03, 2017 10:55 am

#619 Made TreeView stable

Post by realthunder »

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.
Try Assembly3 with my custom build of FreeCAD at here.
And if you'd like to show your support, you can donate through patreon, liberapay, or paypal
User avatar
DeepSOIC
Veteran
Posts: 7896
Joined: Fri Aug 29, 2014 12:45 am
Location: used to be Saint-Petersburg, Russia

Re: #619 Made TreeView stable

Post by DeepSOIC »

Interesting...
User avatar
DeepSOIC
Veteran
Posts: 7896
Joined: Fri Aug 29, 2014 12:45 am
Location: used to be Saint-Petersburg, Russia

Re: #619 Made TreeView stable

Post by DeepSOIC »

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 :roll: )
User avatar
DeepSOIC
Veteran
Posts: 7896
Joined: Fri Aug 29, 2014 12:45 am
Location: used to be Saint-Petersburg, Russia

Re: #619 Made TreeView stable

Post by DeepSOIC »

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 ;)
Attachments
realthunder-tree-crash.png
realthunder-tree-crash.png (201 KiB) Viewed 3076 times
User avatar
DeepSOIC
Veteran
Posts: 7896
Joined: Fri Aug 29, 2014 12:45 am
Location: used to be Saint-Petersburg, Russia

Re: #619 Made TreeView stable

Post by DeepSOIC »

False alarm. After clean build, no crashes so far.
realthunder
Veteran
Posts: 2190
Joined: Tue Jan 03, 2017 10:55 am

Re: #619 Made TreeView stable

Post by realthunder »

DeepSOIC wrote:False alarm. After clean build, no crashes so far.
-_-; wish there is a wiping sweat emoticon.

On the other hand, I'll be surprised if this patch isn't causing a bunch of problems here and there.
Try Assembly3 with my custom build of FreeCAD at here.
And if you'd like to show your support, you can donate through patreon, liberapay, or paypal
User avatar
DeepSOIC
Veteran
Posts: 7896
Joined: Fri Aug 29, 2014 12:45 am
Location: used to be Saint-Petersburg, Russia

Re: #619 Made TreeView stable

Post by DeepSOIC »

Lazy loading works well. This graph (with every compoundfilter claiming compound as child), there is no significant memory consumption.
realthunder-tree-test-lazy.png
realthunder-tree-test-lazy.png (437.99 KiB) Viewed 3050 times
Overall, so far I put a thick approval :D

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.
User avatar
DeepSOIC
Veteran
Posts: 7896
Joined: Fri Aug 29, 2014 12:45 am
Location: used to be Saint-Petersburg, Russia

Re: #619 Made TreeView stable

Post by DeepSOIC »

Oh, no :cry: it just crashed again...
realthunder
Veteran
Posts: 2190
Joined: Tue Jan 03, 2017 10:55 am

Re: #619 Made TreeView stable

Post by realthunder »

DeepSOIC wrote:Oh, no :cry: it just crashed again...
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.
Try Assembly3 with my custom build of FreeCAD at here.
And if you'd like to show your support, you can donate through patreon, liberapay, or paypal
User avatar
DeepSOIC
Veteran
Posts: 7896
Joined: Fri Aug 29, 2014 12:45 am
Location: used to be Saint-Petersburg, Russia

Re: #619 Made TreeView stable

Post by DeepSOIC »

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:

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	
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
Post Reply