mitsuhiko / mitsuhiko/self-replace

Consider Cleanup Operations

Open
#5 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Rust
Stars
823
Forks
33
PR merge metrics
No merged PRs in 30d

Description

The crate currently does not attempt to clean up temporary files left behind in some circumstances. Situations where files could be left behind:

Unix:

  • self_replace on Unix writes one temporary file next to the executable under a temporary name to support an atomic write. There is no API I'm aware of that would make it possible to avoid this issue.

Windows:

  • In general all operations on windows can lose files, but in most cases those files are left in a temporary folder. Only if the temporary folder is not on the same value as the target exe, then files can be left over. In case a temporary folder cannot be used:
    • self_delete can leave both the current exe dangling (__relocated__) as well as the garbage collection binary (__selfdelete__)
    • self_replace has all the issues of self_delete but top of that the atomic write and rename file (__temp__) can be lost like on unix

For operations outside of a protected folder (self_delete_outside_path) the temporaries can be left in another location than the one of the executable.

All these losses are guarded and will only happen on killing the process or shutting down the machine.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the self_replace, self_delete, and self_delete_outside_path operations, including the relocated, selfdelete, and temp temporary names described in the issue. Compare the Unix and Windows failure cases, then define cleanup behavior for each guarded shutdown or process-termination scenario. Done means the listed temporary files are cleaned up where possible without breaking the existing atomic replacement and deletion operations.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
operating-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.