View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0000215 | FreeCAD | Bug | public | 2010-11-29 13:18 | 2011-01-16 21:12 |
| Reporter | codeasylum | Assigned To | |||
| Priority | normal | Severity | minor | Reproducibility | have not tried |
| Status | closed | Resolution | not fixable | ||
| Summary | 0000215: Crash when calling fillet | ||||
| Description | Open servobug.fcstd. Select "servo (Solid)", then part-->Fillet. Choose all edges and set radius = 0.25 --> OK wait a few seconds and it crashes with "Illegal storage access..." FreeCAD 0.11, Libs: 0.11R3607 | ||||
| Tags | No tags attached. | ||||
| FreeCAD Information | |||||
|
|
Seems to be a bug deep inside OCC's BRepFilletAPI_MakeFillet class. |
|
2010-11-29 13:20
|
|
|
|
OCC seams to have problems with this coplanar faces with a edge with no angle. This kind of edges shut not happen in the first place. Fillets on this edges can not be created. Also edges going into this edges has a problem. |
|
|
But it also crashes when you select Edge77 which is a real edge there.Using Edge75 instead (the same just mirrored) it doesn't crash but lacks of some faces afterwards.Maybe the problem here is that too many edges share a common point. |
|
|
gdb says: Program received signal SIGSEGV, Segmentation fault. 0xb41161b9 in BRep_ListIteratorOfListOfCurveRepresentation::BRep_ListIteratorOfListOfCurveRepresentation(BRep_ListOfCurveRepresentation const&) () from /usr/lib/libTKBRep-6.3.0.so (gdb) bt #0 0xb41161b9 in BRep_ListIteratorOfListOfCurveRepresentation::BRep_ListIteratorOfListOfCurveRepresentation(BRep_ListOfCurveRepresentation const&) () from /usr/lib/libTKBRep-6.3.0.so #1 0xb414a3f5 in BRep_Tool::CurveOnSurface(TopoDS_Edge const&, Handle_Geom_Surface const&, TopLoc_Location const&, double&, double&) () from /usr/lib/libTKBRep-6.3.0.so 0000002 0xb414b5d6 in BRep_Tool::CurveOnSurface(TopoDS_Edge const&, TopoDS_Face const&, double&, double&) () from /usr/lib/libTKBRep-6.3.0.so 0000003 0x07f61314 in ChFi3d_Builder::PerformIntersectionAtEnd(int) () from /usr/lib/libTKFillet-6.3.0.so 0000004 0x07f0d264 in ChFi3d_Builder::PerformFilletOnVertex(int) () from /usr/lib/libTKFillet-6.3.0.so 0000005 0x07f0d9aa in ChFi3d_Builder::Compute() () from /usr/lib/libTKFillet-6.3.0.so 0000006 0x07efadc2 in BRepFilletAPI_MakeFillet::Build() () from /usr/lib/libTKFillet-6.3.0.so 0000007 0xb3fd888e in BRepBuilderAPI_MakeShape::Shape() const () from /usr/lib/libTKTopAlgo-6.3.0.so 0000008 0xb31d7e37 in Part::Fillet::execute (this=0x960a448) at ../../../../../src/Mod/Part/App/FeatureFillet.cpp:80 0000009 0x02adb402 in App::DocumentObject::recompute (this=0x960a448) at ../../../src/App/DocumentObject.cpp:84 0000010 0x02ac3cd2 in App::Document::_recomputeFeature (this=0x820a210, Feat=0x960a448) at ../../../src/App/Document.cpp:1126 0000011 0x02ac3a5e in App::Document::recompute (this=0x820a210) at ../../../src/App/Document.cpp:1093 0000012 0xb2ec2a44 in PartGui::DlgFilletEdges::accept (this=0x961c708) at ../../../../../src/Mod/Part/Gui/DlgFilletEdges.cpp:493 0000013 0xb2ec365e in PartGui::TaskBoxFilletEdges::accept (this=0x91d4790) at ../../../../../src/Mod/Part/Gui/DlgFilletEdges.cpp:542 0000014 0xb2ec38ba in PartGui::TaskFilletEdges::accept (this=0x961ce50) at ../../../../../src/Mod/Part/Gui/DlgFilletEdges.cpp:567 0000015 0x030dc4fe in Gui::TaskView::TaskView::accept (this=0x84a8bf8) at ../../../../src/Gui/TaskView/TaskView.cpp:342 0000016 0x030dc8fa in Gui::TaskView::TaskView::qt_metacall (this=0x84a8bf8, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0xbfffde4c) at ./moc_TaskView.cpp:181 0000017 0x0029bc9a in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/libQtCore.so.4 0000018 0x002aa3d5 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4 0000019 0x00920c87 in QDialogButtonBox::accepted() () from /usr/lib/libQtGui.so.4 0000020 0x00920f18 in ?? () from /usr/lib/libQtGui.so.4 0000021 0x00922b46 in QDialogButtonBox::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib/libQtGui.so.4 0000022 0x0029bc9a in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/libQtCore.so.4 0000023 0x002aa3d5 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4 0000024 0x00c0c479 in QAbstractButton::clicked(bool) () from /usr/lib/libQtGui.so.4 0000025 0x008ebea9 in ?? () from /usr/lib/libQtGui.so.4 0000026 0x008eccf4 in ?? () from /usr/lib/libQtGui.so.4 0000027 0x008ecfae in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/libQtGui.so.4 0000028 0x0053f7f8 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4 0000029 0x008ebd4e in QAbstractButton::event(QEvent*) () from /usr/lib/libQtGui.so.4 0000030 0x009961f2 in QPushButton::event(QEvent*) () from /usr/lib/libQtGui.so.4 0000031 0x004e14dc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4 0000032 0x004e89f7 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4 0000033 0x02e2987a in Gui::GUIApplication::notify (this=0xbffff154, receiver=0x95fa588, event=0xbfffe7d0) at ../../../src/Gui/Application.cpp:1381 0000034 0x00296a3b in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4 0000035 0x004e7952 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib/libQtGui.so.4 0000036 0x00573088 in ?? () from /usr/lib/libQtGui.so.4 0000037 0x00572511 in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/libQtGui.so.4 0000038 0x005a160a in ?? () from /usr/lib/libQtGui.so.4 |
|
|
Doing several tests it appeared that the BREP file (inside the FCStd) is broken. If loading the file, export the model as STEP and reimport it there is no crash anymore. The reason why the BREP is broken is probably caused by the fact that in the past we cleaned the attached triangulation from a model to save some memory. Of course, even then it shouldn't crash but this is then an OCC bug where we have no chance to fix it. The only possibility I see is to use compiler options like SEH on Windows/MSVC where signals are converted to exceptions and thus can be properly handled without crashing the whole app. But before doing this we should have something similar for gcc, too. |
|
|
There is nothing we can do |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2010-11-29 13:18 | wmayer | New Issue | |
| 2010-11-29 13:19 | wmayer | Note Added: 0000441 | |
| 2010-11-29 13:19 | wmayer | Reporter | wmayer => codeasylum |
| 2010-11-29 13:20 | wmayer | File Added: servobug.fcstd | |
| 2011-01-15 16:26 |
|
Note Added: 0000518 | |
| 2011-01-15 16:44 | wmayer | Note Added: 0000521 | |
| 2011-01-16 19:07 | unauthenticated | Note Added: 0000528 | |
| 2011-01-16 21:10 | unauthenticated | Note Added: 0000529 | |
| 2011-01-16 21:12 | wmayer | Note Added: 0000531 | |
| 2011-01-16 21:12 | wmayer | Status | new => closed |
| 2011-01-16 21:12 | wmayer | Resolution | open => not fixable |
FreeCAD