I wonder if FreeCAD should package it's own Python though. Sure, would bloat things more up and compiletime yadda, but Python seems to have become such an integral part of the program, that it might have stability benefits not to rely on the OS-provided thing. I mean... it does so in the distributed AppImages anyway, so maybe that step isn't too far for a regular deployment too. And the AppImages are more stable in that respect for me.
----
BTW - I get a SEGV every time I end FreeCAD if there is a project loaded or if I created some. The only time this does not happen is when I leave FreeCAD directly in START without any open project. Beware, a bigger dump:
Code: Select all
Program received signal SIGSEGV, Segmentation fault.
#0 /usr/lib/libc.so.6(+0x3d6a0) [0x7f9845d476a0]
#1 /usr/lib/libpython3.9.so.1.0(+0x14ab00) [0x7f9848498b00]
#2 /usr/local/lib/libFreeCADBase.so(+0x179c30) [0x7f9848c4ac30]
#3 /usr/local/lib/libFreeCADBase.so(+0x179c74) [0x7f9848c4ac74]
#4 0x7f9848c4b255 in Py::_XDECREF(_object*) from /usr/local/lib/libFreeCADBase.so+0x18
#5 0x7f984ac36c7e in Py::Object::release() from /usr/local/lib/libFreeCADGui.so+0x1c
#6 0x7f984ac36dae in Py::Object::~Object() from /usr/local/lib/libFreeCADGui.so+0x2a
#7 0x7f984b2263f0 in Gui::ViewProviderPythonFeatureImp::~ViewProviderPythonFeatureImp() from /usr/local/lib/libFreeCADGui.so+0x11a
#8 0x7f98141c0ccd in Gui::ViewProviderPythonFeatureT<PartGui::ViewProvider2DObject>::~ViewProviderPythonFeatureT() from /usr/local/lib/PartGui.so+0x37
#9 0x7f98141c0d36 in Gui::ViewProviderPythonFeatureT<PartGui::ViewProvider2DObject>::~ViewProviderPythonFeatureT() from /usr/local/lib/PartGui.so+0x18
#10 0x7f984acba76e in Gui::Document::~Document() from /usr/local/lib/libFreeCADGui.so+0x368
#11 0x7f984acba9da in Gui::Document::~Document() from /usr/local/lib/libFreeCADGui.so+0x18
#12 0x7f984ac44100 in std::default_delete<Gui::Document>::operator()(Gui::Document*) const from /usr/local/lib/libFreeCADGui.so+0x28
#13 0x7f984ac3d5c2 in std::unique_ptr<Gui::Document, std::default_delete<Gui::Document> >::~unique_ptr() from /usr/local/lib/libFreeCADGui.so+0x52
#14 0x7f984ac2900a in Gui::Application::slotDeleteDocument(App::Document const&) from /usr/local/lib/libFreeCADGui.so+0x1b2
#15 0x7f984ac7f855 in boost::_mfi::mf1<void, Gui::Application, App::Document const&>::operator()(Gui::Application*, App::Document const&) const from /usr/local/lib/libFreeCADGui.so+0x71
#16 0x7f984ac7a669 in void boost::_bi::list2<boost::_bi::value<Gui::Application*>, boost::arg<1> >::operator()<boost::_mfi::mf1<void, Gui::Application, App::Document const&>, boost::_bi::rrlist1<App::Document const&> >(boost::_bi::type<void>, boost::_mfi::mf1<void, Gui::Application, App::Document const&>&, boost::_bi::rrlist1<App::Document const&>&, int) from /usr/local/lib/libFreeCADGui.so+0x6b
#17 0x7f984ac72613 in void boost::_bi::bind_t<void, boost::_mfi::mf1<void, Gui::Application, App::Document const&>, boost::_bi::list2<boost::_bi::value<Gui::Application*>, boost::arg<1> > >::operator()<App::Document const&>(App::Document const&) from /usr/local/lib/libFreeCADGui.so+0x4f
#18 0x7f984ac6acd6 in boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, Gui::Application, App::Document const&>, boost::_bi::list2<boost::_bi::value<Gui::Application*>, boost::arg<1> > >, void, App::Document const&>::invoke(boost::detail::function::function_buffer&, App::Document const&) from /usr/local/lib/libFreeCADGui.so+0x2b
#19 0x7f98497ec80c in boost::function1<void, App::Document const&>::operator()(App::Document const&) const from /usr/local/lib/libFreeCADApp.so+0x6c
#20 0x7f98497e5c40 in boost::signals2::detail::void_type boost::signals2::detail::call_with_tuple_args<boost::signals2::detail::void_type>::m_invoke<boost::function<void (App::Document const&)>, 0u, App::Document const&>(boost::function<void (App::Document const&)>&, boost::signals2::detail::unsigned_meta_array<0u>, std::tuple<App::Document const&> const&, boost::enable_if<boost::is_void<boost::function<void (App::Document const&)>::result_type>, void>::type*) const from /usr/local/lib/libFreeCADApp.so+0x36
#21 0x7f98497dabb2 in boost::signals2::detail::void_type boost::signals2::detail::call_with_tuple_args<boost::signals2::detail::void_type>::operator()<boost::function<void (App::Document const&)>, App::Document const&, 1ul>(boost::function<void (App::Document const&)>&, std::tuple<App::Document const&> const&, mpl_::size_t<1ul>) const from /usr/local/lib/libFreeCADApp.so+0x2e
#22 0x7f98497ca22f in boost::signals2::detail::void_type boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, App::Document 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 (App::Document const&), boost::function<void (App::Document 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 (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> > const&) const from /usr/local/lib/libFreeCADApp.so+0x57
#23 0x7f98497ba43f in boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, App::Document 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 (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> >::dereference() const from /usr/local/lib/libFreeCADApp.so+0x63
#24 0x7f98497a7686 in boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, App::Document 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 (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (App::Document const&), boost::function<void (App::Document 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, App::Document 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 (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> > >(boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, App::Document 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 (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> > const&) from /usr/local/lib/libFreeCADApp.so+0x18
#25 0x7f984978f450 in boost::iterators::detail::iterator_facade_base<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, App::Document 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 (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (App::Document const&), boost::function<void (App::Document 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*() const from /usr/local/lib/libFreeCADApp.so+0x20
#26 0x7f98497736ff in 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, App::Document 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 (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> > >(boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, App::Document 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 (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> >, boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, App::Document 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 (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> >) const from /usr/local/lib/libFreeCADApp.so+0x29
#27 0x7f9849756db4 in 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, App::Document 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 (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> > >(boost::signals2::optional_last_value<void>&, boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, App::Document 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 (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> >, boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, App::Document 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 (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (App::Document const&), boost::function<void (App::Document const&)> >, boost::signals2::mutex> >) const from /usr/local/lib/libFreeCADApp.so+0x34
#28 0x7f984973de22 in boost::signals2::detail::signal_impl<void (App::Document const&), boost::signals2::optional_last_value<void>, int, std::less<int>, boost::function<void (App::Document const&)>, boost::function<void (boost::signals2::connection const&, App::Document const&)>, boost::signals2::mutex>::operator()(App::Document const&) from /usr/local/lib/libFreeCADApp.so+0x256
#29 0x7f984972e06c in boost::signals2::signal<void (App::Document const&), boost::signals2::optional_last_value<void>, int, std::less<int>, boost::function<void (App::Document const&)>, boost::function<void (boost::signals2::connection const&, App::Document const&)>, boost::signals2::mutex>::operator()(App::Document const&) from /usr/local/lib/libFreeCADApp.so+0x32
#30 0x7f9849a0ec27 in App::Application::closeDocument(char const*) from /usr/local/lib/libFreeCADApp.so+0xdf
#31 0x7f9849a0edf1 in App::Application::closeAllDocuments() from /usr/local/lib/libFreeCADApp.so+0xab
#32 0x7f984ac2aceb in Gui::Application::tryClose(QCloseEvent*) from /usr/local/lib/libFreeCADGui.so+0x1bb
#33 0x7f984b2a7611 in Gui::MainWindow::closeEvent(QCloseEvent*) from /usr/local/lib/libFreeCADGui.so+0x45
#34 0x7f984708fb0e in QWidget::event(QEvent*) from /usr/lib/libQt5Widgets.so.5+0x1ce
#35 0x7f984b2a56ba in Gui::MainWindow::event(QEvent*) from /usr/local/lib/libFreeCADGui.so+0x69a
#36 0x7f984704e752 in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /usr/lib/libQt5Widgets.so.5+0x82
#37 0x7f984ad64dfa in Gui::GUIApplication::notify(QObject*, QEvent*) from /usr/local/lib/libFreeCADGui.so+0x10e
#38 0x7f9846584a7a in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /usr/lib/libQt5Core.so.5+0x12a
#39 0x7f984708aa4b in QWidgetPrivate::close_helper(QWidgetPrivate::CloseMode) from /usr/lib/libQt5Widgets.so.5+0xbb
#40 0x7f984adc0a66 in StdCmdQuit::activated(int) from /usr/local/lib/libFreeCADGui.so+0x1c
#41 0x7f984ada551d in Gui::Command::invoke(int, Gui::Command::TriggerSource) from /usr/local/lib/libFreeCADGui.so+0x2ff
#42 0x7f984ad94c34 in Gui::Action::onActivated() from /usr/local/lib/libFreeCADGui.so+0x26
#43 /usr/local/lib/libFreeCADGui.so(+0x1038003) [0x7f984ad9c003]
#44 /usr/lib/libQt5Core.so.5(+0x2ece10) [0x7f98465bbe10]
#45 0x7f9847047f63 in QAction::triggered(bool) from /usr/lib/libQt5Widgets.so.5+0x43
#46 0x7f984704a845 in QAction::activate(QAction::ActionEvent) from /usr/lib/libQt5Widgets.so.5+0xe5
#47 /usr/lib/libQt5Widgets.so.5(+0x2d83ab) [0x7f98471cc3ab]
#48 /usr/lib/libQt5Widgets.so.5(+0x2dfae2) [0x7f98471d3ae2]
#49 0x7f984708fb0e in QWidget::event(QEvent*) from /usr/lib/libQt5Widgets.so.5+0x1ce
#50 0x7f984704e752 in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /usr/lib/libQt5Widgets.so.5+0x82
#51 0x7f984705587b in QApplication::notify(QObject*, QEvent*) from /usr/lib/libQt5Widgets.so.5+0x4ab
#52 0x7f984ad64dfa in Gui::GUIApplication::notify(QObject*, QEvent*) from /usr/local/lib/libFreeCADGui.so+0x10e
#53 0x7f9846584a7a in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /usr/lib/libQt5Core.so.5+0x12a
#54 0x7f984705487e in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) from /usr/lib/libQt5Widgets.so.5+0x1de
#55 /usr/lib/libQt5Widgets.so.5(+0x1b47cf) [0x7f98470a87cf]
#56 /usr/lib/libQt5Widgets.so.5(+0x1b763f) [0x7f98470ab63f]
#57 0x7f984704e752 in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /usr/lib/libQt5Widgets.so.5+0x82
#58 0x7f984ad64dfa in Gui::GUIApplication::notify(QObject*, QEvent*) from /usr/local/lib/libFreeCADGui.so+0x10e
#59 0x7f9846584a7a in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /usr/lib/libQt5Core.so.5+0x12a
#60 0x7f9846960594 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) from /usr/lib/libQt5Gui.so.5+0x654
#61 0x7f9846935bb5 in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /usr/lib/libQt5Gui.so.5+0xb5
#62 /usr/lib/libQt5XcbQpa.so.5(+0x5f16c) [0x7f9841a4316c]
#63 /usr/lib/libglib-2.0.so.0(g_main_context_dispatch+0x184) [0x7f98430c48f4]
#64 /usr/lib/libglib-2.0.so.0(+0xa6821) [0x7f9843118821]
#65 /usr/lib/libglib-2.0.so.0(g_main_context_iteration+0x31) [0x7f98430c3121]
#66 0x7f98465dd6e1 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /usr/lib/libQt5Core.so.5+0x61
#67 0x7f98465833fc in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) from /usr/lib/libQt5Core.so.5+0x12c
#68 0x7f984658b894 in QCoreApplication::exec() from /usr/lib/libQt5Core.so.5+0x94
#69 0x7f984ac30abd in Gui::Application::runApplication() from /usr/local/lib/libFreeCADGui.so+0x2413
#70 FreeCAD(+0x91ec) [0x561b3a93d1ec]
#71 /usr/lib/libc.so.6(__libc_start_main+0xf2) [0x7f9845d32152]
#72 FreeCAD(+0x84ce) [0x561b3a93c4ce]
Segmentation fault (core dumped)