code: func (m *kubeGenericRuntimeManager) killPodWithSyncResult(pod *v1.Pod, runningPod kubecontainer.Pod, gracePeriodOverride *int64) (result kubecontainer.PodSyncResult) {
  	killContainerResults := m.killContainersWithSyncResult(pod, runningPod, gracePeriodOverride)
  	for _, containerResult := range killContainerResults {
  		result.AddSyncResult(containerResult)
  	}
  
  	// stop sandbox, the sandbox will be removed in GarbageCollect
  	killSandboxResult := kubecontainer.NewSyncResult(kubecontainer.KillPodSandbox, runningPod.ID)
  	result.AddSyncResult(killSandboxResult)
  	// Stop all sandboxes belongs to same pod
  	for _, podSandbox := range runningPod.Sandboxes {
  		if err := m.runtimeService.StopPodSandbox(podSandbox.ID.ID); err != nil {
  			killSandboxResult.Fail(kubecontainer.ErrKillPodSandbox, err.Error())
  			klog.Errorf("Failed to stop sandbox %q", podSandbox.ID)
  		}
  	}
  
  	return
  }
docs: // killPodWithSyncResult kills a runningPod and returns SyncResult.
  // Note: The pod passed in could be *nil* when kubelet restarted.