From 95d99155124734bfa8c29fbd574f3a784660ed05 Mon Sep 17 00:00:00 2001 From: Maksim An Date: Wed, 10 Jun 2026 17:33:15 -0700 Subject: [PATCH] Mark gcs-sidecar as a critical process Use NtSetInformationProcess with ProcessBreakOnTermination to mark the gcs-sidecar process as critical. If gcs-sidecar exits unexpectedly, the UVM will bugcheck, preventing it from running in an inconsistent state. Signed-off-by: Maksim An Co-authored-by: Copilot --- cmd/gcs-sidecar/main.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/cmd/gcs-sidecar/main.go b/cmd/gcs-sidecar/main.go index 736ac8ed21..5638a6aadb 100644 --- a/cmd/gcs-sidecar/main.go +++ b/cmd/gcs-sidecar/main.go @@ -10,6 +10,7 @@ import ( "net" "os" "time" + "unsafe" "github.com/Microsoft/go-winio" "github.com/Microsoft/hcsshim/internal/gcs/prot" @@ -184,6 +185,19 @@ func main() { } } + // Mark gcs-sidecar as a critical process. If it exits, the UVM will bugcheck. + breakOnTermination := uint32(1) + if err := windows.NtSetInformationProcess( + windows.CurrentProcess(), + windows.ProcessBreakOnTermination, + unsafe.Pointer(&breakOnTermination), + uint32(unsafe.Sizeof(breakOnTermination)), + ); err != nil { + logrus.WithError(err).Error("failed to set gcs-sidecar as critical process") + return + } + logrus.Info("gcs-sidecar marked as critical process") + logrus.Println("Initializing VSMB redirector!!!") var vsmbError error vsmbKeepAliveHandle, vsmbError = sidecar.VsmbMain()