View Issue Details

IDProjectCategoryView StatusLast Update
0002009FreeCADBugpublic2015-03-19 02:57
ReporterJin Assigned Toyorik  
PrioritynormalSeveritycrashReproducibilityalways
Status closedResolutionno change required 
Platformx86_64OSLinuxOS VersionFedora 21
Fixed in Version0.15 
Summary0002009: python-based workbenches crash
DescriptionAll python based workbenches simply crash when selected. The message in the console says:
FreeCAD: SoBase.cpp:190: SoBase::SoBase(): Assertion `(SoBase::classTypeId != SoType::badType()) && "An SoBase-derived class was attempted instantiated *before* Coin initialization. (Have you perhaps placed an SoBase-derived instance (e.g. a scene graph node) in non-heap memory?) See SoBase class documentation for more info."' failed.

And here's the backtrace:
#0 0x00007fbc166ed8d7 in raise () at /lib64/libc.so.6
#1 0x00007fbc166ef53a in abort () at /lib64/libc.so.6
0000002 0x00007fbc166e647d in __assert_fail_base () at /lib64/libc.so.6
0000003 0x00007fbc166e6532 in () at /lib64/libc.so.6
0000004 0x00007fbc160133c9 in () at /lib64/libCoin.so.60
0000005 0x00007fbc15f7765a in SoBase::isOfType(SoType) const ()
    at /lib64/libCoin.so.60
0000006 0x00007fbc15f408e3 in SoGlobalField::getGlobalFieldContainer(SbName const&) () at /lib64/libCoin.so.60
0000007 0x00007fbc16001649 in SoDB::getGlobalField(SbName const&) ()
    at /lib64/libCoin.so.60
0000008 0x00007fbc16004110 in SoDBP::updateRealTimeFieldCB(void*, SoSensor*) ()
    at /lib64/libCoin.so.60
0000009 0x00007fbc160ee907 in SoSensorManager::processTimerQueue() ()
    at /lib64/libCoin.so.60
0000010 0x00007fbc1e854c11 in SIM::Coin3D::Quarter::SensorManager::timerQueueTimeout() () at /home/jin/Work/Projects/SpareParts/sysroot/lib/libFreeCADGui.so
0000011 0x00007fbc18b02cdc in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () at /lib64/libQtCore.so.4
0000012 0x00007fbc18b072a3 in QObject::event(QEvent*) () at /lib64/libQtCore.so.4
0000013 0x00007fbc195adefc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib64/libQtGui.so.4
0000014 0x00007fbc195b4958 in QApplication::notify(QObject*, QEvent*) ()
    at /lib64/libQtGui.so.4
0000015 0x00007fbc1e681d02 in Gui::GUIApplication::notify(QObject*, QEvent*) ()
    at /home/jin/Work/Projects/SpareParts/sysroot/lib/libFreeCADGui.so
0000016 0x00007fbc18aee16d in QCoreApplication::notifyInternal(QObject*, QEvent*) () at /lib64/libQtCore.so.4
0000017 0x00007fbc18b1faeb in QTimerInfoList::activateTimers() ()
    at /lib64/libQtCore.so.4
0000018 0x00007fbc18b1cad1 in timerSourceDispatch(_GSource*, int (*)(void*), void*) () at /lib64/libQtCore.so.4
0000019 0x00007fbc113d27fb in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
0000020 0x00007fbc113d2b98 in g_main_context_iterate.isra ()
    at /lib64/libglib-2.0.so.0
0000021 0x00007fbc113d2c4c in g_main_context_iteration ()
    at /lib64/libglib-2.0.so.0
0000022 0x00007fbc18b1d49e in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQtCore.so.4
0000023 0x00007fbc19651176 in QGuiEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQtGui.so.4
0000024 0x00007fbc18aeccc1 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQtCore.so.4
0000025 0x00007fbc18aed025 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQtCore.so.4
0000026 0x00007fbc18af2709 in QCoreApplication::exec() () at /lib64/libQtCore.so.4
0000027 0x00007fbc1e678d90 in Gui::Application::runApplication() ()
    at /home/jin/Work/Projects/SpareParts/sysroot/lib/libFreeCADGui.so
0000028 0x0000000000404203 in main ()


I am using current master head (4e41e535ff01d39b650add123f42629e1a8d6b05)
Steps To ReproduceSimply try to select the "Arch" workbench or try to export something as DXF
TagsNo tags attached.
FreeCAD Information

Activities

yorik

2015-03-19 00:13

administrator   ~0005877

If this isn't because of the quarter viewer, maybe something to do with pivy... Can you try the following code in the python console of FreeCAD, after you create a new document, just to rule out the possibility? It should add a cube in the 3D view, and not crash, obviously:

from pivy import coin
sg = FreeCADGui.ActiveDocument.ActiveView.getSceneGraph()
c = coin.SoCube()
sg.addChild(c)

Jin

2015-03-19 00:19

reporter   ~0005878

Well, seems that you are right, importing coin causes the crash.

I.e. after pasting "from pivy import coin" in the FreeCAD python console it crashes with the message:

FreeCAD: SoType.cpp:730: SbBool SoType::isDerivedFrom(SoType) const: Assertion `!this->isBad()' failed.

Jin

2015-03-19 00:52

reporter   ~0005879

After a small debugging session on IRC the problem is resolved.

Fedora 21 ships Coin3 libraries, but their python-pivy is linked vs. Coin2 libraries. So basically FreeCAD was built vs Coin3 while python was trying to use Coin2 - this was causing the crashes.

For now I recompield pivy rpm's from rawhide which fixed this issue.

@yorik: thanks for the help!

yorik

2015-03-19 02:56

administrator   ~0005880

Ok, I'm closing this issue then, reopen it if needed.

Issue History

Date Modified Username Field Change
2015-03-18 22:34 Jin New Issue
2015-03-19 00:13 yorik Note Added: 0005877
2015-03-19 00:19 Jin Note Added: 0005878
2015-03-19 00:52 Jin Note Added: 0005879
2015-03-19 02:56 yorik Note Added: 0005880
2015-03-19 02:57 yorik Status new => closed
2015-03-19 02:57 yorik Assigned To => yorik
2015-03-19 02:57 yorik Resolution open => no change required
2015-03-19 02:57 yorik Fixed in Version => 0.15