View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0002009 | FreeCAD | Bug | public | 2015-03-18 22:34 | 2015-03-19 02:57 |
| Reporter | Jin | Assigned To | yorik | ||
| Priority | normal | Severity | crash | Reproducibility | always |
| Status | closed | Resolution | no change required | ||
| Platform | x86_64 | OS | Linux | OS Version | Fedora 21 |
| Fixed in Version | 0.15 | ||||
| Summary | 0002009: python-based workbenches crash | ||||
| Description | All 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 Reproduce | Simply try to select the "Arch" workbench or try to export something as DXF | ||||
| Tags | No tags attached. | ||||
| FreeCAD Information | |||||
|
|
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) |
|
|
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. |
|
|
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! |
|
|
Ok, I'm closing this issue then, reopen it if needed. |
| 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 |
FreeCAD