Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

`Destructor` can unwrap a failed channel send

Open Beginner friendly
#11,397 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 2 days

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
82/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
rust
Domain
backend

Research direction

Start with illumos-utils/src/destructor.rs around lines 144-150 and read the Destructor worker and channel-send path. Check how the Tokio runtime shutdown can close the channel, then run the relevant existing tests or test command for illumos-utils. Done means a failed send no longer unwraps and panics, while the object is handled as described in the issue.

Written by the indexing model from the issue text.

Description

I'm working on #11395, which is intended to resolve #7726 by continually attempting to delete OPTE ports. That uses the the Destructor type which sends an object to a spawned worker task on a channel, where the actual deletions occur. There's a safety note here:

https://github.com/oxidecomputer/omicron/blob/d71011cec505fc2a6e6d5a1699c04ac989be506e/illumos-utils/src/destructor.rs#L144-L150

I don't think that's quite right. The other thing that can shut down the worker is the Tokio runtime itself shutting down, which has no guaranteed order in which it stops its tasks. That means we could be attempting to send on a closed channel here, which would then unwrap and panic. We should handle this possibility, though there's not much we can do except maybe log an error and return the object.

Dominant language
Rust
Stars
610
Forks
104
Avg merge
4d 7h
Merged PRs (30d)
101

Getting set up

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.

More from oxidecomputer/omicron

All issues in oxidecomputer/omicron

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.