{"record":{"id":"9a227e833d833b0f","repo":"hashicorp/nomad","slug":"failed-to-create-exec-object-v","errorCode":null,"errorMessage":"failed to create exec object: %v","messagePattern":"failed to create exec object: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"drivers/docker/driver.go","lineNumber":1962,"sourceCode":"\t\treturn nil, fmt.Errorf(\"command is required but was empty\")\n\t}\n\n\tcreateExecOpts := mclient.ExecCreateOptions{\n\t\tAttachStdin:  true,\n\t\tAttachStdout: true,\n\t\tAttachStderr: true,\n\t\tTTY:          opts.Tty,\n\t\tCmd:          opts.Command,\n\t}\n\n\tclient, err := d.getDockerClient()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\texec, err := client.ExecCreate(d.ctx, h.containerID, createExecOpts)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create exec object: %v\", err)\n\t}\n\n\tgo func() {\n\t\tfor {\n\t\t\tselect {\n\t\t\tcase <-ctx.Done():\n\t\t\t\treturn\n\t\t\tcase <-done:\n\t\t\t\treturn\n\t\t\tcase s, ok := <-opts.ResizeCh:\n\t\t\t\tif !ok {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\t_, _ = client.ExecResize(d.ctx, exec.ID, mclient.ExecResizeOptions{\n\t\t\t\t\tHeight: uint(s.Height),\n\t\t\t\t\tWidth:  uint(s.Width),\n\t\t\t\t})\n\t\t\t}","sourceCodeStart":1944,"sourceCodeEnd":1980,"githubUrl":"https://github.com/hashicorp/nomad/blob/482b49bf1aec006f089bcfc7e632d8f6ac303e5e/drivers/docker/driver.go#L1944-L1980","documentation":"This error wraps a failure from the Docker API `ExecCreate` call, which registers an exec instance inside the running container and returns an exec ID. If the daemon rejects creation (bad container state, unsupported API, invalid options), the driver wraps the error. No exec session has started at this point.","triggerScenarios":"driver.ExecTaskStreaming proceeds past command validation but client.ExecCreate(ctx, h.containerID, createExecOpts) errors — container stopped/paused, exec unsupported in the container, or API version mismatch.","commonSituations":"Container already exited; `docker exec` disabled in the container's config; exec capability absent in minimal images (rare); dockerd restart mid-call; mismatched Docker client/daemon API versions.","solutions":["Verify the container is running: `docker ps | grep <containerID>`; re-run the task if it exited.","Test manually: `docker exec <containerID> <command>` to reproduce outside Nomad.","Check Docker client and daemon API version compatibility.","Inspect dockerd logs (`journalctl -u docker`) for the underlying create-exec failure."],"exampleFix":"// before\nexec, err := client.ExecCreate(d.ctx, h.containerID, createExecOpts)\nif err != nil {\n    return nil, fmt.Errorf(\"failed to create exec object: %v\", err)\n}\n// after\nexec, err := client.ExecCreate(d.ctx, h.containerID, createExecOpts)\nif err != nil {\n    if errdefs.IsNotFound(err) {\n        return nil, fmt.Errorf(\"container %q not running; cannot exec: %w\", h.containerID, err)\n    }\n    return nil, fmt.Errorf(\"failed to create exec object: %v\", err)\n}","handlingStrategy":"try-catch","validationCode":"// ensure container is running before exec\nstate, err := dockerClient.ContainerInspect(ctx, containerID, mclient.ContainerInspectOptions{})\nif err != nil || !state.Container.State.Running { return errors.New(\"container not running\") }","typeGuard":"func isExecCreateFailure(err error) bool { return strings.Contains(err.Error(), \"failed to create exec object\") }","tryCatchPattern":"out, err := driver.ExecTaskStreaming(ctx, taskID, opts)\nif err != nil {\n    if isExecCreateFailure(err) {\n        // container likely stopped; verify and restart task before retrying\n    }\n    return err\n}","preventionTips":["Check container Running state before invoking exec.","Keep Docker client/daemon API versions compatible.","Watch for dockerd restarts; re-run tasks afterward."],"tags":["docker","exec","dockerd"],"backgroundTag":"exec-create-failed","analyzedSha":"482b49bf1aec006f089bcfc7e632d8f6ac303e5e","analyzedAt":"2026-09-04T07:54:14.808Z","contentChangedAt":"2026-09-04T07:54:14.808Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}