System: RHEL6 (2.6.32-504.8.1.el6.x86_64) Hardware: Various cluster nodes.
We recently deployed GPFS storage and have discovered that Cmake fails when writing to files in the GPFS storage. The source of the problem, identified by using strace(1), appears to be a NULL pointer in the first entry of writev(2) iovec argument. The line below is representative of what we see in the strace output. -------- writev(3, [{NULL, 0}, {"\n#ifdef __cplusplus\n# error \"A C"..., 15135}], 2) = -1 EINVAL (Invalid argument) -------- On non-GPFS storage, the files are written w/o problem. The NULL pointer in the first iovec entry is silently ignored. The failures occur for Cmake installations made using Gcc 4.4.7, 4.7.2, 4.9.2, and all Intel compilers we've tried so far. We have worked around the problem by building Cmake 3.1.1 with PGI 11.8-0 which does not use the writev() system calls in its run-time. Has anyone else observed this symptom with GPFS? Is anyone familiar enough with the Cmake code to know why the g++ compiler run-time uses writev() in the first place? I have not been able to reproduce the writev() system calls with a short C++ program so far. The problem reproduces for us by attempting to build Cmake from source with the source tree on GPFS. For instance ... ./bootstrap --prefix=someinstallpoint with CWD at the top of the source tree, using g++. A C code with explicit writev() calls, with a NULL pointer in the first iovec entry, also reproduces the behavior. When the NULL is part of any entry other than the first, the code runs identically for all storage. Thanks, Phil P. A. Cheeseman a...@purdue.edu 765.496.8224 -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake