summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-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()