-
Notifications
You must be signed in to change notification settings - Fork 18.5k
Description
At present, LUCI is using temporary loaner Macs for darwin builders. They are getting replaced with macOS VMs. On the new bots, the os/signal TestDetectNohup and TestNohup fail like so:
=== RUN TestDetectNohup
signal_test.go:323: ran test with -check_sighup_ignored under nohup and it failed: expected success.
Error: exit status 127
Output:
nohup: can't detach from console: Inappropriate ioctl for device
--- FAIL: TestDetectNohup (0.02s)
=== RUN TestNohup/nohup-2
=== RUN TestNohup/nohup-1
signal_test.go:503: ran test with -send_uncaught_sighup=1 under nohup and it failed: expected success.
Error: exit status 127
Output:
nohup: can't detach from console: Inappropriate ioctl for device
--- FAIL: TestNohup/nohup-1 (0.01s)
signal_test.go:503: ran test with -send_uncaught_sighup=2 under nohup and it failed: expected success.
Error: exit status 127
Output:
nohup: can't detach from console: Inappropriate ioctl for device
--- FAIL: TestNohup/nohup-2 (0.01s)
--- FAIL: TestNohup (0.02s)
I ran into this before, but did not really understand what was going on.
I believe that this is related to the way the swarming bot is running under launchd on the new bots. This same failure can be reproduced using a similar service:
/Library/LaunchDaemons/test.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.golang.build.test</string>
<key>ProgramArguments</key>
<array>
<string>/tmp/test.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/test.log</string>
<key>StandardErrorPath</key>
<string>/tmp/test.log</string>
</dict>
</plist>
/tmp/test.sh:
#!/bin/bash
/bin/echo foo
nohup /bin/echo bar
$ sudo launchctl load /Library/LaunchDaemons/test.plist
$ sudo cat /tmp/test.log
foo
nohup: can't detach from console: Inappropriate ioctl for device
I believe this is related to the Execution Context of different types of launchd services. My working theory is that nohup wants to move into the "Background" bootstrap namespace, but this type of service does not have a "Background" bootstrap namespace.
I believe this should work OK using either a "pre-login launchd agent" or "per-user launchd agent" (I believe that the existing loaner Macs use the latter), but I have not had much luck reliably converting to one of those service types so far. Since this is a fairly minor problem, I am simply documenting for now to unblock the rest of this migration.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status