View Issue Details

IDProjectCategoryView StatusLast Update
0000215FreeCADBugpublic2011-01-16 21:12
Reportercodeasylum Assigned To 
PrioritynormalSeverityminorReproducibilityhave not tried
Status closedResolutionnot fixable 
Summary0000215: Crash when calling fillet
DescriptionOpen 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
TagsNo tags attached.
FreeCAD Information

Activities

wmayer

2010-11-29 13:19

administrator   ~0000441

Seems to be a bug deep inside OCC's BRepFilletAPI_MakeFillet class.

2010-11-29 13:20

 

servobug.fcstd (Attachment missing)

Jriegel

2011-01-15 16:26

administrator   ~0000518

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.

wmayer

2011-01-15 16:44

administrator   ~0000521

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.

unauthenticated

2011-01-16 19:07

viewer   ~0000528

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

unauthenticated

2011-01-16 21:10

viewer   ~0000529

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.

wmayer

2011-01-16 21:12

administrator   ~0000531

There is nothing we can do

Issue History

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 Jriegel 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