Skip to content

In-app update fails with "launching Docker Desktop: exit status 1" because open -a runs before LaunchServices unregisters the old instance #838

Open

Description

@filip-grace-icrossing

Description

In-app updates keep failing on my Mac. The last two were 4.91.0 (September 2026) and 4.97.0 to 4.98.0 (2026-11-05). The installer quits the old app, swaps in the new bundle, runs open -a /Applications/Docker.app, gets exit status 1, and rolls back. Afterwards only the "Docker Desktop - Update Failed" dialog is running and the engine is down until I quit and relaunch by hand.

From the unified log, I think the cause is a race in the installer. EnsureDockerFinished checks the process list, but LaunchServices hasn't yet processed the old instance's exit. Since that instance has the same bundle ID (com.docker.docker) and is still registered as running, open -a for the new bundle fails and launchd never spawns anything. The rollback's open -a runs about 150 ms later, after LaunchServices has caught up, and it works.

Reproduce

  1. Run Docker Desktop 4.97.0 on the machine below.
  2. Accept the in-app update to 4.98.0.
  3. The update fails and rolls back.

Both recent update attempts on this machine failed this way. This Mac also runs two third-party EndpointSecurity clients (an EDR agent and an MDM agent). They probably add latency to process exit handling and make the window wider, but the installer should handle that delay either way.

Expected behavior

The installer waits until LaunchServices no longer lists the old com.docker.docker instance before calling open -a, or it retries the launch a few times with a short backoff before rolling back.

Actual behavior

install.log:

[2026-11-05T23:51:43.249943000Z][install.ipc] (082fafab-0) 2657daf2-install C<-S 6e3cf8e3-BackendAPI POST /app/quit (17.42953375s): OK
[2026-11-05T23:51:43.385508000Z][install.processes] no docker processes running
[2026-11-05T23:51:43.385932000Z][install] move app from /Applications/Docker.app (4.97.0 (build 244584)) to /Applications/Docker.app.back
[2026-11-05T23:51:43.386759000Z][install] move app from /Applications/Docker.app.back (4.97.0 (build 244584)) to <HOME>/Library/Application Support/com.docker.install/in_progress/Docker.app
[2026-11-05T23:51:43.387166000Z][install] launching updated Docker Desktop 4.98.0 (build 245422)
[2026-11-05T23:51:43.387258000Z][install] launchDockerDesktop: installPath=/Applications/Docker.app (4.98.0 (build 245422)), args=[/Applications/Docker.app], full command: open -a /Applications/Docker.app
[2026-11-05T23:51:43.458573000Z][install] reverting to previous version of Docker Desktop
...
[2026-11-05T23:51:43.543746000Z][install] launchDockerDesktop: installPath=/Applications/Docker.app (4.97.0 (build 244584)), args=[/Applications/Docker.app], full command: open -a /Applications/Docker.app
[2026-11-05T23:51:43.765808000Z][install][W] failed to launch updated Docker Desktop: launching Docker Desktop: exit status 1

Unified log from the diagnostics bundle, same window (local time, UTC-8):

15:51:43.372392 launchservicesd[397]: (RunningBoardServices) Hit the server for a process handle 1f54665100000904 that resolved to: [app<application.com.docker.docker.642686832.642687269(502)>:2308]
15:51:43.475771 launchservicesd[397]: DEATH: Received pid death for 2341, found application App:"Docker" asn:0x0-60060 pid:2341 ... which was not a LS launched process, so removing it.
15:51:43.475864 launchservicesd[397]: ADDING { "CFBundleExecutablePath"="/Applications/Docker.app/Contents/MacOS/com.docker.backend", "CFBundleIdentifier"="com.docker.docker", "CFBundleShortVersionString"="4.97.0", ... "pid"=2341 } to sDeadApplicationInformation for 2341
15:51:43.478409 launchservicesd[397]: Sending exit status and unregister application, app=App:"Docker" asn:0x0-60060 pid:2341 ..., exitStatus=0
15:51:43.620086 launchd[1]: [gui/502/application.com.docker.docker.642686832.642687269 [4831]:] Successfully spawned com.docker.backend[4831] because launch job demand

The installer saw no Docker processes at 43.385 and ran open -a for 4.98.0 at 43.387. LaunchServices didn't unregister the old backend (pid 2341) until 43.478. No launch for the 4.98.0 bundle appears in the log between those two points. The rollback launch at 43.543 came after the unregister, and launchd spawned the backend at 43.620.

installer.error.json reports launching Docker Desktop: exit status 1 from mac/tools/install/main.go:465, wrapped as recovery UpdateReverted.

Environment

  • Docker Desktop 4.97.0 (build 244584), updating to 4.98.0 (build 245422)
  • macOS 26.7.2 (25G332)
  • Apple M2 Max, 32 GB
  • Diagnostics ID: 5CF3254A-53E0-476A-99EB-25F2D2BAD0CD/20261105235405 (I haven't uploaded it yet)

Workaround

Quit the error dialog and run open -a /Applications/Docker.app. That starts 4.97.0 fine. Installing 4.98.0 from the DMG avoids the in-place swap entirely.

Activity

  1. bsousaa commented on Nov 9, 2026

    @bsousaa
    Collaborator

    We are shipping a tentative fix with 4.99 - it should be available in a few hours. Can you give it a try?

  2. transferred this issue fromdocker/for-macon Nov 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions