diff options
-rw-r--r-- | runsc/boot/loader.go | 11 |
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() |