Skip to content

Conversation

@wolfv
Copy link
Member

@wolfv wolfv commented Nov 28, 2025

Claude tried to fix our CTRL+C problems by adding a process signaler to deno task shell.
That should prevent:

  • sending the signal twice
  • not sending the signal

Blocked by: denoland/deno_task_shell#160

@baszalmstra
Copy link
Contributor

before merging this I would like to better understand what was wrong with our current implementation.

@wolfv
Copy link
Member Author

wolfv commented Nov 29, 2025

Our current implementation doesn't send CTRL+C when interactive:

        if signo == libc::SIGKILL
            || signo == libc::SIGSTOP
            || (signo == libc::SIGINT && is_interactive)  // Note: is_interactive check here
        {
            continue; // skip, can't listen to these
        }

I think we did that to prevent double-signaling the process on CTRL+C. However, that means we might not send it at all when sending kill to the parent process and it's in interactive state.

UV has a good comment about the problem: https://github.com/astral-sh/uv/blob/5f3d46c2413225aac68c86fa24be97c4c2c193e4/crates/uv/src/child.rs#L12-L24

@wolfv
Copy link
Member Author

wolfv commented Nov 29, 2025

Basically this PR: e9b3d87 broke it again (but fixes double signaling). In reality we need deeper changes to make this work.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants