On Fri, 19 Dec 2025, Stephen Borrill wrote:

In case it's a clue, I found that the signal isn't entirely ignored, but it takes 10 minutes to take effect:

builder10# copyparty
[snip]
^Z[1] + Suspended               copyparty
builder10# bg
[1] copyparty &
builder10# date
Thu Dec 18 13:18:10 GMT 2025
builder10# kill -INT %1
builder10# fg
OPYTHAT
15:28:20.051 hsrv                  ok bye
15:28:20.051 tcpsrv                ok bye
15:28:20.051 up2k                  writing snapshot
15:28:20.111 root                  nailed it
builder10#


That's 2hrs + 10 mins, right. Close to the 9001 secs. (2hr. 30 min.) default
timeout here:

https://github.com/9001/copyparty/blob/hovudstraum/copyparty/svchub.py#L1414_

so the signal might still be blocked.

Anyway, there are, at least, 2 things NetBSD is doing differently--compared to
the other Unixes I've tested (Free, OpenBSD & Linux):

1. The blocked signals shown for each thread in a ps(1) output just seems to be
   a copy of the process's blocked signal mask. And _this_ is a _union_ of all
   the LWPs blocked signal masks. This is very misleading.

2. If there is a sigwait() happening and also a signal handler for a signal
   registered, then when it's time to deliver the signals, the sigwait() 
(happening
   in another thread) gets processed first, and the signal is never delivered
   to the registered signal handler.

I'll have to talk to my standards guru about this---but, anyway these 2 might
actually not have anything to do with your copyparty issue. Investigation
is ongoing...

Note the bad pun so that if you type Ctrl-C it is meant to display ^COPYTHAT


Yeah :)

-RVP

Reply via email to