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
#2 0x02ee3075 in ?? () from /usr/lib/libCoin.so.60
#3 0x02f50f4a in sogl_render_pointset(SoGLCoordinateElement const*, SbVec3f const*, SoMaterialBundle*, SoTextureCoordinateBundle const*, int, int) ()
   from /usr/lib/libCoin.so.60
#4 0x030392fc in SoPointSet::GLRender(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
#5 0x07f0cfeb in PartGui::SoBrepPointSet::GLRender(SoGLRenderAction*) ()
   from /usr/lib/freecad/Mod/Part/libPartGui.so.2
#6 0x02fd2e27 in SoNode::GLRenderBelowPath(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
#7 0x07f09c93 in PartGui::SoBrepPointSet::GLRenderBelowPath(SoGLRenderAction*)
    () from /usr/lib/freecad/Mod/Part/libPartGui.so.2
#8 0x02feb57b in SoSeparator::GLRenderBelowPath(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
#9 0x02feb57b in SoSeparator::GLRenderBelowPath(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
#10 0x02fe9ab8 in SoSeparator::GLRender(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
#11 0x02fd3790 in SoNode::GLRenderS(SoAction*, SoNode*) ()
   from /usr/lib/libCoin.so.60
---Type <return> to continue, or q <return> to quit---
#12 0x02d684a0 in SoAction::traverse(SoNode*) () from /usr/lib/libCoin.so.60
#13 0x02ee0e7c in SoChildList::traverse(SoAction*, int, int) ()
   from /usr/lib/libCoin.so.60
#14 0x02ee1108 in SoChildList::traverse(SoAction*, int) ()
   from /usr/lib/libCoin.so.60
#15 0x02fefeab in SoSwitch::doAction(SoAction*) () from /usr/lib/libCoin.so.60
#16 0x02fef867 in SoSwitch::GLRender(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
#17 0x02fd2e27 in SoNode::GLRenderBelowPath(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
#18 0x02feb57b in SoSeparator::GLRenderBelowPath(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
#19 0x02feb57b in SoSeparator::GLRenderBelowPath(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
#20 0x02feb57b in SoSeparator::GLRenderBelowPath(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
#21 0x02feb57b in SoSeparator::GLRenderBelowPath(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
#22 0x02fe9ab8 in SoSeparator::GLRender(SoGLRenderAction*) ()
   from /usr/lib/libCoin.so.60
#23 0x02fd3790 in SoNode::GLRenderS(SoAction*, SoNode*) ()
   from /usr/lib/libCoin.so.60
#24 0x02d684a0 in SoAction::traverse(SoNode*) () from /usr/lib/libCoin.so.60
---Type <return> to continue, or q <return> to quit---
#25 0x02d687d3 in SoAction::beginTraversal(SoNode*) ()
   from /usr/lib/libCoin.so.60
#26 0x02d71b80 in SoGLRenderAction::beginTraversal(SoNode*) ()
   from /usr/lib/libCoin.so.60
#27 0x02d71242 in SoGLRenderActionP::renderSingle(SoNode*) ()
   from /usr/lib/libCoin.so.60
#28 0x02d719c8 in SoGLRenderActionP::render(SoNode*) ()
   from /usr/lib/libCoin.so.60
#29 0x02d71c37 in SoGLRenderAction::beginTraversal(SoNode*) ()
   from /usr/lib/libCoin.so.60
#30 0x02d6926a in SoAction::apply(SoNode*) () from /usr/lib/libCoin.so.60
#31 0x017139dc in Gui::SoBoxSelectionRenderAction::apply(SoNode*) ()
   from /usr/lib/freecad/lib/libFreeCADGui.so.2
#32 0x02f781f8 in SoRenderManager::renderScene(SoGLRenderAction*, SoNode*, unsigned int) () from /usr/lib/libCoin.so.60
#33 0x02f79593 in SoRenderManager::actuallyRender(SoGLRenderAction*, int, int, int) () from /usr/lib/libCoin.so.60
#34 0x02f797b0 in SoRenderManager::renderSingle(SoGLRenderAction*, int, int, int) () from /usr/lib/libCoin.so.60
#35 0x02f79fd4 in SoRenderManager::render(SoGLRenderAction*, int, int, int) ()
   from /usr/lib/libCoin.so.60
#36 0x02f778e3 in SoRenderManager::render(int, int) ()
   from /usr/lib/libCoin.so.60
---Type <return> to continue, or q <return> to quit---
#37 0x02f76ad5 in SoSceneManager::render(int, int) ()
   from /usr/lib/libCoin.so.60
#38 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
#41 0x02a59a80 in SoQtRenderArea::redraw() () from /usr/lib/libSoQt4.so.20
#42 0x02a5b78f in SoQtRenderArea::render() () from /usr/lib/libSoQt4.so.20
#43 0x02a5b828 in SoQtRenderAreaP::renderCB(void*, SoSceneManager*) ()
   from /usr/lib/libSoQt4.so.20
#44 0x02f777fd in SoSceneManagerP::renderCB(void*, SoRenderManager*) ()
   from /usr/lib/libCoin.so.60
#45 0x02f78cf3 in SoRenderManager::redraw() () from /usr/lib/libCoin.so.60
#46 0x02f7a975 in SoRenderManagerP::redrawshotTriggeredCB(void*, SoSensor*) ()
   from /usr/lib/libCoin.so.60
#47 0x0306544a in SoSensor::trigger() () from /usr/lib/libCoin.so.60
#48 0x03064542 in SoDelayQueueSensor::trigger() () from /usr/lib/libCoin.so.60
#49 0x0306654a in SoSensorManager::processDelayQueue(int) ()
   from /usr/lib/libCoin.so.60
#50 0x02a520d1 in SoQtP::slot_idleSensor() () from /usr/lib/libSoQt4.so.20
#51 0x02a521b4 in SoQtP::qt_metacall(QMetaObject::Call, int, void**) ()
   from /usr/lib/libSoQt4.so.20
---Type <return> to continue, or q <return> to quit---
#52 0x0029db7d in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#53 0x002aca6a in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#54 0x002fb7d5 in QTimer::timeout() ()
   from /usr/lib/i386-linux-gnu/libQtCore.so.4
#55 0x002b4286 in QTimer::timerEvent(QTimerEvent*) ()
   from /usr/lib/i386-linux-gnu/libQtCore.so.4
#56 0x002af994 in QObject::event(QEvent*) ()
   from /usr/lib/i386-linux-gnu/libQtCore.so.4
#57 0x00529d54 in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/i386-linux-gnu/libQtGui.so.4
#58 0x0052f103 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/i386-linux-gnu/libQtGui.so.4
#59 0x0165f20a in Gui::GUIApplicationNativeEventAware::processSpaceballEvent(QObject*, QEvent*) () from /usr/lib/freecad/lib/libFreeCADGui.so.2
#60 0x0157b838 in Gui::GUIApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/freecad/lib/libFreeCADGui.so.2
#61 0x0029719e in QCoreApplication::notifyInternal(QObject*, QEvent*) ()
   from /usr/lib/i386-linux-gnu/libQtCore.so.4
#62 0x002c7c10 in ?? () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#63 0x002c5122 in ?? () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#64 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
#65 0x01dac990 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#66 0x01dacc2a in g_main_context_iteration ()
   from /lib/i386-linux-gnu/libglib-2.0.so.0
#67 0x002c5ada in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#68 0x005e1e3a in ?? () from /usr/lib/i386-linux-gnu/libQtGui.so.4
#69 0x002961dd in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/i386-linux-gnu/libQtCore.so.4
#70 0x00296421 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/i386-linux-gnu/libQtCore.so.4
#71 0x0029b19d in QCoreApplication::exec() ()
   from /usr/lib/i386-linux-gnu/libQtCore.so.4
#72 0x005278f4 in QApplication::exec() ()
   from /usr/lib/i386-linux-gnu/libQtGui.so.4
#73 0x01578347 in Gui::Application::runApplication() ()
   from /usr/lib/freecad/lib/libFreeCADGui.so.2
#74 0x0804ae19 in ?? ()
#75 0x01bdd113 in __libc_start_main () from /lib/i386-linux-gnu/libc.so.6
#76 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