FreeCAD / FreeCAD/FreeCAD

Mesh: Mesh_FromPartShape using Netgen mesher crashes every time (due to broken internal SMESH)

Open
#17,216 20 comments 0 reactions 0 assignees Claimed by @qbisi View on GitHub
3rd party: Netgen Mod: Mesh Packaging/building Type: Bug Type: Crash Type: Has workaround Type: Known issue
Dominant language
C++
Stars
33.6k
Forks
6k
Avg merge
3d 17h
Merged PRs (30d)
196

Description

### Is there an existing issue for this?

- [X] I have searched the existing issues

### Problem description

Using MeshWB Mesh_FromPartShape with netgen mesher crashes every time.

Here's easy reproduction steps:

1. Open new empty document
2. Go to Part WB and create primitive solid, any will do
3. Go to Mesh WB, select solid created in previous step
4. Use "Create mesh from shape..." action
5. Select "netgen" tab and click OK
6. [here crash happens]

The used netgen package version is: 6.2.2302

I've also asked about this in:

- FreeCAD Forums: https://forum.freecad.org/viewtopic.php?p=785286#p785286
- Gentoo Bugzilla: https://bugs.gentoo.org/940623

### Full version info

```shell
OS: Gentoo Linux (GNOME/gnome-xorg)
Word size of FreeCAD: 64-bit
Version: 1.0.0RC2.Unknown
Build type: Release
Python 3.11.10, Qt 6.7.2, Coin 4.0.2, Vtk 9.2.5, OCC 7.7.0
Locale: Polish/Poland (pl_PL)
Stylesheet/Theme/QtStyle: FreeCAD Dark.qss/FreeCAD Dark/
Installed mods:
* Assembly4 0.50.15
* Gridfinity 0.6.0
* Render 2024.9.25
* ExplodedAssembly
* Pyramids-and-Polyhedrons
* Manipulator 1.5.7
* A2plus 0.4.68
* fasteners 0.5.29
* Curves 0.6.48
* Estimate 0.1.2
* sheetmetal 0.4.26
```

### Subproject(s) affected?

Mesh

### Anything else?

Log from crash:

```
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: Program received signal SIGSEGV, Segmentation fault.
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #0 /usr/lib64/libc.so.6(+0x3c3b0) [0x7f5a13b743b0]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #1 0x7f59a44b9277 in netgen::OCCGeometry::GetEdge(TopoDS_Shape const&) const from /usr/lib64/libnglib.so+0x27
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #2 0x7f59a44b42a2 in netgen::OCCSetLocalMeshSize(netgen::OCCGeometry const&, netgen::Mesh&, netgen::MeshingParameters const&, netgen::OCCParameters const&) from /usr/lib64/libnglib.so+0xca2
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #3 0x7f59a43c291f in netgen::NetgenGeometry::GenerateMesh(std::shared_ptr&, netgen::MeshingParameters&) from /usr/lib64/libnglib.so+0x6ff
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #4 0x7f59afbe6fcb in netgen::OCCGenerateMesh(netgen::OCCGeometry&, std::shared_ptr&, netgen::MeshingParameters&) from /usr/lib64/freecad/lib64/libNETGENPlugin.so+0x2b
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #5 0x7f59afbdbda3 in NETGENPlugin_Mesher::Compute() from /usr/lib64/freecad/lib64/libNETGENPlugin.so+0x343
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #6 0x7f59afbe56e6 in NETGENPlugin_NETGEN_2D::Compute(SMESH_Mesh&, TopoDS_Shape const&) from /usr/lib64/freecad/lib64/libNETGENPlugin.so+0xb6
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #7 0x7f59a529b4eb in SMESH_subMesh::ComputeStateEngine(int) from /usr/lib64/freecad/lib64/libSMESH.so+0xa7b
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #8 0x7f59a51dd80e in SMESH_Gen::Compute(SMESH_Mesh&, TopoDS_Shape const&, bool, bool, MeshDimension, std::set, std::allocator >*) from /usr/lib64/freecad/lib64/libSMESH.so+0xf3e
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #9 0x7f59f06dc5be in MeshPart::Mesher::createMesh() const from /usr/lib64/freecad/lib64/MeshPart.so+0x13e
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #10 /usr/lib64/freecad/lib64/MeshPart.so(+0x32c5a) [0x7f59f06b8c5a]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #11 0x7f59f06c16ca in MeshPart::Module::meshFromShape(Py::Tuple const&, Py::Dict const&) from /usr/lib64/freecad/lib64/MeshPart.so+0xefa
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #12 0x7f59f06b8461 in Py::ExtensionModule::invoke_method_keyword(void*, Py::Tuple const&, Py::Dict const&) from /usr/lib64/freecad/lib64/MeshPart.so+0x41
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #13 /usr/lib64/freecad/lib64/libFreeCADBase.so(method_keyword_call_handler+0x1f6) [0x7f5a15a14c06]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #14 /usr/lib64/libpython3.11.so.1.0(+0x115633) [0x7f5a154e7633]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #15 /usr/lib64/libpython3.11.so.1.0(_PyObject_MakeTpCall+0x8f) [0x7f5a154a449f]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #16 /usr/lib64/libpython3.11.so.1.0(_PyEval_EvalFrameDefault+0x681d) [0x7f5a15457bcd]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #17 /usr/lib64/libpython3.11.so.1.0(+0x1a6a18) [0x7f5a15578a18]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #18 /usr/lib64/libpython3.11.so.1.0(PyEval_EvalCode+0xa3) [0x7f5a15578ac3]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #19 /usr/lib64/libpython3.11.so.1.0(+0x1e7c73) [0x7f5a155b9c73]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #20 /usr/lib64/libpython3.11.so.1.0(+0x1e7e96) [0x7f5a155b9e96]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #21 /usr/lib64/libpython3.11.so.1.0(PyRun_StringFlags+0x6f) [0x7f5a155bd10f]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #22 0x7f5a15a6eb4c in Base::InterpreterSingleton::runString[abi:cxx11](char const*) from /usr/lib64/freecad/lib64/libFreeCADBase.so+0x6c
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #23 0x7f5a16a75f48 in Gui::Command::_runCommand(char const*, int, Gui::Command::DoCmd_Type, char const*) from /usr/lib64/freecad/lib64/libFreeCADGui.so+0x98
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #24 0x7f59afc60ce0 in MeshPartGui::Tessellation::process(int, App::Document*, std::__cxx11::list > const&) from /usr/lib64/freecad/lib64/MeshPartGui.so+0x230
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #25 0x7f59afc6159e in MeshPartGui::Tessellation::accept() from /usr/lib64/freecad/lib64/MeshPartGui.so+0x2be
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #26 0x7f5a16df5dfa in Gui::TaskView::TaskView::accept() from /usr/lib64/freecad/lib64/libFreeCADGui.so+0x7a
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #27 /usr/lib64/libQt6Core.so.6(+0x2c76a6) [0x7f5a1426a6a6]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #28 /usr/lib64/libQt6Widgets.so.6(+0x345cc8) [0x7f5a14feecc8]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #29 /usr/lib64/libQt6Core.so.6(+0x2c76a6) [0x7f5a1426a6a6]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #30 0x7f5a15077916 in QAbstractButton::clicked(bool) from /usr/lib64/libQt6Widgets.so.6+0x46
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #31 /usr/lib64/libQt6Widgets.so.6(+0x3eac6e) [0x7f5a15093c6e]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #32 /usr/lib64/libQt6Widgets.so.6(+0x418564) [0x7f5a150c1564]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #33 0x7f5a150c172b in QAbstractButton::mouseReleaseEvent(QMouseEvent*) from /usr/lib64/libQt6Widgets.so.6+0xbb
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #34 0x7f5a151b6807 in QWidget::event(QEvent*) from /usr/lib64/libQt6Widgets.so.6+0xa27
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #35 0x7f5a151a7025 in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /usr/lib64/libQt6Widgets.so.6+0x85
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #36 0x7f5a151a7eae in QApplication::notify(QObject*, QEvent*) from /usr/lib64/libQt6Widgets.so.6+0xdce
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #37 0x7f5a16a23818 in Gui::GUIApplication::notify(QObject*, QEvent*) from /usr/lib64/freecad/lib64/libFreeCADGui.so+0x98
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #38 0x7f5a14281d18 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /usr/lib64/libQt6Core.so.6+0x168
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #39 0x7f5a151ae823 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer&, bool, bool) from /usr/lib64/libQt6Widgets.so.6+0x1e3
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #40 /usr/lib64/libQt6Widgets.so.6(+0x50b4ee) [0x7f5a151b44ee]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #41 /usr/lib64/libQt6Widgets.so.6(+0x50f010) [0x7f5a151b8010]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #42 0x7f5a151a7025 in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /usr/lib64/libQt6Widgets.so.6+0x85
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #43 0x7f5a16a23818 in Gui::GUIApplication::notify(QObject*, QEvent*) from /usr/lib64/freecad/lib64/libFreeCADGui.so+0x98
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #44 0x7f5a14281d18 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /usr/lib64/libQt6Core.so.6+0x168
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #45 0x7f5a146b7a1d in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) from /usr/lib64/libQt6Gui.so.6+0x94d
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #46 0x7f5a1470e54c in QWindowSystemInterface::sendWindowSystemEvents(QFlags) from /usr/lib64/libQt6Gui.so.6+0xac
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #47 /usr/lib64/qt6/plugins/platforms/../../../libQt6XcbQpa.so.6(+0x55d0e) [0x7f5a0de5ad0e]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #48 /usr/lib64/libglib-2.0.so.0(+0x58449) [0x7f5a124c9449]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #49 /usr/lib64/libglib-2.0.so.0(+0x5a4c7) [0x7f5a124cb4c7]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #50 /usr/lib64/libglib-2.0.so.0(g_main_context_iteration+0x30) [0x7f5a124cbae0]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #51 0x7f5a14061510 in QEventDispatcherGlib::processEvents(QFlags) from /usr/lib64/libQt6Core.so.6+0x70
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #52 0x7f5a142ab57a in QEventLoop::exec(QFlags) from /usr/lib64/libQt6Core.so.6+0x14a
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #53 0x7f5a142ab72a in QCoreApplication::exec() from /usr/lib64/libQt6Core.so.6+0x9a
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #54 0x7f5a1694cb66 in Gui::Application::runApplication() from /usr/lib64/freecad/lib64/libFreeCADGui.so+0xd16
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #55 /usr/lib64/freecad/bin/FreeCAD(+0x842e) [0x55743ed4142e]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #56 /usr/lib64/libc.so.6(+0x260d0) [0x7f5a13b5e0d0]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #57 /usr/lib64/libc.so.6(__libc_start_main+0x89) [0x7f5a13b5e189]
paź 12 20:41:55 localhost org.freecad.FreeCAD.desktop[263291]: #58 /usr/lib64/freecad/bin/FreeCAD(+0x8775) [0x55743ed41775]
```

### Code of Conduct

- [X] I agree to follow this project's Code of Conduct

Contributor guide

Open the contributing guide

Research direction

Start by reviewing linked pull request #23387 and the stack frames through MeshPart::Mesher::createMesh(), libNETGENPlugin, and libSMESH. Reproduce the crash with a primitive solid and the Netgen tab, then use the linked work to determine the intended fix; done means the workflow completes without a segmentation fault.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
computer-graphics
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.