realthunder / FreeCAD

Link branch FreeCAD
Other
747 stars 46 forks source link

[Problem] Crash when deleting detached defining geometry in Sketcher. #1007

Open mbelt opened 2 months ago

mbelt commented 2 months ago

Is there an existing issue for this?

Version

0.21 (Development)

Full version info

[code]
OS: Arch Linux
Word size of FreeCAD: 64-bit
Version: 0.21.0.38935 (Git)
Build type: Release
Branch: makepkg
Hash: a0d6ece6c0e7b64dca6b2066a7d57b982a9f2a17
Python 3.11.6, Qt 5.15.12, Coin 4.0.2, Vtk 9.3.0, OCC 7.7.2
Locale: English/United States (en_US)
Installed mods: 
  * freecad.gears 1.2.0
[/code]

Subproject(s) affected?

None

Problem description

Deleting broken external defining geometry from a sketch causes a crash, even after it has been detached.

Anything else?

Program received signal SIGSEGV, Segmentation fault.
#0  /usr/lib/libc.so.6(+0x3cae0) [0x7005f7050ae0]
#1  0x70051a5f9c27 in SketcherGui::ViewProviderSketch::updateColor() from /usr/lib/freecad/lib/SketcherGui.so+0x13d7
#2  0x70051a5fc0d3 in SketcherGui::ViewProviderSketch::onSelectionChanged(Gui::SelectionChanges const&) from /usr/lib/freecad/lib/SketcherGui.so+0x743
#3  0x7005fadc89fc in Gui::SelectionObserver::_onSelectionChanged(Gui::SelectionChanges const&) from /usr/lib/freecad/lib/libFreeCADGui.so+0x2c
#4  0x7005fa9ad71e in 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() const from /usr/lib/freecad/lib/libFreeCADGui.so+0x4e
#5  0x7005fa9acc3f in 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&) from /usr/lib/freecad/lib/libFreeCADGui.so+0x27f
#6  0x7005fadcd2a5 in Gui::SelectionSingleton::slotSelectionChanged(Gui::SelectionChanges const&) from /usr/lib/freecad/lib/libFreeCADGui.so+0x385
#7  0x7005fa9ad71e in 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() const from /usr/lib/freecad/lib/libFreeCADGui.so+0x4e
#8  0x7005fa9acc3f in 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&) from /usr/lib/freecad/lib/libFreeCADGui.so+0x27f
#9  0x7005fadcb187 in Gui::SelectionSingleton::notify(Gui::SelectionChanges&&) from /usr/lib/freecad/lib/libFreeCADGui.so+0x167
#10  0x7005fadd20bb in Gui::SelectionSingleton::addSelection(char const*, char const*, char const*, float, float, float, std::vector<Gui::SelectionSingleton::SelObj, std::allocator<Gui::SelectionSingleton::SelObj> > const*, bool) from /usr/lib/freecad/lib/libFreeCADGui.so+0xdfb
#11  0x70051a60ec42 in SketcherGui::ViewProviderSketch::selectElement(char const*, bool) const from /usr/lib/freecad/lib/SketcherGui.so+0x2a2
#12  0x70051a5b1a6b in SketcherGui::TaskSketcherElements::on_elementsWidget_itemSelectionChanged() from /usr/lib/freecad/lib/SketcherGui.so+0x5bb
#13  /usr/lib/libQt5Core.so.5(+0x2df962) [0x7005f82df962]
#14  /usr/lib/libQt5Widgets.so.5(+0x457742) [0x7005f9257742]
#15  /usr/lib/libQt5Core.so.5(+0x2df962) [0x7005f82df962]
#16  0x7005f826d62e in QItemSelectionModel::selectionChanged(QItemSelection const&, QItemSelection const&) from /usr/lib/libQt5Core.so.5+0x3e
#17  0x7005f8273512 in QItemSelectionModel::select(QItemSelection const&, QFlags<QItemSelectionModel::SelectionFlag>) from /usr/lib/libQt5Core.so.5+0x482
#18  0x7005f826ff2c in QItemSelectionModel::setCurrentIndex(QModelIndex const&, QFlags<QItemSelectionModel::SelectionFlag>) from /usr/lib/libQt5Core.so.5+0x1ac
#19  0x7005f91cb6bf in QAbstractItemView::setCurrentIndex(QModelIndex const&) from /usr/lib/libQt5Widgets.so.5+0xaf
#20  0x7005f9256c52 in QTreeWidget::setCurrentItem(QTreeWidgetItem*, int) from /usr/lib/libQt5Widgets.so.5+0x62
#21  0x70051a5b0eb3 in SketcherGui::TaskSketcherElements::slotElementsChanged() from /usr/lib/freecad/lib/SketcherGui.so+0x363
#22  0x7005fa7417e7 in boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type>, 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 (), boost::function<void ()> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (), boost::function<void ()> >, boost::signals2::mutex> >::dereference() const from /usr/lib/freecad/lib/libFreeCADGui.so+0x47
#23  0x7005fa74147f in boost::signals2::detail::signal_impl<void (), boost::signals2::optional_last_value<void>, int, std::less<int>, boost::function<void ()>, boost::function<void (boost::signals2::connection const&)>, boost::signals2::mutex>::operator()() from /usr/lib/freecad/lib/libFreeCADGui.so+0x27f
#24  0x70053c71bfba in Sketcher::SketchObject::onChanged(App::Property const*) from /usr/lib/freecad/lib/Sketcher.so+0x1c6a
#25  0x7005f9b0bca6 in App::Property::touch() from /usr/lib/freecad/lib/libFreeCADApp.so+0x86
#26  0x70053c7095f5 in Sketcher::SketchObject::delExternalPrivate(std::set<long, std::less<long>, std::allocator<long> > const&, bool) from /usr/lib/freecad/lib/Sketcher.so+0xcc5
#27  0x70053c708867 in Sketcher::SketchObject::delExternal(std::vector<int, std::allocator<int> > const&) from /usr/lib/freecad/lib/Sketcher.so+0x207
#28  0x70053c802e17 in Sketcher::SketchObjectPy::delExternal(_object*) from /usr/lib/freecad/lib/Sketcher.so+0x577
#29  0x70053c7f3a82 in Sketcher::SketchObjectPy::staticCallback_delExternal(_object*, _object*) from /usr/lib/freecad/lib/Sketcher.so+0x72
#30  /usr/lib/libpython3.11.so.1.0(+0x1d1725) [0x7005f77d1725]
#31  /usr/lib/libpython3.11.so.1.0(_PyObject_MakeTpCall+0x98) [0x7005f774a618]
#32  /usr/lib/libpython3.11.so.1.0(_PyEval_EvalFrameDefault+0x3e83) [0x7005f76f3d03]
#33  /usr/lib/libpython3.11.so.1.0(+0x2defa0) [0x7005f78defa0]
#34  /usr/lib/libpython3.11.so.1.0(PyEval_EvalCode+0xa9) [0x7005f78df059]
#35  /usr/lib/libpython3.11.so.1.0(+0x2e23c3) [0x7005f78e23c3]
#36  /usr/lib/libpython3.11.so.1.0(+0x2e24b6) [0x7005f78e24b6]
#37  /usr/lib/libpython3.11.so.1.0(PyRun_StringFlags+0x6f) [0x7005f78e28df]
#38  0x7005f7d2a753 in Base::InterpreterSingleton::runString[abi:cxx11](char const*) from /usr/lib/freecad/lib/libFreeCADBase.so+0x73
#39  0x7005fa731ace in Gui::Command::_runCommand(char const*, int, Gui::Command::DoCmd_Type, char const*) from /usr/lib/freecad/lib/libFreeCADGui.so+0x9e
#40  0x7005fa73191a in Gui::Command::_doCommand(char const*, int, Gui::Command::DoCmd_Type, char const*, ...) from /usr/lib/freecad/lib/libFreeCADGui.so+0xea
#41  0x7005fa7813ed in void Gui::cmdAppObjectArgs<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(App::DocumentObject const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&) from /usr/lib/freecad/lib/libFreeCADGui.so+0x1ad
#42  0x70051a60e23d in SketcherGui::ViewProviderSketch::onDelete(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&) from /usr/lib/freecad/lib/SketcherGui.so+0x12dd
#43  0x70051a60ca9b in SketcherGui::ViewProviderSketch::deleteSelected() from /usr/lib/freecad/lib/SketcherGui.so+0x10b
#44  0x70051a5d0c4d in SketcherGui::ShortcutListener::eventFilter(QObject*, QEvent*) from /usr/lib/freecad/lib/SketcherGui.so+0x5d
#45  0x7005f82aae02 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) from /usr/lib/libQt5Core.so.5+0x92
#46  0x7005f8f56321 in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /usr/lib/libQt5Widgets.so.5+0x81
#47  0x7005f8f5b898 in QApplication::notify(QObject*, QEvent*) from /usr/lib/libQt5Widgets.so.5+0xda8
#48  0x7005fa6ae66e in Gui::GUIApplication::notify(QObject*, QEvent*) from /usr/lib/freecad/lib/libFreeCADGui.so+0x5e
#49  0x7005f82ab968 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /usr/lib/libQt5Core.so.5+0x128
#50  /usr/lib/libQt5Widgets.so.5(+0x1aacfb) [0x7005f8faacfb]
#51  0x7005f8f56331 in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /usr/lib/libQt5Widgets.so.5+0x91
#52  0x7005fa6ae66e in Gui::GUIApplication::notify(QObject*, QEvent*) from /usr/lib/freecad/lib/libFreeCADGui.so+0x5e
#53  0x7005f82ab968 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /usr/lib/libQt5Core.so.5+0x128
#54  0x7005f8737e16 in QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*) from /usr/lib/libQt5Gui.so.5+0xf6
#55  0x7005f871510e in bool QWindowSystemInterfacePrivate::handleWindowSystemEvent<QWindowSystemInterface::SynchronousDelivery>(QWindowSystemInterfacePrivate::WindowSystemEvent*) from /usr/lib/libQt5Gui.so.5+0x4e
#56  0x7005f871e4eb in QWindowSystemInterface::handleShortcutEvent(QWindow*, unsigned long, int, QFlags<Qt::KeyboardModifier>, unsigned int, unsigned int, unsigned int, QString const&, bool, unsigned short) from /usr/lib/libQt5Gui.so.5+0x13b
#57  0x7005f8737db6 in QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*) from /usr/lib/libQt5Gui.so.5+0x96
#58  0x7005f871cddd in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /usr/lib/libQt5Gui.so.5+0xad
#59  /usr/lib/libQt5XcbQpa.so.5(+0x602f8) [0x7005ecf302f8]
#60  /usr/lib/libglib-2.0.so.0(+0x5ca89) [0x7005f5a41a89]
#61  /usr/lib/libglib-2.0.so.0(+0xbe9b7) [0x7005f5aa39b7]
#62  /usr/lib/libglib-2.0.so.0(g_main_context_iteration+0x35) [0x7005f5a40f95]
#63  0x7005f82fa27f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /usr/lib/libQt5Core.so.5+0x6f
#64  0x7005f82a372c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) from /usr/lib/libQt5Core.so.5+0x13c
#65  0x7005f82afafd in QCoreApplication::exec() from /usr/lib/libQt5Core.so.5+0x9d
#66  0x7005fa5d3f65 in Gui::Application::runApplication() from /usr/lib/freecad/lib/libFreeCADGui.so+0x555
#67  freecad(+0x805b) [0x5e5142f3105b]
#68  /usr/lib/libc.so.6(+0x25c88) [0x7005f7039c88]
#69  /usr/lib/libc.so.6(__libc_start_main+0x8c) [0x7005f7039d4c]
#70  freecad(+0x7275) [0x5e5142f30275]

Code of Conduct