View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000889 | FreeCAD | Bug | public | 2012-11-26 12:57 | 2013-06-12 19:20 |
Reporter | jrheinlaender | Assigned To | wmayer | ||
Priority | normal | Severity | major | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Target Version | 0.14 | Fixed in Version | 0.14 | ||
Summary | 0000889: Crash on filleting | ||||
Description | On the attached part, changing the radius of the fillet to any value > 3 leads to a segfault | ||||
Tags | No tags attached. | ||||
FreeCAD Information | |||||
2012-11-26 12:57
|
|
|
Here is the stack trace: Program received signal SIGSEGV, Segmentation fault. 0xb2ec5489 in TopoDS_ListIteratorOfListOfShape::Initialize(TopoDS_ListOfShape const&) () from /usr/lib/libTKBRep-6.3.0.so (gdb) bt #0 0xb2ec5489 in TopoDS_ListIteratorOfListOfShape::Initialize(TopoDS_ListOfShape const&) () from /usr/lib/libTKBRep-6.3.0.so #1 0xb2f0d172 in TopoDS_Iterator::Initialize(TopoDS_Shape const&, unsigned int, unsigned int) () from /usr/lib/libTKBRep-6.3.0.so 0000002 0xb2f0d2a8 in TopoDS_Iterator::TopoDS_Iterator(TopoDS_Shape const&, unsigned int, unsigned int) () from /usr/lib/libTKBRep-6.3.0.so 0000003 0xb2f047e5 in TopExp::FirstVertex(TopoDS_Edge const&, unsigned int) () from /usr/lib/libTKBRep-6.3.0.so 0000004 0xb42be3ea in ChFi3d_Builder::PerformIntersectionAtEnd(int) () from /usr/lib/libTKFillet-6.3.0.so 0000005 0xb426c264 in ChFi3d_Builder::PerformFilletOnVertex(int) () from /usr/lib/libTKFillet-6.3.0.so 0000006 0xb426c9aa in ChFi3d_Builder::Compute() () from /usr/lib/libTKFillet-6.3.0.so 0000007 0xb4259dc2 in BRepFilletAPI_MakeFillet::Build() () from /usr/lib/libTKFillet-6.3.0.so 0000008 0xafd04879 in PartDesign::Fillet::execute() () from /home/werner/Projects/freecad-git/_build/Mod/PartDesign/PartDesign.so 0000009 0x00c9861e in App::DocumentObject::recompute() () from /home/werner/Projects/freecad-git/_build/lib/libFreeCADApp.so 0000010 0xb44a87dd in Part::Feature::recompute() () from /home/werner/Projects/freecad-git/_build/Mod/Part/Part.so 0000011 0x00c7124d in App::Document::_recomputeFeature(App::DocumentObject*) () from /home/werner/Projects/freecad-git/_build/lib/libFreeCADApp.so 0000012 0x00c71787 in App::Document::recomputeFeature(App::DocumentObject*) () from /home/werner/Projects/freecad-git/_build/lib/libFreeCADApp.so 0000013 0xafd9383f in PartDesignGui::TaskFilletParameters::onLengthChanged(double) () from /home/werner/Projects/freecad-git/_build/Mod/PartDesign/PartDesignGui.so 0000014 0xafd93fa8 in PartDesignGui::TaskFilletParameters::qt_metacall(QMetaObject::Call, int, void**) () from /home/werner/Projects/freecad-git/_build/Mod/PartDesign/PartDesignGui.so 0000015 0x0410bd8a in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/libQtCore.so.4 0000016 0x0411a445 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4 0000017 0x039f707f in QDoubleSpinBox::valueChanged(double) () from /usr/lib/libQtGui.so.4 0000018 0x03787c5d in ?? () from /usr/lib/libQtGui.so.4 0000019 0x036d90d4 in ?? () from /usr/lib/libQtGui.so.4 0000020 0x036dc5cd in QAbstractSpinBox::stepBy(int) () from /usr/lib/libQtGui.so.4 0000021 0x036d7916 in QAbstractSpinBox::wheelEvent(QWheelEvent*) () from /usr/lib/libQtGui.so.4 0000022 0x03326d6b in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4 0000023 0x036da91c in QAbstractSpinBox::event(QEvent*) () from /usr/lib/libQtGui.so.4 0000024 0x032c84dc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4 0000025 0x032cf6d4 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4 0000026 0x0043a560 in Gui::GUIApplication::notify(QObject*, QEvent*) () from /home/werner/Projects/freecad-git/_build/lib/libFreeCADGui.so 0000027 0x04106b2b in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4 0000028 0x0334acb3 in ?? () from /usr/lib/libQtGui.so.4 0000029 0x0335a82c in ?? () from /usr/lib/libQtGui.so.4 0000030 0x03359601 in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/libQtGui.so.4 0000031 0x033886fa in ?? () from /usr/lib/libQtGui.so.4 0000032 0x042726e5 in g_main_dispatch (context=0x80fa8b0) at /build/buildd/glib2.0-2.24.1/glib/gmain.c:1966 0000033 IA__g_main_context_dispatch (context=0x80fa8b0) at /build/buildd/glib2.0-2.24.1/glib/gmain.c:2519 0000034 0x042763d8 in g_main_context_iterate (context=0x80fa8b0, block=<value optimized out>, dispatch=1, self=0x80fa830) at /build/buildd/glib2.0-2.24.1/glib/gmain.c:2597 0000035 0x042765b8 in IA__g_main_context_iteration (context=0x80fa8b0, may_block=1) at /build/buildd/glib2.0-2.24.1/glib/gmain.c:2660 0000036 0x04132715 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 0000037 0x03388225 in ?? () from /usr/lib/libQtGui.so.4 0000038 0x04105149 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #39 0x0410559a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #40 0x0410978f in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4 0000041 0x032c8577 in QApplication::exec() () from /usr/lib/libQtGui.so.4 0000042 0x00436a6e in Gui::Application::runApplication() () from /home/werner/Projects/freecad-git/_build/lib/libFreeCADGui.so 0000043 0x0805038a in main () 0000044 0x04620bd6 in __libc_start_main (main=0x804e722 <main>, argc=1, ubp_av=0xbffff414, init=0x8053b90 <__libc_csu_init>, fini=0x8053b80 <__libc_csu_fini>, rtld_fini=0x11e080 <_dl_fini>, stack_end=0xbffff40c) at libc-start.c:226 0000045 0x0804e611 in _start () |
|
Maybe we should check this suggestion: http://www.opencascade.org/org/forum/thread_12565/?forum=3 http://tracker.dev.opencascade.org/view.php?id=22800 http://tracker.dev.opencascade.org/view.php?id=6143 |
|
Using OSD::SetSignal() works very well and catches all segmentation faults and converts it into a Standard_Failure exception. According to the examples above the function OSD::SetSignal() needs to be set only once. I first tried it inside initPart() but this leads to a crash of the application under Windows -- seems some conflicts with python. On Ubuntu 10.04 everything works fine. Moving it into Part::Feature::recompute() as static bool first = true; if (first) { first = false; OSD::SetSignal(); } works on both systems. EDIT: On Windows the OSD stuff seems to work only with VC++ compiler but not MinGW. With the latter we still have crashes. Note: When applying the refinement algorithm on the pad then the filleting works with all radii. |
|
This bug should be fixed in 0.14 as at the moment it's not clear if it causes some regression to the imminent 0.13. |
|
git show b36ffe6 |
Date Modified | Username | Field | Change |
---|---|---|---|
2012-11-26 12:57 | jrheinlaender | New Issue | |
2012-11-26 12:57 | jrheinlaender | File Added: filletcrash.fcstd | |
2012-11-26 21:34 | wmayer | Note Added: 0002585 | |
2012-11-27 10:25 | wmayer | Note Added: 0002587 | |
2012-11-27 11:22 | wmayer | Note Edited: 0002587 | |
2012-11-27 19:35 | wmayer | Note Added: 0002588 | |
2012-11-28 08:34 | wmayer | Note Edited: 0002588 | |
2012-11-28 09:05 | wmayer | Note Added: 0002589 | |
2012-11-28 09:05 | wmayer | Target Version | => 0.14 |
2012-11-28 09:05 | wmayer | Status | new => assigned |
2012-11-28 09:05 | wmayer | Assigned To | => wmayer |
2013-06-12 19:17 | wmayer | Note Added: 0003200 | |
2013-06-12 19:20 | wmayer | Status | assigned => closed |
2013-06-12 19:20 | wmayer | Resolution | open => fixed |
2013-06-12 19:20 | wmayer | Fixed in Version | => 0.14 |