Skip to content

Stop leaves a symlinked bottle running: serverDirectory reads the link, not the prefix #15

Description

@typester

Bottle.serverDirectory takes the device and inode from FileManager.attributesOfItem(atPath:), which describes a symlink itself, not what it points to. Wine resolves the prefix before it names its server directory, so for a bottle that is a symlink the two disagree. processes() then looks in a directory that does not exist and finds nothing, and takeDown() reports the bottle as down once wineserver -k has killed the server alone.

Seen on 2026-09-29 with ~/Library/Sake/bottles/ex, a symlink to /Volumes/EX/Sake/ex on an external disk:

device-inode server directory
the symlink, which sake reads 1000012-8fa3a84 does not exist
the prefix, which Wine uses 1000016-116a1 /tmp/.wine-502/server-1000016-116a1

Pressing Stop on Steam killed wineserver and nothing else. Nineteen processes stayed up with ppid 1, holding that directory open: steam.exe, seven steamwebhelper.exe, steamservice.exe, two explorer.exe, winemenubuilder.exe and the prefix's services. The library showed Play as though Steam had quit.

rename and remove begin with takeDown() as well, so the same bottle could be renamed or moved to the Trash with its processes still running in it. That has not been tried.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions