GithubHelp home page GithubHelp logo

Crash on sketch loading about freecad HOT 22 CLOSED

RiccaDS avatar RiccaDS commented on May 24, 2024
Crash on sketch loading

from freecad.

Comments (22)

RiccaDS avatar RiccaDS commented on May 24, 2024 1

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
image

from freecad.

PaddleStroke avatar PaddleStroke commented on May 24, 2024 1

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.

bgbsww avatar bgbsww commented on May 24, 2024 1

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.

maxwxyz avatar maxwxyz commented on May 24, 2024

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.

RiccaDS avatar RiccaDS commented on May 24, 2024

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.

FEA-eng avatar FEA-eng commented on May 24, 2024

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.

xtemp09 avatar xtemp09 commented on May 24, 2024

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.

maxwxyz avatar maxwxyz commented on May 24, 2024

does it work with the stable 0.21.2 version?
Might it be related to the materials update?

from freecad.

maxwxyz avatar maxwxyz commented on May 24, 2024

@PaddleStroke @davesrocketshop
wasSketcherGui::EditModeGeometryCoinManager::updateGeometryColor changed with color rendering in sketcher or a materials PR?

from freecad.

RiccaDS avatar RiccaDS commented on May 24, 2024

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.

davesrocketshop avatar davesrocketshop commented on May 24, 2024

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.

davesrocketshop avatar davesrocketshop commented on May 24, 2024

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.

RiccaDS avatar RiccaDS commented on May 24, 2024

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.

bgbsww avatar bgbsww commented on May 24, 2024

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.

bgbsww avatar bgbsww commented on May 24, 2024

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.

RiccaDS avatar RiccaDS commented on May 24, 2024

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.

bgbsww avatar bgbsww commented on May 24, 2024

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.

RiccaDS avatar RiccaDS commented on May 24, 2024

@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)
image

from freecad.

RiccaDS avatar RiccaDS commented on May 24, 2024

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.
image

from freecad.

bgbsww avatar bgbsww commented on May 24, 2024

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.

RiccaDS avatar RiccaDS commented on May 24, 2024

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.

RiccaDS avatar RiccaDS commented on May 24, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.