Xcode Service (Mavericks) errors when run unit tests is enabled

When an Xcode Service bot attempts to perform a build with run unit tests enabled, the build will always fail. When I look at the log file, the same error repeats many times:

xcsbuildd[1966] <Warning>: [XCSBuildOperation.m:106 7368f310 +2126ms] Preflight connection to /var/XCSControl/com.apple.XCSTestUserPreflightService failed; retrying: No such file or directory

Followed by these error messages a few lines later:

xcsbuildd[1966] <Error>: [XCSBuildOperation.m:102 7368f310 +2104ms] Timed out trying to connect to CG Session; giving up after 60 seconds
xcsbuildd[1966] <Error>: [XCSOperation.m:33 7368f310 +0ms] Error Domain=XCSBuildServiceDomain Code=0 "Cancelled integration because headless test environment is required but not available after 60s" UserInfo=0x7fa952571bd0 {NSLocalizedDescription=Cancelled integration because headless test environment is required but not available after 60s}
xcsbuildd[1966] <Debug>: [XCSOperation.m:28 7368f310 +0ms] Cancelling operation: XCSBuildOperation

I've hit a brick wall with this, and can't find anything on it.

Has anyone had this problem and found a fix?


Solution 1:

The errors have some clues! Timed out trying to connect to CG Session, which suggests it's trying to get a Core Graphics context, and Cancelled integration because headless test environment is required but not available after 60s, "headless" meaning no display attached, which is common for build machines. You might try connecting a display to the machine, log into it and see if the error goes away.

Some frameworks/libraries still expect a graphics context which may be dependent on a display (even if it's virtual, like VNC). If the machine doesn't start up with a monitor attached, the window server may not be able to init certain features correctly and you get weird results like this.

I've solved this type of problem in the past but connecting a headless display adaptor to each machine, which fools the graphics card into thinking there's a display attached. You can find these dummy display emulators online for under $20.

Hope that's helpful.