View Issue Details

IDProjectCategoryView StatusLast Update
0000545FreeCADBugpublic2012-09-21 09:06
ReportersliptonicAssigned To 
PrioritynormalSeveritycrashReproducibilityalways
Status closedResolutionfixed 
Product Version 
Target VersionFixed in Version0.13 
Summary0000545: Undo revolve causes crash 'illegal storage'
DescriptionCreate a closed sketch in part design. Switch to the part workbench. Click the 'revolve a selected shape' icon in the toolbar.

In the dialog, select the sketch and set X to something greater than zero. Click 'ok'.

Now undo the previous operation. FreeCAD crashes with 'illegal storage' error
Additional InformationFreeCAD 0.13, Libs: 0.13R5322

Linux Mint 'Lisa'
TagsNo tags attached.

Activities

wmayer

2011-12-21 16:25

administrator   ~0001509

Taken from forum related to this report:
http://forum.freecadweb.org/viewtopic.php?f=10&t=2060&p=14662&hilit=revolve#p14658

wmayer

2011-12-22 10:25

administrator   ~0001510

Stqck trace on Linux:

Starting program: /usr/bin/freecad
[Thread debugging using libthread_db enabled]
FreeCAD 0.13, Libs: 0.13R4963 (Launchpad)
© Juergen Riegel, Werner Mayer, Yorik van Havre 2001-2011
  ##### #### ### ####
  # # # # # #
  # ## #### #### # # # # #
  #### # # # # # # # ##### # #
  # # #### #### # # # # #
  # # # # # # # # # ## ## ##
  # # #### #### ### # # #### ## ## ##

[New Thread 0xb6d29b70 (LWP 4942)]
[New Thread 0xb6528b70 (LWP 4943)]
failed to create drawable
[New Thread 0xb5c06b70 (LWP 4944)]
[Thread 0xb6d29b70 (LWP 4942) exited]

Program received signal SIGSEGV, Segmentation fault.
0x04be6f94 in ?? () from /usr/lib/i386-linux-gnu/dri/libdricore.so
(gdb) bt
#0 0x04be6f94 in ?? () from /usr/lib/i386-linux-gnu/dri/libdricore.so
#1 0x02e03cf9 in SoGLCoordinateElement::send(int) const ()
   from /usr/lib/libCoin.so.60
0000002 0x02ee3075 in ?? () from /usr/lib/libCoin.so.60
0000003 0x02f50f4a in sogl_render_pointset(SoGLCoordinateElement const*, SbVec3f const*, SoMaterialBundle*, SoTextureCoordinateBundle const*, int, int) ()
   from /usr/lib/libCoin.so.60
0000004 0x030392fc in SoPointSet::GLRender(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
0000005 0x07f0cfeb in PartGui::SoBrepPointSet::GLRender(SoGLRenderAction*) ()
   from /usr/lib/freecad/Mod/Part/libPartGui.so.2
0000006 0x02fd2e27 in SoNode::GLRenderBelowPath(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
0000007 0x07f09c93 in PartGui::SoBrepPointSet::GLRenderBelowPath(SoGLRenderAction*)
    () from /usr/lib/freecad/Mod/Part/libPartGui.so.2
0000008 0x02feb57b in SoSeparator::GLRenderBelowPath(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
0000009 0x02feb57b in SoSeparator::GLRenderBelowPath(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
0000010 0x02fe9ab8 in SoSeparator::GLRender(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
0000011 0x02fd3790 in SoNode::GLRenderS(SoAction*, SoNode*) ()
   from /usr/lib/libCoin.so.60
---Type <return> to continue, or q <return> to quit---
0000012 0x02d684a0 in SoAction::traverse(SoNode*) () from /usr/lib/libCoin.so.60
0000013 0x02ee0e7c in SoChildList::traverse(SoAction*, int, int) ()
   from /usr/lib/libCoin.so.60
0000014 0x02ee1108 in SoChildList::traverse(SoAction*, int) ()
   from /usr/lib/libCoin.so.60
0000015 0x02fefeab in SoSwitch::doAction(SoAction*) () from /usr/lib/libCoin.so.60
0000016 0x02fef867 in SoSwitch::GLRender(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
0000017 0x02fd2e27 in SoNode::GLRenderBelowPath(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
0000018 0x02feb57b in SoSeparator::GLRenderBelowPath(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
0000019 0x02feb57b in SoSeparator::GLRenderBelowPath(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
0000020 0x02feb57b in SoSeparator::GLRenderBelowPath(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
0000021 0x02feb57b in SoSeparator::GLRenderBelowPath(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
0000022 0x02fe9ab8 in SoSeparator::GLRender(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
0000023 0x02fd3790 in SoNode::GLRenderS(SoAction*, SoNode*) ()
   from /usr/lib/libCoin.so.60
0000024 0x02d684a0 in SoAction::traverse(SoNode*) () from /usr/lib/libCoin.so.60
---Type <return> to continue, or q <return> to quit---
0000025 0x02d687d3 in SoAction::beginTraversal(SoNode*) ()
   from /usr/lib/libCoin.so.60
0000026 0x02d71b80 in SoGLRenderAction::beginTraversal(SoNode*) ()
   from /usr/lib/libCoin.so.60
0000027 0x02d71242 in SoGLRenderActionP::renderSingle(SoNode*) ()
   from /usr/lib/libCoin.so.60
0000028 0x02d719c8 in SoGLRenderActionP::render(SoNode*) ()
   from /usr/lib/libCoin.so.60
0000029 0x02d71c37 in SoGLRenderAction::beginTraversal(SoNode*) ()
   from /usr/lib/libCoin.so.60
0000030 0x02d6926a in SoAction::apply(SoNode*) () from /usr/lib/libCoin.so.60
0000031 0x017139dc in Gui::SoBoxSelectionRenderAction::apply(SoNode*) ()
   from /usr/lib/freecad/lib/libFreeCADGui.so.2
0000032 0x02f781f8 in SoRenderManager::renderScene(SoGLRenderAction*, SoNode*, unsigned int) () from /usr/lib/libCoin.so.60
0000033 0x02f79593 in SoRenderManager::actuallyRender(SoGLRenderAction*, int, int, int) () from /usr/lib/libCoin.so.60
0000034 0x02f797b0 in SoRenderManager::renderSingle(SoGLRenderAction*, int, int, int) () from /usr/lib/libCoin.so.60
0000035 0x02f79fd4 in SoRenderManager::render(SoGLRenderAction*, int, int, int) ()
   from /usr/lib/libCoin.so.60
0000036 0x02f778e3 in SoRenderManager::render(int, int) ()
   from /usr/lib/libCoin.so.60
---Type <return> to continue, or q <return> to quit---
0000037 0x02f76ad5 in SoSceneManager::render(int, int) ()
   from /usr/lib/libCoin.so.60
0000038 0x02a8c5d8 in SoQtViewerP::reallyRedraw(int, int) ()
   from /usr/lib/libSoQt4.so.20
#39 0x02a8cd6a in SoQtViewer::actualRedraw() () from /usr/lib/libSoQt4.so.20
#40 0x0175127b in Gui::View3DInventorViewer::actualRedraw() ()
   from /usr/lib/freecad/lib/libFreeCADGui.so.2
0000041 0x02a59a80 in SoQtRenderArea::redraw() () from /usr/lib/libSoQt4.so.20
0000042 0x02a5b78f in SoQtRenderArea::render() () from /usr/lib/libSoQt4.so.20
0000043 0x02a5b828 in SoQtRenderAreaP::renderCB(void*, SoSceneManager*) ()
   from /usr/lib/libSoQt4.so.20
0000044 0x02f777fd in SoSceneManagerP::renderCB(void*, SoRenderManager*) ()
   from /usr/lib/libCoin.so.60
0000045 0x02f78cf3 in SoRenderManager::redraw() () from /usr/lib/libCoin.so.60
0000046 0x02f7a975 in SoRenderManagerP::redrawshotTriggeredCB(void*, SoSensor*) ()
   from /usr/lib/libCoin.so.60
0000047 0x0306544a in SoSensor::trigger() () from /usr/lib/libCoin.so.60
0000048 0x03064542 in SoDelayQueueSensor::trigger() () from /usr/lib/libCoin.so.60
0000049 0x0306654a in SoSensorManager::processDelayQueue(int) ()
   from /usr/lib/libCoin.so.60
0000050 0x02a520d1 in SoQtP::slot_idleSensor() () from /usr/lib/libSoQt4.so.20
0000051 0x02a521b4 in SoQtP::qt_metacall(QMetaObject::Call, int, void**) ()
   from /usr/lib/libSoQt4.so.20
---Type <return> to continue, or q <return> to quit---
0000052 0x0029db7d in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
0000053 0x002aca6a in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
0000054 0x002fb7d5 in QTimer::timeout() ()
   from /usr/lib/i386-linux-gnu/libQtCore.so.4
0000055 0x002b4286 in QTimer::timerEvent(QTimerEvent*) ()
   from /usr/lib/i386-linux-gnu/libQtCore.so.4
0000056 0x002af994 in QObject::event(QEvent*) ()
   from /usr/lib/i386-linux-gnu/libQtCore.so.4
0000057 0x00529d54 in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/i386-linux-gnu/libQtGui.so.4
0000058 0x0052f103 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/i386-linux-gnu/libQtGui.so.4
0000059 0x0165f20a in Gui::GUIApplicationNativeEventAware::processSpaceballEvent(QObject*, QEvent*) () from /usr/lib/freecad/lib/libFreeCADGui.so.2
0000060 0x0157b838 in Gui::GUIApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/freecad/lib/libFreeCADGui.so.2
0000061 0x0029719e in QCoreApplication::notifyInternal(QObject*, QEvent*) ()
   from /usr/lib/i386-linux-gnu/libQtCore.so.4
0000062 0x002c7c10 in ?? () from /usr/lib/i386-linux-gnu/libQtCore.so.4
0000063 0x002c5122 in ?? () from /usr/lib/i386-linux-gnu/libQtCore.so.4
0000064 0x01dac25f in g_main_context_dispatch ()
---Type <return> to continue, or q <return> to quit---
   from /lib/i386-linux-gnu/libglib-2.0.so.0
0000065 0x01dac990 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
0000066 0x01dacc2a in g_main_context_iteration ()
   from /lib/i386-linux-gnu/libglib-2.0.so.0
0000067 0x002c5ada in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
0000068 0x005e1e3a in ?? () from /usr/lib/i386-linux-gnu/libQtGui.so.4
0000069 0x002961dd in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
0000070 0x00296421 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/i386-linux-gnu/libQtCore.so.4
0000071 0x0029b19d in QCoreApplication::exec() ()
   from /usr/lib/i386-linux-gnu/libQtCore.so.4
0000072 0x005278f4 in QApplication::exec() ()
   from /usr/lib/i386-linux-gnu/libQtGui.so.4
0000073 0x01578347 in Gui::Application::runApplication() ()
   from /usr/lib/freecad/lib/libFreeCADGui.so.2
0000074 0x0804ae19 in ?? ()
0000075 0x01bdd113 in __libc_start_main () from /lib/i386-linux-gnu/libc.so.6
0000076 0x0804bc1d in ?? ()
Backtrace stopped: Not enough registers or memory available to unwind further
(gdb)

wmayer

2011-12-22 11:14

administrator   ~0001511

This is the function in Coin3d where it crashes somewhere in the send() methods:

static void
sogl_render_pointset_m0n0t0(const SoGLCoordinateElement * coords,
                            const SbVec3f * normals,
                            SoMaterialBundle * mb,
                            const SoTextureCoordinateBundle * tb,
                            int32_t numpts,
                            int32_t idx)
{
  int i;
  const int unroll = numpts >> 2;
  const int rest = numpts & 3;

  // manually unroll this common loop

  glBegin(GL_POINTS);
  for (i = 0; i < unroll; i++) {
    coords->send(idx++);
    coords->send(idx++);
    coords->send(idx++);
    coords->send(idx++);
  }
  for (i = 0; i < rest; i++) {
    coords->send(idx++);
  }
  glEnd();
}

wmayer

2012-09-21 07:35

administrator   ~0002413

Some more infos:
SoPointSet::GLRender: this->numPoints.getValue() returns -1 (instead of 0)
coords->getNum() returns 0
startIndex.getValue() returns 66
==> numpts will be -66

this causes to run the rendering functions and thus causes the crash.

wmayer

2012-09-21 09:06

administrator   ~0002414

git show 08e6bc0 and git show 065213f

Issue History

Date Modified Username Field Change
2011-12-18 13:11 sliptonic New Issue
2011-12-18 15:01 wmayer Status new => confirmed
2011-12-21 16:25 wmayer Note Added: 0001509
2011-12-22 10:25 wmayer Note Added: 0001510
2011-12-22 11:14 wmayer Note Added: 0001511
2012-09-21 07:35 wmayer Note Added: 0002413
2012-09-21 09:06 wmayer Note Added: 0002414
2012-09-21 09:06 wmayer Status confirmed => closed
2012-09-21 09:06 wmayer Resolution open => fixed
2012-09-21 09:06 wmayer Fixed in Version => 0.13