summaryrefslogtreecommitdiffhomepage
path: root/runsc/boot/loader.go
diff options
context:
space:
mode:
authorAdin Scannell <ascannell@google.com>2021-02-12 17:11:14 -0800
committergVisor bot <gvisor-bot@google.com>2021-02-12 17:13:44 -0800
commit3ef012944d32313cee4df244585f48e8d4fd8e9e (patch)
tree8c406fdab9db7ef5305d384ef64eff4ff6fdd581 /runsc/boot/loader.go
parent33c617cae3d6e5261e67090faf52c4101f5b7713 (diff)
Stop the control server only once.
Operations are now shut down automatically by the main Stop command, and it is not necessary to call Stop during Destroy. Fixes #5454 PiperOrigin-RevId: 357295930
Diffstat (limited to 'runsc/boot/loader.go')
-rw-r--r--runsc/boot/loader.go11
1 files changed, 5 insertions, 6 deletions
diff --git a/runsc/boot/loader.go b/runsc/boot/loader.go
index 77a7c530b..a02eb2ec5 100644
--- a/runsc/boot/loader.go
+++ b/runsc/boot/loader.go
@@ -477,14 +477,16 @@ func createProcessArgs(id string, spec *specs.Spec, creds *auth.Credentials, k *
// been closed. For that reason, this should NOT be called in a defer, because
// a panic in a control server rpc would then hang forever.
func (l *Loader) Destroy() {
- if l.ctrl != nil {
- l.ctrl.srv.Stop()
- }
if l.stopSignalForwarding != nil {
l.stopSignalForwarding()
}
l.watchdog.Stop()
+ // Stop the control server. This will indirectly stop any
+ // long-running control operations that are in flight, e.g.
+ // profiling operations.
+ l.ctrl.stop()
+
// Release all kernel resources. This is only safe after we can no longer
// save/restore.
l.k.Release()
@@ -1055,9 +1057,6 @@ func (l *Loader) WaitExit() kernel.ExitStatus {
// Wait for container.
l.k.WaitExited()
- // Stop the control server.
- l.ctrl.stop()
-
// Check all references.
refs.OnExit()