View Issue Details

IDProjectCategoryView StatusLast Update
0000152FreeCADBugpublic2010-10-05 07:10
Reporterefferre Assigned Towmayer  
PrioritynormalSeverityminorReproducibilitysometimes
Status closedResolutionnot fixable 
Product Version0.10 
Summary0000152: parallel make doesn't work during compilation
DescriptionI'm using gentoo so I'm compiling FreeCAD from source. The compilation doesn't always work, it seems there is a problem with parallel make (I'm using -j8). The log is attached to the bug, the error is always the same but it doesn't appear at each recompilation. If I set -j1 into the make options the problem vanishes.
TagsNo tags attached.
FreeCAD Information

Activities

2010-09-12 13:23

 

sci-misc:freecad-0.10.3205:20100911-110218.log.gz (Attachment missing)

wmayer

2010-09-16 07:14

administrator   ~0000320

You got the error in moc_DlgPrimitives.cpp What is the content of this file?

efferre

2010-09-17 19:12

reporter   ~0000324

During the recompilation today I have got also a similar error in an another file.

libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../../.. -DMeshExport= -DMeshGuiExport= -D_OCC64 -g -D_DEBUG -D_REENTRANT -Wall -I../../../../src -I../../../../src -I/usr/include/python2.6 -I/usr/include -I/usr/include -I/usr/include/qt4 -I/usr/include/qt4/Qt3Support -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtSvg -I/usr/include/qt4/QtXml -I/usr/include/qt4/QtUiTools -I/usr/include/qt4/QtWebKit -I/usr/include -I/usr/include -O2 -pipe -march=core2 -msse4 -Wno-deprecated -frtti -MT libMeshGui_la-ViewProviderPython.lo -MD -MP -MF .deps/libMeshGui_la-ViewProviderPython.Tpo -c ViewProviderPython.cpp -fPIC -DPIC -o .libs/libMeshGui_la-ViewProviderPython.o
In file included from DlgRegularSolidImp.cpp:221:
moc_DlgRegularSolidImp.cpp:44: error: ‘MeshGui::MeshGui’ has not been declared
moc_DlgRegularSolidImp.cpp:53: error: ‘MeshGui::MeshGui’ has not been declared
moc_DlgRegularSolidImp.cpp:53: error: non-member function ‘const QMetaObject* metaObject()’ cannot have cv-qualifier
/usr/include/qt4/QtCore/qobject.h: In function ‘const QMetaObject* metaObject()’:
/usr/include/qt4/QtCore/qobject.h:296: error: ‘QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> > QObject::d_ptr’ is protected
moc_DlgRegularSolidImp.cpp:55: error: within this context
/usr/include/qt4/QtCore/qobject.h:296: error: invalid use of non-static data member ‘QObject::d_ptr’
moc_DlgRegularSolidImp.cpp:55: error: from this location
/usr/include/qt4/QtCore/qobject.h:296: error: ‘QScopedPointer<QObjectData, QScopedPointerDeleter<QObjectData> > QObject::d_ptr’ is protected
moc_DlgRegularSolidImp.cpp:55: error: within this context
/usr/include/qt4/QtCore/qobject.h:296: error: invalid use of non-static data member ‘QObject::d_ptr’
moc_DlgRegularSolidImp.cpp:55: error: from this location
moc_DlgRegularSolidImp.cpp: At global scope:
moc_DlgRegularSolidImp.cpp:58: error: ‘MeshGui::MeshGui’ has not been declared
moc_DlgRegularSolidImp.cpp: In function ‘void* qt_metacast(const char*)’:
moc_DlgRegularSolidImp.cpp:62: error: invalid use of ‘this’ in non-member function
moc_DlgRegularSolidImp.cpp:64: error: invalid use of ‘this’ in non-member function
moc_DlgRegularSolidImp.cpp:65: error: cannot call member function ‘virtual void* QDialog::qt_metacast(const char*)’ without object
moc_DlgRegularSolidImp.cpp: At global scope:
moc_DlgRegularSolidImp.cpp:68: error: ‘MeshGui::MeshGui’ has not been declared
moc_DlgRegularSolidImp.cpp: In function ‘int qt_metacall(QMetaObject::Call, int, void**)’:
moc_DlgRegularSolidImp.cpp:70: error: cannot call member function ‘virtual int QDialog::qt_metacall(QMetaObject::Call, int, void**)’ without object
moc_DlgRegularSolidImp.cpp:75: error: ‘on_createSolidButton_clicked’ was not declared in this scope
make[6]: *** [libMeshGui_la-DlgRegularSolidImp.lo] Error 1
make[6]: *** Waiting for unfinished jobs....
mv -f .deps/libMeshGui_la-DlgSettingsMeshView.Tpo .deps/libMeshGui_la-DlgSettingsMeshView.Plo
mv -f .deps/libMeshGui_la-SoFCMeshObject.Tpo .deps/libMeshGui_la-SoFCMeshObject.Plo
mv -f .deps/libMeshGui_la-ViewProviderPython.Tpo .deps/libMeshGui_la-ViewProviderPython.Plo
mv -f .deps/libMeshGui_la-RemoveComponents.Tpo .deps/libMeshGui_la-RemoveComponents.Plo
mv -f .deps/libMeshGui_la-Command.Tpo .deps/libMeshGui_la-Command.Plo
mv -f .deps/libMeshGui_la-DlgEvaluateMeshImp.Tpo .deps/libMeshGui_la-DlgEvaluateMeshImp.Plo
mv -f .deps/libMeshGui_la-ViewProvider.Tpo .deps/libMeshGui_la-ViewProvider.Plo
make[6]: Leaving directory `/var/tmp/portage/sci-misc/freecad-0.10.3205/work/FreeCAD-0.10.3205/src/Mod/Mesh/Gui'
make[5]: *** [all] Error 2
make[5]: Leaving directory `/var/tmp/portage/sci-misc/freecad-0.10.3205/work/FreeCAD-0.10.3205/src/Mod/Mesh/Gui'
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory `/var/tmp/portage/sci-misc/freecad-0.10.3205/work/FreeCAD-0.10.3205/src/Mod/Mesh'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/var/tmp/portage/sci-misc/freecad-0.10.3205/work/FreeCAD-0.10.3205/src/Mod'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/var/tmp/portage/sci-misc/freecad-0.10.3205/work/FreeCAD-0.10.3205/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/portage/sci-misc/freecad-0.10.3205/work/FreeCAD-0.10.3205'
make: *** [all] Error 2

I'm attaching both files, moc_DlgPrimitives.cpp and moc_DlgRegularSolidImp.cpp

2010-09-17 19:13

 

moc_files.tar.bz2 (Attachment missing)

wmayer

2010-09-18 12:39

administrator   ~0000325

The content of the moc files are completely wrong. When doing a normal build then the content is correct, right? In case it's a problem with the parallel build then it must be a problem with Qt's moc command which produces trash.

2010-09-18 17:51

 

moc_files_correct.tar.bz2 (Attachment missing)

unauthenticated

2010-09-18 17:53

viewer   ~0000326

Yes, I confirm that the moc files are different when the compilation process is correct. I'm attaching the correct files.

wmayer

2010-09-28 14:08

administrator   ~0000335

I fear there is nothing we can do to fix this issue. I guess there is some kind of race condition where two moc instances work on the same file and thus causes the trash. What we then need is some kind of locking but I have no idea how to achieve this on Makefiles.

What about using the alternative cmake? This is already working quite well on Debian and derivates and Windows.

wmayer

2010-10-05 07:10

administrator   ~0000345

As default the cmake build system should be used which is pretty stable now. There parallel builds should work much better.

IMO I can build with automake on a Dual core machine without problems. Maybe the issue only appears with four or more cores only. So, at least there is nothing I can do now.

Issue History

Date Modified Username Field Change
2010-09-12 13:23 unauthenticated New Issue
2010-09-12 13:23 unauthenticated File Added: sci-misc:freecad-0.10.3205:20100911-110218.log.gz
2010-09-16 07:14 wmayer Note Added: 0000320
2010-09-17 19:12 efferre Note Added: 0000324
2010-09-17 19:13 efferre File Added: moc_files.tar.bz2
2010-09-18 12:29 wmayer Reporter unauthenticated => efferre
2010-09-18 12:39 wmayer Note Added: 0000325
2010-09-18 17:51 unauthenticated File Added: moc_files_correct.tar.bz2
2010-09-18 17:53 unauthenticated Note Added: 0000326
2010-09-28 14:08 wmayer Note Added: 0000335
2010-10-05 07:10 wmayer Note Added: 0000345
2010-10-05 07:10 wmayer Assigned To => wmayer
2010-10-05 07:10 wmayer Status new => closed
2010-10-05 07:10 wmayer Resolution open => not fixable