cmake -E server asserts on many projects
While testing the server mode I found this crash to happen quite often, I'm not sure if I'm doing something wrong, though.
Here's the backtrace:
#0 0x00007ffff628604f in raise () from /usr/lib/libc.so.6
#1 0x00007ffff628747a in abort () from /usr/lib/libc.so.6
#2 0x00007ffff627eea7 in __assert_fail_base () from /usr/lib/libc.so.6
#3 0x00007ffff627ef52 in __assert_fail () from /usr/lib/libc.so.6
#4 0x0000000000bafb30 in cmRealDirectoryWatcher::cmRealDirectoryWatcher (this=0x1656b50, p=0x164c7c0, ps="") at /home/apol/devel/tools/cmake/Source/cmFileMonitor.cxx:154
#5 0x0000000000bade7a in cmDirectoryWatcher::cmDirectoryWatcher (this=0x1656b50, p=0x164c7c0, ps="") at /home/apol/devel/tools/cmake/Source/cmFileMonitor.cxx:222
#6 0x0000000000bad3bb in cmFileMonitor::MonitorPaths(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::function<void (std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int)>) (
this=0x118ec30, paths=std::vector of length 115, capacity 128 = {...}, cb=...) at /home/apol/devel/tools/cmake/Source/cmFileMonitor.cxx:348
#7 0x0000000000b9bc00 in cmServerProtocol1_0::ProcessConfigure (this=0x118f090, request=...) at /home/apol/devel/tools/cmake/Source/cmServerProtocol.cxx:1003
#8 0x0000000000b98fb3 in cmServerProtocol1_0::Process (this=0x118f090, request=...) at /home/apol/devel/tools/cmake/Source/cmServerProtocol.cxx:434
#9 0x0000000000b8fd25 in cmServer::PopOne (this=0x7fffffffc7a8) at /home/apol/devel/tools/cmake/Source/cmServer.cxx:96
#10 0x0000000000b92184 in cmServer::QueueRequest (this=0x7fffffffc7a8, request="{\n \"cacheArguments\": [],\n \"type\": \"configure\"\n}\n")
at /home/apol/devel/tools/cmake/Source/cmServer.cxx:145
#11 0x0000000000b95229 in cmServerConnection::ReadData (this=0x118eff0, data="]== \"CMake Server\" ==]\n") at /home/apol/devel/tools/cmake/Source/cmServerConnection.cxx:194
#12 0x0000000000b95945 in (anonymous namespace)::on_read (stream=0x118f350, nread=23, buf=0x7fffffff8c88) at /home/apol/devel/tools/cmake/Source/cmServerConnection.cxx:31
#13 0x0000000000d47ebb in uv__read (stream=0x118f350) at /home/apol/devel/tools/cmake/Utilities/cmlibuv/src/unix/stream.c:1197
#14 0x0000000000d44f8c in uv__stream_io (loop=0x11777e0 <default_loop_struct>, w=0x118f3d8, events=1) at /home/apol/devel/tools/cmake/Utilities/cmlibuv/src/unix/stream.c:1264
#15 0x0000000000d4e134 in uv__io_poll (loop=0x11777e0 <default_loop_struct>, timeout=-1) at /home/apol/devel/tools/cmake/Utilities/cmlibuv/src/unix/linux-core.c:382
#16 0x0000000000d3c86f in uv_run (loop=0x11777e0 <default_loop_struct>, mode=UV_RUN_DEFAULT) at /home/apol/devel/tools/cmake/Utilities/cmlibuv/src/unix/core.c:352
#17 0x0000000000b94eb4 in cmServerConnection::ProcessEvents (this=0x118eff0, errorMessage=0x7fffffffc788) at /home/apol/devel/tools/cmake/Source/cmServerConnection.cxx:156
#18 0x0000000000b9235d in cmServer::Serve (this=0x7fffffffc7a8, errorMessage=0x7fffffffc788) at /home/apol/devel/tools/cmake/Source/cmServer.cxx:237
#19 0x000000000077c825 in cmcmd::ExecuteCMakeCommand (args=std::vector of length 4, capacity 4 = {...}) at /home/apol/devel/tools/cmake/Source/cmcmd.cxx:959
#20 0x000000000077283e in do_command (ac=5, av=0x118e970) at /home/apol/devel/tools/cmake/Source/cmakemain.cxx:95
#21 0x0000000000772015 in main (ac=5, av=0x118e970) at /home/apol/devel/tools/cmake/Source/cmakemain.cxx:168
Here's the input I send:
[== "CMake Server" ==[
{
"buildDirectory": "/home/apol/build-devel/frameworks/analitza",
"cookie": "",
"generator": "Ninja",
"major": 1,
"protocolVersion": {
"major": 1
},
"sourceDirectory": "/home/apol/devel/frameworks/analitza",
"type": "handshake"
}
]== "CMake Server" ==]
[== "CMake Server" ==[
{
"cacheArguments": [],
"type": "configure"
}
]== "CMake Server" ==]
Here's the full conversation log:
apol@oliver:~/build-devel/frameworks/analitza$ /home/apol/tmp/cmakeinstallprefix/bin/cmake -E server --debug --experimental
[== "CMake Server" ==[
{"supportedProtocolVersions":[{"isExperimental":true,"major":1,"minor":0}],"type":"hello"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{
"buildDirectory": "/home/apol/build-devel/frameworks/analitza",
"cookie": "",
"generator": "Ninja",
"major": 1,
"protocolVersion": {
"major": 1
},
"sourceDirectory": "/home/apol/devel/frameworks/analitza",
"type": "handshake"
}
]== "CMake Server" ==]
[== "CMake Server" ==[
{
"cacheArguments": [],
"type": "configure"
}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"handshake","type":"reply"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":149,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":224,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":299,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":375,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":449,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":525,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":599,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":674,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":750,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":825,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":899,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","message":"\n-- The following OPTIONAL packages have been found:\n\n * OpenGL , <http://opengl.org>\n Support for 3D graphs in Analitza\n * Eigen3\n\n-- The following REQUIRED packages have been found:\n\n * ECM (required version >= 1.7.0)\n * Qt5Gui (required version >= 5.8.0)\n * Qt5Widgets\n * Qt5Xml\n * Qt5Svg\n * Qt5Test\n * Qt5Network (required version >= 5.8.0)\n * Qt5Qml\n * Qt5Quick\n * Qt5 (required version >= 5.2)\n * Qt5Core\n * Qt5OpenGL (required version >= 5.2)\n","type":"message"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":908,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":916,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":924,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":933,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":941,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":950,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":958,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":966,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":974,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":983,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":991,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","progressCurrent":1000,"progressMaximum":1000,"progressMessage":"Configuring","progressMinimum":0,"type":"progress"}
]== "CMake Server" ==]
[== "CMake Server" ==[
{"cookie":"","inReplyTo":"configure","message":"Configuring done","type":"message"}
]== "CMake Server" ==]
cmake: /home/apol/devel/tools/cmake/Source/cmFileMonitor.cxx:154: cmRealDirectoryWatcher::cmRealDirectoryWatcher(cmVirtualDirectoryWatcher *, const std::string &): Assertion `!ps.empty()' failed.
Aborted (core dumped)