Comments (22)
I deleted parts from the file to make it simpler and reproduces the problem anyway. This way you shouldn't need to install the fasteners WB either
crash1.zip
from freecad.
I downloaded the simplified file and can reproduce the crash :
<Exception> TopoShapeExpansion.cpp(2066): Shape index 71 out of bound 19
updateGeometryColor was changed by me during the sketch colors PR (construction lines and point colors both). However I do not think they could cause the crash. From the error I'm seing, the likely culprit is the current TNP work. @bgbsww @CalligaroV
from freecad.
As far as I can tell, the code that ensures that we correctly handle missing external references applies not just during a file load, but during each close and open of a sketch. So this patch appears to handle both the crash, and the generation of an invalid sketch. Thanks for the extra detail, RiccaDS.
from freecad.
Sketch won't open on my side, no crash though.
OS: Windows 10 build 19045
Word size of FreeCAD: 64-bit
Version: 0.22.0dev.36874 (Git)
Build type: Release
Branch: main
Hash: a4dd600ec6d5a53a9960cd9f8693d7d307b9e359
Python 3.11.8, Qt 5.15.13, Coin 4.0.2, Vtk 9.2.6, OCC 7.7.2
Locale: German/Germany (de_DE)
from freecad.
Sketch won't open on my side, no crash though.
OS: Windows 10 build 19045 Word size of FreeCAD: 64-bit Version: 0.22.0dev.36874 (Git) Build type: Release Branch: main Hash: a4dd600ec6d5a53a9960cd9f8693d7d307b9e359 Python 3.11.8, Qt 5.15.13, Coin 4.0.2, Vtk 9.2.6, OCC 7.7.2 Locale: German/Germany (de_DE)
EDIT:
I noticed it crashes if you zoom out in the view to a big extent. This should be reproducible.
from freecad.
Sketch won't open on my side, no crash though.
Yeah, it doesn't open (but shows some Sketcher constraints and elements in the Tasks tab) and doesn't crash on Windows in 0.22 weekly. Just throws a bunch of errors:
19:10:55 <Exception> TopoShapeExpansion.cpp(2066): Shape index 71 out of bound 19
19:10:56 <Exception> Access violation
19:10:56 0 Selection.cpp(155): Unhandled Base::Exception caught in selection observer:
19:10:56 <Exception> Access violation
19:10:56 0.0131486 Selection.cpp(155): Unhandled Base::Exception caught in selection observer:
19:10:56 <Exception> Access violation
19:10:56 0.0219771 Selection.cpp(155): Unhandled Base::Exception caught in selection observer:
19:10:56 <Exception> Access violation
19:10:56 0.0300945 Selection.cpp(155): Unhandled Base::Exception caught in selection observer:
19:10:56 <Exception> Access violation
19:10:56 0.0760465 Selection.cpp(155): Unhandled Base::Exception caught in selection observer:
19:10:56 <Exception> Access violation
19:10:56 0.0937659 Selection.cpp(155): Unhandled Base::Exception caught in selection observer:
19:10:57 <Exception> Access violation
19:10:57 0.335471 Selection.cpp(155): Unhandled Base::Exception caught in selection observer:
19:10:57 <Exception> Access violation
19:10:57 0.360978 Selection.cpp(155): Unhandled Base::Exception caught in selection observer:
19:10:57 <Exception> Access violation
19:10:57 0.372449 Selection.cpp(155): Unhandled Base::Exception caught in selection observer:
19:10:57 <Exception> Access violation
19:10:57 0.426199 Selection.cpp(155): Unhandled Base::Exception caught in selection observer:
19:10:57 <Exception> Access violation
19:10:57 0.446323 Selection.cpp(155): Unhandled Base::Exception caught in selection observer:
19:10:57 <Exception> Access violation
19:10:57 0.461027 Selection.cpp(155): Unhandled Base::Exception caught in selection observer:
19:10:57 <Exception> Access violation
19:10:57 0.625094 Selection.cpp(155): Unhandled Base::Exception caught in selection observer:
19:10:57 <Exception> Access violation
19:10:57 0.641805 Selection.cpp(155): Unhandled Base::Exception caught in selection observer:
19:11:07 <Exception> Access violation
19:11:07 11.0817 Selection.cpp(155): Unhandled Base::Exception caught in selection observer:
19:11:09 <Exception> Access violation
19:11:09 12.3683 Selection.cpp(155): Unhandled Base::Exception caught in selection observer:
from freecad.
FreeCAD does not crash when opening the sketch, but crashes when closing. SketcherGui::EditModeGeometryCoinManager::updateGeometryColor
again causes the crash.
FreeCAD reports when opening:
01:40:07 pyException: Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/shiboken2/files.dir/shibokensupport/__feature__.py", line 142, in _import
return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'FastenersCmd'
01:40:07 pyException: Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/shiboken2/files.dir/shibokensupport/__feature__.py", line 142, in _import
return original_import(name, *args, **kwargs)
<class 'ModuleNotFoundError'>: No module named 'FastenersCmd'
01:40:43 <Exception> TopoShapeExpansion.cpp(2065): Part::TopoShape Part::TopoShape::getSubTopoShape(TopAbs_ShapeEnum, int, bool) const -- Shape index 71 out of bound 19
01:40:45 pyException: Traceback (most recent call last):
File "<string>", line 1, in <module>
<class 'NameError'>: Unknown document ''
01:40:45 Unhandled Base::Exception caught in GUIApplication::notify.
The error message is: Unknown document ''
The backtrace
Process 1681 stopped
* thread #1, name = 'FreeCAD', stop reason = signal SIGSEGV: address not mapped to object (fault address: 0x0)
frame #0: 0x00007fff50906a18 SketcherGui.so`SketcherGui::EditModeGeometryCoinManager::updateGeometryColor(Sketcher::GeoListModel<std::unique_ptr<Sketcher::GeometryFacade const, std::default_delete<Sketcher::GeometryFacade const>>> const&, bool) [inlined] std::vector<int, std::allocator<int>>::operator[](__n=0, this=size=0) at stl_vector.h:1126:39
1123 operator[](size_type __n) _GLIBCXX_NOEXCEPT
1124 {
1125 __glibcxx_requires_subscript(__n);
-> 1126 return *(this->_M_impl._M_start + __n);
1127 }
1128
1129 /**
(lldb) bt
* thread #1, name = 'FreeCAD', stop reason = signal SIGSEGV: address not mapped to object (fault address: 0x0)
* frame #0: 0x00007fff50906a18 SketcherGui.so`SketcherGui::EditModeGeometryCoinManager::updateGeometryColor(Sketcher::GeoListModel<std::unique_ptr<Sketcher::GeometryFacade const, std::default_delete<Sketcher::GeometryFacade const>>> const&, bool) [inlined] std::vector<int, std::allocator<int>>::operator[](__n=0, this=size=0) at stl_vector.h:1126:39
frame #1: 0x00007fff50906a0d SketcherGui.so`SketcherGui::EditModeGeometryCoinManager::updateGeometryColor(Sketcher::GeoListModel<std::unique_ptr<Sketcher::GeometryFacade const, std::default_delete<Sketcher::GeometryFacade const>>> const&, bool) [inlined] SketcherGui::CoinMapping::getPointGeoId(layerindex=0, pointindex=0, this=0x00005555592aec38) at EditModeCoinManagerParameters.h:488:53
frame #2: 0x00007fff509069fb SketcherGui.so`SketcherGui::EditModeGeometryCoinManager::updateGeometryColor(this=0x0000555558b07e20, geolistfacade=0x00007fffffffac20, issketchinvalid=false) at EditModeGeometryCoinManager.cpp:193:50
frame #3: 0x00007fff50901ffc SketcherGui.so`SketcherGui::EditModeCoinManager::updateColor(this=0x00005555592ae9a0, geolistfacade=0x00007fffffffac20) at EditModeCoinManager.cpp:884:54
frame #4: 0x00007fff509020bf SketcherGui.so`SketcherGui::EditModeCoinManager::updateColor(this=0x00005555592ae9a0) at EditModeCoinManager.cpp:877:16
frame #5: 0x00007fff5091ce47 SketcherGui.so`SketcherGui::ViewProviderSketch::updateColor(this=0x000055555a1ae520) at ViewProviderSketch.cpp:2588:33
frame #6: 0x00007fff50921540 SketcherGui.so`SketcherGui::ViewProviderSketch::onSelectionChanged(this=0x000055555a1ae520, msg=0x00007fffffffb320) at ViewProviderSketch.cpp:2207:30
frame #7: 0x00007ffff7187d59 libFreeCADGui.so`Gui::SelectionObserver::_onSelectionChanged(this=<unavailable>, msg=<unavailable>) at Selection.cpp:152:27
frame #8: 0x00007ffff71966b5 libFreeCADGui.so`void std::__invoke_impl<void, void (Gui::SelectionObserver::*&)(Gui::SelectionChanges const&), Gui::SelectionObserver*&, Gui::SelectionChanges const&>((null)=__invoke_memfun_deref @ 0x00007fffffffaf80, __f=<unavailable>, __t=<unavailable>, (null)=<unavailable>) at invoke.h:74:46
frame #9: 0x00007ffff71966d3 libFreeCADGui.so`boost::detail::function::void_function_obj_invoker1<std::_Bind<void (Gui::SelectionObserver::* (Gui::SelectionObserver*, std::_Placeholder<1>))(Gui::SelectionChanges const&)>, void, Gui::SelectionChanges const&>::invoke(boost::detail::function::function_buffer&, Gui::SelectionChanges const&) [inlined] std::__invoke_result<void (Gui::SelectionObserver::*&)(Gui::SelectionChanges const&), Gui::SelectionObserver*&, Gui::SelectionChanges const&>::type std::__invoke<void (Gui::SelectionObserver::*&)(Gui::SelectionChanges const&), Gui::SelectionObserver*&, Gui::SelectionChanges const&>((null)=0x00007fffffffb320, (null)=<unavailable>, __fn=<unavailable>) at invoke.h:96:40
frame #10: 0x00007ffff71966ce libFreeCADGui.so`boost::detail::function::void_function_obj_invoker1<std::_Bind<void (Gui::SelectionObserver::* (Gui::SelectionObserver*, std::_Placeholder<1>))(Gui::SelectionChanges const&)>, void, Gui::SelectionChanges const&>::invoke(boost::detail::function::function_buffer&, Gui::SelectionChanges const&) [inlined] void std::_Bind<void (Gui::SelectionObserver::* (Gui::SelectionObserver*, std::_Placeholder<1>))(Gui::SelectionChanges const&)>::__call<void, Gui::SelectionChanges const&, 0ul, 1ul>((null)=<unavailable>, __args=0x00007fffffffaf88, this=<unavailable>) at functional:506:24
frame #11: 0x00007ffff71966ca libFreeCADGui.so`boost::detail::function::void_function_obj_invoker1<std::_Bind<void (Gui::SelectionObserver::* (Gui::SelectionObserver*, std::_Placeholder<1>))(Gui::SelectionChanges const&)>, void, Gui::SelectionChanges const&>::invoke(boost::detail::function::function_buffer&, Gui::SelectionChanges const&) [inlined] void std::_Bind<void (Gui::SelectionObserver::* (Gui::SelectionObserver*, std::_Placeholder<1>))(Gui::SelectionChanges const&)>::operator()<Gui::SelectionChanges const&, void>((null)=0x00007fffffffb320, this=<unavailable>) at functional:591:32
frame #12: 0x00007ffff71966c6 libFreeCADGui.so`boost::detail::function::void_function_obj_invoker1<std::_Bind<void (Gui::SelectionObserver::* (Gui::SelectionObserver*, std::_Placeholder<1>))(Gui::SelectionChanges const&)>, void, Gui::SelectionChanges const&>::invoke(function_obj_ptr=<unavailable>, a0=0x00007fffffffb320) at function_template.hpp:158:11
frame #13: 0x00007ffff6ee730b libFreeCADGui.so`boost::function1<void, Gui::SelectionChanges const&>::operator()(this=<unavailable>, a0=<unavailable>) const at function_template.hpp:763:28
frame #14: 0x00007ffff6ee73c9 libFreeCADGui.so`boost::signals2::detail::void_type boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>::operator()<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>(boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>> const&) const [inlined] boost::signals2::detail::void_type boost::signals2::detail::call_with_tuple_args<boost::signals2::detail::void_type>::m_invoke<boost::function<void (Gui::SelectionChanges const&)>, 0u, Gui::SelectionChanges const&>((null)=0x0000000000000000, args=0x00007fffffffb240, (null)=<unavailable>, func=<unavailable>, this=<unavailable>) const at variadic_slot_invoker.hpp:105:15
frame #15: 0x00007ffff6ee73bd libFreeCADGui.so`boost::signals2::detail::void_type boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>::operator()<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>(boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>> const&) const [inlined] boost::signals2::detail::void_type boost::signals2::detail::call_with_tuple_args<boost::signals2::detail::void_type>::operator()<boost::function<void (Gui::SelectionChanges const&)>, Gui::SelectionChanges const&, 1ul>((null)=<unavailable>, args=0x00007fffffffb240, func=<unavailable>, this=<unavailable>) const at variadic_slot_invoker.hpp:90:32
frame #16: 0x00007ffff6ee73bd libFreeCADGui.so`boost::signals2::detail::void_type boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>::operator()<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>(this=0x00007fffffffb240, connectionBody=<unavailable>) const at variadic_slot_invoker.hpp:133:53
frame #17: 0x00007ffff6ee73fd libFreeCADGui.so`boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>::dereference(this=0x00007fffffffb030) const at slot_call_iterator.hpp:110:43
frame #18: 0x00007ffff6ee9256 libFreeCADGui.so`void boost::signals2::optional_last_value<void>::operator()<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>(boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>, boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>) const [inlined] boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>::reference boost::iterators::iterator_core_access::dereference<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>(f=0x00007fffffffb030) at iterator_facade.hpp:550:31
frame #19: 0x00007ffff6ee924d libFreeCADGui.so`void boost::signals2::optional_last_value<void>::operator()<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>(boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>, boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>) const [inlined] boost::iterators::detail::iterator_facade_base<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>, boost::signals2::detail::void_type, boost::iterators::single_pass_traversal_tag, boost::signals2::detail::void_type const&, long, false, false>::operator*(this=0x00007fffffffb030) const at iterator_facade.hpp:656:53
frame #20: 0x00007ffff6ee924d libFreeCADGui.so`void boost::signals2::optional_last_value<void>::operator()<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>(this=<unavailable>, first=slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, const Gui::SelectionChanges&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(const Gui::SelectionChanges&), boost::function<void(const Gui::SelectionChanges&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(const Gui::SelectionChanges&), boost::function<void(const Gui::SelectionChanges&)> >, boost::signals2::mutex> > @ 0x00007fffffffb030, last=slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, const Gui::SelectionChanges&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(const Gui::SelectionChanges&), boost::function<void(const Gui::SelectionChanges&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(const Gui::SelectionChanges&), boost::function<void(const Gui::SelectionChanges&)> >, boost::signals2::mutex> > @ 0x00007fffffffb050) const at optional_last_value.hpp:57:13
frame #21: 0x00007ffff6ee94c3 libFreeCADGui.so`boost::signals2::detail::signal_impl<void (Gui::SelectionChanges const&), boost::signals2::optional_last_value<void>, int, std::less<int>, boost::function<void (Gui::SelectionChanges const&)>, boost::function<void (boost::signals2::connection const&, Gui::SelectionChanges const&)>, boost::signals2::mutex>::operator()(Gui::SelectionChanges const&) [inlined] void boost::signals2::detail::combiner_invoker<void>::operator()<boost::signals2::optional_last_value<void>, boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>(last=slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, const Gui::SelectionChanges&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(const Gui::SelectionChanges&), boost::function<void(const Gui::SelectionChanges&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(const Gui::SelectionChanges&), boost::function<void(const Gui::SelectionChanges&)> >, boost::signals2::mutex> > @ 0x00007fffffffb110, first=slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, const Gui::SelectionChanges&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(const Gui::SelectionChanges&), boost::function<void(const Gui::SelectionChanges&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(const Gui::SelectionChanges&), boost::function<void(const Gui::SelectionChanges&)> >, boost::signals2::mutex> > @ 0x00007fffffffb0f0, combiner=<unavailable>, this=<unavailable>) const at result_type_wrapper.hpp:64:19
frame #22: 0x00007ffff6ee9493 libFreeCADGui.so`boost::signals2::detail::signal_impl<void (Gui::SelectionChanges const&), boost::signals2::optional_last_value<void>, int, std::less<int>, boost::function<void (Gui::SelectionChanges const&)>, boost::function<void (boost::signals2::connection const&, Gui::SelectionChanges const&)>, boost::signals2::mutex>::operator()(this=<unavailable>, args#0=0x00007fffffffb320) at signal_template.hpp:243:13
frame #23: 0x00007ffff6ee9592 libFreeCADGui.so`boost::signals2::signal<void (Gui::SelectionChanges const&), boost::signals2::optional_last_value<void>, int, std::less<int>, boost::function<void (Gui::SelectionChanges const&)>, boost::function<void (boost::signals2::connection const&, Gui::SelectionChanges const&)>, boost::signals2::mutex>::operator()(this=<unavailable>, args#0=0x00007fffffffb320) at signal_template.hpp:722:25
frame #24: 0x00007ffff718911c libFreeCADGui.so`Gui::SelectionSingleton::slotSelectionChanged(this=0x0000555555b8a650, msg=0x00005555595e1510) at Selection.cpp:581:36
frame #25: 0x00007ffff719679b libFreeCADGui.so`void std::__invoke_impl<void, void (Gui::SelectionSingleton::*&)(Gui::SelectionChanges const&), Gui::SelectionSingleton*&, Gui::SelectionChanges const&>((null)=__invoke_memfun_deref @ 0x00007fffffffb480, __f=<unavailable>, __t=<unavailable>, (null)=<unavailable>) at invoke.h:74:46
frame #26: 0x00007ffff71967b9 libFreeCADGui.so`boost::detail::function::void_function_obj_invoker1<std::_Bind<void (Gui::SelectionSingleton::* (Gui::SelectionSingleton*, std::_Placeholder<1>))(Gui::SelectionChanges const&)>, void, Gui::SelectionChanges const&>::invoke(boost::detail::function::function_buffer&, Gui::SelectionChanges const&) [inlined] std::__invoke_result<void (Gui::SelectionSingleton::*&)(Gui::SelectionChanges const&), Gui::SelectionSingleton*&, Gui::SelectionChanges const&>::type std::__invoke<void (Gui::SelectionSingleton::*&)(Gui::SelectionChanges const&), Gui::SelectionSingleton*&, Gui::SelectionChanges const&>((null)=0x00005555595e1510, (null)=<unavailable>, __fn=<unavailable>) at invoke.h:96:40
frame #27: 0x00007ffff71967b4 libFreeCADGui.so`boost::detail::function::void_function_obj_invoker1<std::_Bind<void (Gui::SelectionSingleton::* (Gui::SelectionSingleton*, std::_Placeholder<1>))(Gui::SelectionChanges const&)>, void, Gui::SelectionChanges const&>::invoke(boost::detail::function::function_buffer&, Gui::SelectionChanges const&) [inlined] void std::_Bind<void (Gui::SelectionSingleton::* (Gui::SelectionSingleton*, std::_Placeholder<1>))(Gui::SelectionChanges const&)>::__call<void, Gui::SelectionChanges const&, 0ul, 1ul>((null)=<unavailable>, __args=0x00007fffffffb488, this=<unavailable>) at functional:506:24
frame #28: 0x00007ffff71967b0 libFreeCADGui.so`boost::detail::function::void_function_obj_invoker1<std::_Bind<void (Gui::SelectionSingleton::* (Gui::SelectionSingleton*, std::_Placeholder<1>))(Gui::SelectionChanges const&)>, void, Gui::SelectionChanges const&>::invoke(boost::detail::function::function_buffer&, Gui::SelectionChanges const&) [inlined] void std::_Bind<void (Gui::SelectionSingleton::* (Gui::SelectionSingleton*, std::_Placeholder<1>))(Gui::SelectionChanges const&)>::operator()<Gui::SelectionChanges const&, void>((null)=0x00005555595e1510, this=<unavailable>) at functional:591:32
frame #29: 0x00007ffff71967ac libFreeCADGui.so`boost::detail::function::void_function_obj_invoker1<std::_Bind<void (Gui::SelectionSingleton::* (Gui::SelectionSingleton*, std::_Placeholder<1>))(Gui::SelectionChanges const&)>, void, Gui::SelectionChanges const&>::invoke(function_obj_ptr=<unavailable>, a0=0x00005555595e1510) at function_template.hpp:158:11
frame #30: 0x00007ffff6ee730b libFreeCADGui.so`boost::function1<void, Gui::SelectionChanges const&>::operator()(this=<unavailable>, a0=<unavailable>) const at function_template.hpp:763:28
frame #31: 0x00007ffff6ee73c9 libFreeCADGui.so`boost::signals2::detail::void_type boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>::operator()<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>(boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>> const&) const [inlined] boost::signals2::detail::void_type boost::signals2::detail::call_with_tuple_args<boost::signals2::detail::void_type>::m_invoke<boost::function<void (Gui::SelectionChanges const&)>, 0u, Gui::SelectionChanges const&>((null)=0x0000000000000000, args=0x00007fffffffb740, (null)=<unavailable>, func=<unavailable>, this=<unavailable>) const at variadic_slot_invoker.hpp:105:15
frame #32: 0x00007ffff6ee73bd libFreeCADGui.so`boost::signals2::detail::void_type boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>::operator()<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>(boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>> const&) const [inlined] boost::signals2::detail::void_type boost::signals2::detail::call_with_tuple_args<boost::signals2::detail::void_type>::operator()<boost::function<void (Gui::SelectionChanges const&)>, Gui::SelectionChanges const&, 1ul>((null)=<unavailable>, args=0x00007fffffffb740, func=<unavailable>, this=<unavailable>) const at variadic_slot_invoker.hpp:90:32
frame #33: 0x00007ffff6ee73bd libFreeCADGui.so`boost::signals2::detail::void_type boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>::operator()<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>(this=0x00007fffffffb740, connectionBody=<unavailable>) const at variadic_slot_invoker.hpp:133:53
frame #34: 0x00007ffff6ee73fd libFreeCADGui.so`boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>::dereference(this=0x00007fffffffb530) const at slot_call_iterator.hpp:110:43
frame #35: 0x00007ffff6ee9256 libFreeCADGui.so`void boost::signals2::optional_last_value<void>::operator()<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>(boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>, boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>) const [inlined] boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>::reference boost::iterators::iterator_core_access::dereference<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>(f=0x00007fffffffb530) at iterator_facade.hpp:550:31
frame #36: 0x00007ffff6ee924d libFreeCADGui.so`void boost::signals2::optional_last_value<void>::operator()<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>(boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>, boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>) const [inlined] boost::iterators::detail::iterator_facade_base<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>, boost::signals2::detail::void_type, boost::iterators::single_pass_traversal_tag, boost::signals2::detail::void_type const&, long, false, false>::operator*(this=0x00007fffffffb530) const at iterator_facade.hpp:656:53
frame #37: 0x00007ffff6ee924d libFreeCADGui.so`void boost::signals2::optional_last_value<void>::operator()<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>(this=<unavailable>, first=slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, const Gui::SelectionChanges&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(const Gui::SelectionChanges&), boost::function<void(const Gui::SelectionChanges&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(const Gui::SelectionChanges&), boost::function<void(const Gui::SelectionChanges&)> >, boost::signals2::mutex> > @ 0x00007fffffffb530, last=slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, const Gui::SelectionChanges&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(const Gui::SelectionChanges&), boost::function<void(const Gui::SelectionChanges&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(const Gui::SelectionChanges&), boost::function<void(const Gui::SelectionChanges&)> >, boost::signals2::mutex> > @ 0x00007fffffffb550) const at optional_last_value.hpp:57:13
frame #38: 0x00007ffff6ee94c3 libFreeCADGui.so`boost::signals2::detail::signal_impl<void (Gui::SelectionChanges const&), boost::signals2::optional_last_value<void>, int, std::less<int>, boost::function<void (Gui::SelectionChanges const&)>, boost::function<void (boost::signals2::connection const&, Gui::SelectionChanges const&)>, boost::signals2::mutex>::operator()(Gui::SelectionChanges const&) [inlined] void boost::signals2::detail::combiner_invoker<void>::operator()<boost::signals2::optional_last_value<void>, boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, Gui::SelectionChanges const&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int>>, boost::signals2::slot<void (Gui::SelectionChanges const&), boost::function<void (Gui::SelectionChanges const&)>>, boost::signals2::mutex>>>(last=slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, const Gui::SelectionChanges&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(const Gui::SelectionChanges&), boost::function<void(const Gui::SelectionChanges&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(const Gui::SelectionChanges&), boost::function<void(const Gui::SelectionChanges&)> >, boost::signals2::mutex> > @ 0x00007fffffffb610, first=slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, const Gui::SelectionChanges&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(const Gui::SelectionChanges&), boost::function<void(const Gui::SelectionChanges&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void(const Gui::SelectionChanges&), boost::function<void(const Gui::SelectionChanges&)> >, boost::signals2::mutex> > @ 0x00007fffffffb5f0, combiner=<unavailable>, this=<unavailable>) const at result_type_wrapper.hpp:64:19
frame #39: 0x00007ffff6ee9493 libFreeCADGui.so`boost::signals2::detail::signal_impl<void (Gui::SelectionChanges const&), boost::signals2::optional_last_value<void>, int, std::less<int>, boost::function<void (Gui::SelectionChanges const&)>, boost::function<void (boost::signals2::connection const&, Gui::SelectionChanges const&)>, boost::signals2::mutex>::operator()(this=<unavailable>, args#0=0x00005555595e1510) at signal_template.hpp:243:13
frame #40: 0x00007ffff6ee9592 libFreeCADGui.so`boost::signals2::signal<void (Gui::SelectionChanges const&), boost::signals2::optional_last_value<void>, int, std::less<int>, boost::function<void (Gui::SelectionChanges const&)>, boost::function<void (boost::signals2::connection const&, Gui::SelectionChanges const&)>, boost::signals2::mutex>::operator()(this=<unavailable>, args#0=0x00005555595e1510) at signal_template.hpp:722:25
frame #41: 0x00007ffff718bed2 libFreeCADGui.so`Gui::SelectionSingleton::notify(this=0x0000555555b8a650, Chng=<unavailable>) at Selection.cpp:424:39
frame #42: 0x00007ffff718c409 libFreeCADGui.so`Gui::SelectionSingleton::rmvPreselect(this=0x0000555555b8a650, signal=<unavailable>) at Selection.cpp:806:11
frame #43: 0x00007ffff6f4e527 libFreeCADGui.so`Gui::SoFCUnifiedSelection::setHighlight(this=0x0000555555e9f9b0, path=0x0000000000000000, det=0x0000000000000000, vpd=0x0000000000000000, element=0x0000000000000000, x=0, y=0, z=0) at SoFCUnifiedSelection.cpp:533:37
frame #44: 0x00007ffff6f4e696 libFreeCADGui.so`Gui::SoFCUnifiedSelection::setHighlight(this=0x0000555555e9f9b0, info=<unavailable>) at SoFCUnifiedSelection.cpp:483:28
frame #45: 0x00007ffff6f522ff libFreeCADGui.so`Gui::SoFCUnifiedSelection::handleEvent(this=0x0000555555e9f9b0, action=0x00007fffe800a1b0) at SoFCUnifiedSelection.cpp:727:29
frame #46: 0x00007ffff2a76095 libCoin.so.80c`SoAction::traverse(SoNode*) + 101
frame #47: 0x00007ffff2c10908 libCoin.so.80c`SoChildList::traverse(SoAction*, int, int) + 360
frame #48: 0x00007ffff2c57660 libCoin.so.80c`SoGroup::doAction(SoAction*) + 80
frame #49: 0x00007ffff2c6c66c libCoin.so.80c`SoSeparator::doAction(SoAction*) + 44
frame #50: 0x00007ffff2a76095 libCoin.so.80c`SoAction::traverse(SoNode*) + 101
frame #51: 0x00007ffff2a7fa9b libCoin.so.80c`SoHandleEventAction::beginTraversal(SoNode*) + 171
frame #52: 0x00007ffff2a766e8 libCoin.so.80c`SoAction::apply(SoNode*) + 200
frame #53: 0x00007ffff2c25559 libCoin.so.80c`SoEventManager::actuallyProcessEvent(SoEvent const*) + 121
frame #54: 0x00007ffff6fe8d8c libFreeCADGui.so`SIM::Coin3D::Quarter::QuarterWidget::processSoEvent(this=0x0000555558b62b40, event=0x0000555558c68960) at QuarterWidget.cpp:1028:48
frame #55: 0x00007ffff6ff0310 libFreeCADGui.so`SIM::Coin3D::Quarter::SoQTQuarterAdaptor::processSoEvent(this=0x0000555558b62b40, event=0x0000555558c68960) at SoQTQuarterAdaptor.cpp:752:63
frame #56: 0x00007ffff7025561 libFreeCADGui.so`Gui::View3DInventorViewer::processSoEventBase(this=<unavailable>, ev=0x0000555558c68960) at View3DInventorViewer.cpp:2571:37
frame #57: 0x00007ffff6ff7173 libFreeCADGui.so`Gui::NavigationStyle::processSoEvent(this=0x0000555557708050, ev=0x0000555558c68960) at NavigationStyle.cpp:1486:47
frame #58: 0x00007ffff6ffe61e libFreeCADGui.so`Gui::CADNavigationStyle::processSoEvent(this=0x0000555557708050, ev=0x0000555558c68960) at CADNavigationStyle.cpp:330:46
frame #59: 0x00007ffff6ffa701 libFreeCADGui.so`Gui::NavigationStyle::processEvent(this=0x0000555557708050, ev=0x0000555558c68960) at NavigationStyle.cpp:1457:37
frame #60: 0x00007ffff70254d9 libFreeCADGui.so`Gui::View3DInventorViewer::processSoEvent(this=0x0000555558b62b40, ev=0x0000555558c68960) at View3DInventorViewer.cpp:2566:36
frame #61: 0x00007ffff6fe4308 libFreeCADGui.so`SIM::Coin3D::Quarter::EventFilter::eventFilter(this=0x0000555558d25450, obj=<unavailable>, qevent=0x00007fffffffc3d0) at EventFilter.cpp:167:64
frame #62: 0x00007ffff3e9ec4f libQt5Core.so.5`QCoreApplicationPrivate::sendThroughObjectEventFilters(receiver=0x0000555558b62b40, event=0x00007fffffffc3d0) at qcoreapplication.cpp:1190:33
frame #63: 0x00007ffff4ae1803 libQt5Widgets.so.5`QApplicationPrivate::notify_helper(this=<unavailable>, receiver=0x0000555558b62b40, e=0x00007fffffffc3d0) at qapplication.cpp:3634:38
frame #64: 0x00007ffff4aea60a libQt5Widgets.so.5`QApplication::notify(this=<unavailable>, receiver=0x0000555558b67140, e=0x00007fffffffc870) at qapplication.cpp:3084:43
frame #65: 0x00007ffff6cf7fe6 libFreeCADGui.so`Gui::GUIApplication::notify(this=0x00007fffffffd7c0, receiver=0x0000555558b67140, event=0x00007fffffffc870) at GuiApplication.cpp:83:40
frame #66: 0x00007ffff3e9ef19 libQt5Core.so.5`QCoreApplication::notifyInternal2(receiver=0x0000555558b67140, event=0x00007fffffffc870) at qcoreapplication.cpp:1064:24
frame #67: 0x00007ffff3e9f1b4 libQt5Core.so.5`QCoreApplication::sendSpontaneousEvent(receiver=0x0000555558b67140, event=0x00007fffffffc870) at qcoreapplication.cpp:1474:27
frame #68: 0x00007ffff4ae937b libQt5Widgets.so.5`QApplicationPrivate::sendMouseEvent(receiver=0x0000555558b67140, event=0x00007fffffffc870, alienWidget=0x0000555558b67140, nativeWidget=0x00007fffffffd800, buttonDown=0x00007ffff4f4d470, lastMouseReceiver=0x00007ffff4f4d450, spontaneous=true, onlyDispatchEnterLeave=false) at qapplication.cpp:2622:56
frame #69: 0x00007ffff4b4ae1b libQt5Widgets.so.5`QWidgetWindow::handleMouseEvent(this=0x0000555555e91920, event=0x00007fffffffced0) at qwidgetwindow.cpp:684:44
frame #70: 0x00007ffff4b4e83a libQt5Widgets.so.5`QWidgetWindow::event(this=0x0000555555e91920, event=0x00007fffffffced0) at qwidgetwindow.cpp:300:25
frame #71: 0x00007ffff4ae1813 libQt5Widgets.so.5`QApplicationPrivate::notify_helper(this=0x0000555555931eb0, receiver=0x0000555555e91920, e=0x00007fffffffced0) at qapplication.cpp:3640:31
frame #72: 0x00007ffff4aea1be libQt5Widgets.so.5`QApplication::notify(this=0x00007fffffffd7c0, receiver=0x0000555555e91920, e=0x00007fffffffced0) at qapplication.cpp:2980:31
frame #73: 0x00007ffff6cf7fe6 libFreeCADGui.so`Gui::GUIApplication::notify(this=0x00007fffffffd7c0, receiver=0x0000555555e91920, event=0x00007fffffffced0) at GuiApplication.cpp:83:40
frame #74: 0x00007ffff3e9ef19 libQt5Core.so.5`QCoreApplication::notifyInternal2(receiver=0x0000555555e91920, event=0x00007fffffffced0) at qcoreapplication.cpp:1064:24
frame #75: 0x00007ffff3e9f1b4 libQt5Core.so.5`QCoreApplication::sendSpontaneousEvent(receiver=<unavailable>, event=<unavailable>) at qcoreapplication.cpp:1474:27
frame #76: 0x00007ffff4231971 libQt5Gui.so.5`QGuiApplicationPrivate::processMouseEvent(e=0x000055555b09d340) at qguiapplication.cpp:2285:42
frame #77: 0x00007ffff4233366 libQt5Gui.so.5`QGuiApplicationPrivate::processWindowSystemEvent(e=0x000055555b09d340) at qguiapplication.cpp:2005:50
frame #78: 0x00007ffff420d0c8 libQt5Gui.so.5`QWindowSystemInterface::sendWindowSystemEvents(flags=(i = 36)) at qwindowsysteminterface.cpp:1169:61
frame #79: 0x00007fffee0de466 libQt5XcbQpa.so.5`xcbSourceDispatch(source=<unavailable>, (null)=<unavailable>, (null)=<unavailable>) at qxcbeventdispatcher.cpp:105:51
frame #80: 0x00007ffff351bd3b libglib-2.0.so.0`g_main_context_dispatch + 619
frame #81: 0x00007ffff3571258 libglib-2.0.so.0`___lldb_unnamed_symbol2709 + 488
frame #82: 0x00007ffff35193e3 libglib-2.0.so.0`g_main_context_iteration + 51
frame #83: 0x00007ffff3f0bfbf libQt5Core.so.5`QEventDispatcherGlib::processEvents(this=0x0000555555853bd0, flags=(i = 36)) at qeventdispatcher_glib.cpp:423:43
frame #84: 0x00007fffee0de826 libQt5XcbQpa.so.5`QXcbGlibEventDispatcher::processEvents(this=<unavailable>, flags=<unavailable>) at qxcbeventdispatcher.cpp:143:47
frame #85: 0x00007ffff3e9c89b libQt5Core.so.5`QEventLoop::processEvents(this=0x00007fffffffd2c0, flags=<unavailable>) at qeventloop.cpp:142:68
frame #86: 0x00007ffff3e9cf3c libQt5Core.so.5`QEventLoop::exec(this=0x00007fffffffd2c0, flags=(i = 0)) at qeventloop.cpp:235:22
frame #87: 0x00007ffff3ea78df libQt5Core.so.5`QCoreApplication::exec() at qcoreapplication.cpp:1375:36
frame #88: 0x00007ffff4224a24 libQt5Gui.so.5`QGuiApplication::exec() at qguiapplication.cpp:1870:34
frame #89: 0x00007ffff4ae177d libQt5Widgets.so.5`QApplication::exec() at qapplication.cpp:2832:33
frame #90: 0x00007ffff6c4b7b1 libFreeCADGui.so`(anonymous namespace)::tryRunEventLoop(mainApp=0x00007fffffffd7c0) at Application.cpp:2039:23
frame #91: 0x00007ffff6c4ba7a libFreeCADGui.so`(anonymous namespace)::runEventLoop(mainApp=0x00007fffffffd7c0) at Application.cpp:2059:24
frame #92: 0x00007ffff6c4f8f4 libFreeCADGui.so`Gui::Application::runApplication() at Application.cpp:2136:17
frame #93: 0x000055555556a3a5 FreeCAD`main(argc=<unavailable>, argv=<unavailable>) at MainGui.cpp:278:45
frame #94: 0x00007ffff3229d90 libc.so.6`__libc_start_call_main(main=(FreeCAD`main at MainGui.cpp:105:1), argc=1, argv=0x00007fffffffdd98) at libc_start_call_main.h:58:16
frame #95: 0x00007ffff3229e40 libc.so.6`__libc_start_main_impl(main=(FreeCAD`main at MainGui.cpp:105:1), argc=1, argv=0x00007fffffffdd98, init=<unavailable>, fini=<unavailable>, rtld_fini=<unavailable>, stack_end=0x00007fffffffdd88) at libc-start.c:392:3
frame #96: 0x0000555555569c05 FreeCAD`_start + 37
(lldb)
OS: Ubuntu 22.04.3 LTS (KDE/plasma)
Word size of FreeCAD: 64-bit
Version: 0.22.0dev.36882 (Git)
Build type: Debug
Branch: main
Hash: cf1eeaab19da2d2a6eaaba3ae6bd1fc8ad620552
Python 3.10.12, Qt 5.15.12, Coin 4.0.0, Vtk 9.1.0, OCC 7.5.1
Locale: English/United States (en_US)
from freecad.
does it work with the stable 0.21.2 version?
Might it be related to the materials update?
from freecad.
@PaddleStroke @davesrocketshop
wasSketcherGui::EditModeGeometryCoinManager::updateGeometryColor
changed with color rendering in sketcher or a materials PR?
from freecad.
does it work with the stable 0.21.2 version? Might it be related to the materials update?
Tested this now in 0.21.2 and the sketch loads normally and apparently without problems
(sorry for editing, had some problems)
OS: Ubuntu 22.04.4 LTS (ubuntu:GNOME/ubuntu-xorg)
Word size of FreeCAD: 64-bit
Version: 0.21.2.33771 (Git) AppImage
Build type: Release
Branch: (HEAD detached at 0.21.2)
Hash: b9bfa5c5507506e4515816414cd27f4851d00489
Python 3.10.13, Qt 5.15.8, Coin 4.0.0, Vtk 9.2.6, OCC 7.6.3
Locale: English/United States (en_US)
Installed mods:
* sheetmetal 0.4.10
* NikraDAP 2.0.0
* Render 2024.1.23
* Assembly4 0.50.12
* fasteners 0.5.15
* workfeature-macro
* CurvedShapes 1.0.8
* FeedsAndSpeeds 0.5.0
* freecad.gears 1.0.0
* Curves 0.6.29
* OSE3dPrinter 0.1.0
* Design456 0.0.1
* kicadStepUpMod 11.1.0
* QuickMeasure 2022.10.28
* pcb 6.2023.1
* Launcher
* ExplodedAssembly
* toSketch 1.0.1
* A2plus 0.4.64
* Manipulator 1.5.7
* MakerWorkbench 1.0.1
* Estimate 0.1.2
* workfeature
* FEMbyGEN 2.1.0
from freecad.
I'll start looking into this, but I'm also getting this on opening:
15:28:14 pyException: Traceback (most recent call last): File "C:\Users\dcarter\Documents\Projects\freecad-build\bin\Lib\site-packages\shiboken2\files.dir\shibokensupport\__feature__.py", line 142, in _import return original_import(name, *args, **kwargs) <class 'ModuleNotFoundError'>: No module named 'FastenersCmd' 15:28:14 pyException: Traceback (most recent call last): File "C:\Users\dcarter\Documents\Projects\freecad-build\bin\Lib\site-packages\shiboken2\files.dir\shibokensupport\__feature__.py", line 142, in _import return original_import(name, *args, **kwargs) <class 'ModuleNotFoundError'>: No module named 'FastenersCmd'
That'll need to be fixed before assuming the error is anywhere else. Does this model use the Fasteners workbench or other external workbench?
from freecad.
I'll start looking into this, but I'm also getting this on opening:
15:28:14 pyException: Traceback (most recent call last): File "C:\Users\dcarter\Documents\Projects\freecad-build\bin\Lib\site-packages\shiboken2\files.dir\shibokensupport\__feature__.py", line 142, in _import return original_import(name, *args, **kwargs) <class 'ModuleNotFoundError'>: No module named 'FastenersCmd' 15:28:14 pyException: Traceback (most recent call last): File "C:\Users\dcarter\Documents\Projects\freecad-build\bin\Lib\site-packages\shiboken2\files.dir\shibokensupport\__feature__.py", line 142, in _import return original_import(name, *args, **kwargs) <class 'ModuleNotFoundError'>: No module named 'FastenersCmd'
That'll need to be fixed before assuming the error is anywhere else. Does this model use the Fasteners workbench or other external workbench?
Sorry. Just read the configuration from the original post. I'll install fasteners and try again
from freecad.
I'll start looking into this, but I'm also getting this on opening:
15:28:14 pyException: Traceback (most recent call last): File "C:\Users\dcarter\Documents\Projects\freecad-build\bin\Lib\site-packages\shiboken2\files.dir\shibokensupport\__feature__.py", line 142, in _import return original_import(name, *args, **kwargs) <class 'ModuleNotFoundError'>: No module named 'FastenersCmd' 15:28:14 pyException: Traceback (most recent call last): File "C:\Users\dcarter\Documents\Projects\freecad-build\bin\Lib\site-packages\shiboken2\files.dir\shibokensupport\__feature__.py", line 142, in _import return original_import(name, *args, **kwargs) <class 'ModuleNotFoundError'>: No module named 'FastenersCmd'
That'll need to be fixed before assuming the error is anywhere else. Does this model use the Fasteners workbench or other external workbench?
there is a fasteners threaded rod in the group "costruzione" but this I don't think is related to the problem as that part is hidden. Just a missing module for you.
As a note, Hole007 is threaded(not displayed) but uses the normal threading option, not the fasteners workbench. However this threading is adjacent to the Groove whose sketch gives the problem. Don't know if this might be related.
Thanks for looking
from freecad.
Reproducible here. Issue appears to be in SketchObject::restoreFinished which calls SketchObject::validateExternalLinks which ends up down at the error. Seems to be a case of missing hasher code in TNP work. More investigation to follow.
from freecad.
No, that error is as a result of the file that clearly has a bad external reference in the sketch object. Issue is how it was created, not how it is read back in.
from freecad.
No, that error is as a result of the file that clearly has a bad external reference in the sketch object. Issue is how it was created, not how it is read back in.
Should not crash tough :D
from freecad.
Agreed on the crash - I'm working on that. Curious if you have any idea how we came to have a reference to Edge71 and Edge31 in an object with only 19 Edges? I've tried a lot of things and to create a test to recreate that failure, and I can't so far.
from freecad.
@bgbsww ehm, no not really, I lost track of what I did. I've been using FreeCAD for quite some time now but I wouldn't consider myself expert in best practices and such. I am aware of the topological naming problem when sketching on the face of a same part but I admit not following the best practice to avoid that. Maybe I sketched, referenced and then modified the base part which resulted in corrupted references. Or maybe the thread modeling has something to do in this. As you can see from the picture, the hole is actually threaded, if I set "Model Thread" to True, I can see edges that have very high numbers (ex Edge67 in pic)
from freecad.
Agreed on the crash - I'm working on that. Curious if you have any idea how we came to have a reference to Edge71 and Edge31 in an object with only 19 Edges? I've tried a lot of things and to create a test to recreate that failure, and I can't so far.
this seems to be Edge71 in fact. Maybe I shouldn't have referenced to that edge if disabling "model thread" later ? :D
Indeed I found out that opening the sketch does not crash anymore if the "model thread" is set to True. I disabled it for machining purposes in the CAM module.
from freecad.
Thanks! I'll hunt that now. I do have a working fix for the crash - when the exception is thrown, we leave things in a messy state - I can fix that. I just don't want to hide the base cause if I can find it too.
from freecad.
Sure, I made a few tests and can confirm the issue on other similar and simpler models.
1- Make a threaded hole with "model thread" to True
2- Sketch and reference to one of the edges of the thread
3- Set "model thread" to false
4- Double click on the sketch and crash happens
Thank you for looking into that.
from freecad.
As far as I can tell, the code that ensures that we correctly handle missing external references applies not just during a file load, but during each close and open of a sketch. So this patch appears to handle both the crash, and the generation of an invalid sketch. Thanks for the extra detail, RiccaDS.
Just checked the weekly build, works great , thank you very much! ideally it would be perfect if the external reference was maintained even when the thread model gets disabled. As I mentioned it's not uncommon in machining setups to be in need of the model with the thread and the one without. So it's pretty frequent to enable/disable the thread model. Correcting this probably however is quite some good work as, in my understanding of how FC manages threaded holes, the thread model geometries are created/deleted each time one enables/disables the thread model, so it would be necessary to implement a "layer" with the thread model, that can be hidden/shown, which I believe can get really not straightforward :D
from freecad.
Related Issues (20)
- BIM: NativeIFC import-export prefs page changes indices of subsequent pages causing errors
- Manipulation of (built-in) Assembly objects fails with Gesture navigation HOT 1
- Tree view context menu "Send to Python Console" missing in PartDesign HOT 5
- Expression access to "children" differs between container objects HOT 2
- Automatic python modules documentation index page broken HOT 9
- Part Design pocket won't open holes HOT 1
- [Feature Request] Sketcher: auto-switch distance constraint to driven if it overconstrains.
- Sketch elements completely different in Part Design workbench HOT 1
- FreeCAD Logo Conveys an Unprofessional Identity HOT 10
- BIM: Manage project doesn't work HOT 3
- Possible regression in enum handling with pyside2 HOT 4
- BIM: UI string typos HOT 3
- WB TabBar: Moving it to menu bar hides menu / doesn't resize
- WB TabBar: Scrolling between tabs loads every WB
- Addon Manager: Allow to "focus" on a single addon HOT 2
- FreeCAD craches when using ruler tool HOT 2
- FEM: Rigid body constraint reference node symbol could update in real time
- FEM: Rigid body constraint reference node could be picked from the existing points
- Support for units with the same signature
- BIM: BIM Setup dialog mentions obsolete workbenches HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from freecad.