[CMake] Problems moving my project to 2.6.0

Karl Wallner list at weps.de
Sat May 10 14:45:06 EDT 2008


I currently moving a about 60000 LoC-Project from cmake-2.4.8 to cmake-2.6.0.

Cmake segfaults during make process when trying to build shared libraries:
make[2]: Entering directory 
`/build/wepsDIS-0.9.2-BUILD.linux-g++-Debug-CMake26-uups'
cd /build/wepsDIS-0.9.2-BUILD.linux-g++-Debug-CMake26-uups && 
/opt/cmake26/bin/cmake -E cmake_depends "Unix Makefiles" 
/project/dis/WORKSPACE/wepsDIS 
/project/dis/WORKSPACE/wepsDIS/SDK/libDIS/debug_shared 
/build/wepsDIS-0.9.2-BUILD.linux-g++-Debug-CMake26-uups 
/build/wepsDIS-0.9.2-BUILD.linux-g++-Debug-CMake26-uups/SDK/libDIS/debug_shared 
/build/wepsDIS-0.9.2-BUILD.linux-g++-Debug-CMake26-uups/SDK/libDIS/debug_shared/CMakeFiles/DISd.dir/DependInfo.cmake 
--color=
make[2]: *** [SDK/libDIS/debug_shared/CMakeFiles/DISd.dir/depend] Fehler 139
make[2]: Leaving directory `/build/wepsDIS-0.9.2-BUILD.linux-g++-Debug-CMake26-uups'
make[1]: *** [SDK/libDIS/debug_shared/CMakeFiles/DISd.dir/all] Fehler 2
make[1]: Leaving directory `/build/wepsDIS-0.9.2-BUILD.linux-g++-Debug-CMake26-uups'
make: *** [all] Fehler 2

Backtrace shows:
Program received signal SIGSEGV, Segmentation fault.
0xb7deb344 in std::string::c_str () from /usr/lib/libstdc++.so.5
(gdb) bt
#0  0xb7deb344 in std::string::c_str () from /usr/lib/libstdc++.so.5
#1  0x082f7646 in cmLocalUnixMakefileGenerator3::CheckMultipleOutputs 
(this=0x8484678, verbose=false) at 
/opt/cmake26/BUILD/cmake-2.6.0/Source/cmLocalUnixMakefileGenerator3.cxx:1584
#2  0x082f5d13 in cmLocalUnixMakefileGenerator3::UpdateDependencies 
(this=0x8484678, tgtInfo=0x845b9bc 
"/build/wepsDIS-0.9.2-BUILD.linux-g++-Debug-CMake26-uups/SDK/libDIS/debug_shared/CMakeFiles/DISd.dir/DependInfo.cmake", 
verbose=false,
     color=true) at 
/opt/cmake26/BUILD/cmake-2.6.0/Source/cmLocalUnixMakefileGenerator3.cxx:1328
#3  0x081ff794 in cmake::ExecuteCMakeCommand (args=@0xbff49c70) at 
/opt/cmake26/BUILD/cmake-2.6.0/Source/cmake.cxx:1509
#4  0x0817d433 in do_cmake (ac=10, av=0xbff49f04) at 
/opt/cmake26/BUILD/cmake-2.6.0/Source/cmakemain.cxx:451
#5  0x0817c5e0 in main (ac=10, av=0xbff49f04) at 
/opt/cmake26/BUILD/cmake-2.6.0/Source/cmakemain.cxx:283

Looks the problem is in "cmLocalUnixMakefileGenerator3::CheckMultipleOutputs":
(gdb) f 1
#1  0x082f7646 in cmLocalUnixMakefileGenerator3::CheckMultipleOutputs 
(this=0x8484678, verbose=false) at 
/opt/cmake26/BUILD/cmake-2.6.0/Source/cmLocalUnixMakefileGenerator3.cxx:1584
1584	      if(cmSystemTools::FileExists(dependee.c_str()) &&
(gdb) p dependee
$1 = (const string &) @0x848f894: {_M_dataplus = {<std::allocator<char>> = {<No 
data fields>}, _M_p = 0xc <Address 0xc out of bounds>}}
(gdb) p pairs_string
$2 = 0x849c7ec 
"/build/wepsDIS-0.9.2-BUILD.linux-g++-Debug-CMake26-uups/SDK/libDIS/debug_shared/libDISd.so;/build/wepsDIS-0.9.2-BUILD.linux-g++-Debug-CMake26-uups/SDK/libDIS/debug_shared/libDISd.so.;0.9.2\"\";/build/"...

I was wondering why the version/soversion of the shared library was still 
quoted. So I decided to unquote soversion and version in 
"cmTarget::GetLibraryNamesInternal" (See patch ... or ugly hack attached).

After that everything works fine.

-- Karl



-------------- next part --------------
A non-text attachment was scrubbed...
Name: cmake-2.6.0-unquote-soversion.patch
Type: text/x-patch
Size: 1862 bytes
Desc: not available
URL: <http://www.cmake.org/pipermail/cmake/attachments/20080510/48f5af62/attachment.bin>


More information about the CMake mailing list