Re: openrsync(1): Dangling kqread processes after aborted transfer

Pontus Stenetorp <[email protected]> Thu, 4 Jun 2026 16:13:56 +0900
Newsgroups gmane.os.openbsd.bugs
Message-ID <aiEltGCOspgFqNO9@localhost>
On Thu 04 Jun 2026, Pontus Stenetorp wrote:
> > Synopsis:      openrsync(1) leaves dangling processes after aborted transfer
> > Category:      Userland
> > Environment:
>         System      : OpenBSD 7.8
>         Details     : OpenBSD 7.8 (GENERIC.MP) #54: Sun Oct 12 12:58:11 MDT 2025
> 			 [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
> 
> 	Architecture: OpenBSD.amd64
> 	Machine     : amd64
> > Description:
> 
> 	About two months ago, I transferred two large directories ("foo" and "bar") off the above-mentioned machine to another box using openrsync(1) on both ends of the transfer. I had connection issues at the time, in that the Internet connection would cut out intermittently and I had to re-initiate the connection through a captive portal. In addition, a few times I used a USB WiFi adapter whose driver would end up in an odd state and require unplugging it and plugging it back in again. After a large number of restarts over a number of days over both Ethernet and WiFi from a number of different locations, I managed to get the data transferred.
> 
> 	The other day, I glanced at top and spotted a large number of openrsync(1) processes holding memory and waiting on kqread. On a closer inspection, all these processes dated back to these failed transfers. I am unsure what the correct behaviour should be (a timeout?), but I am pretty sure processes should not hang around waiting for months.
> 
> 	While I have only tested this on 7.8 (my 7.9 upgrades are pending some free time), I do not see any changes in usr.bin/rsync since ~7.7 that should have addressed this.
> 
> > How-To-Repeat:
> 
> 	foo$ mkdir /tmp/openrsynctest
> 	foo$ for i in $(seq 5); do dd if=/dev/random of=/tmp/openrsynctest/$i.dd bs=1M count=128; done
> 
> 	bar$ openrsync --rsync-path=openrsync --delete -arv /tmp/openrsynctest foo:/tmp/

Minor correction, mucked the above line up when transferring from my notes and it should be:

	bar$ openrsync --rsync-path=openrsync --delete -arv foo:/tmp/openrsynctest /tmp/

> 	^C
> 
> > Fix:
> 
> 	None that I can provide at this time.
> 
> Below are the current dangling processes from ps(1). Do tell if I can provide some additional useful information.
> 
> 	USER       PID %CPU %MEM    VSZ     RSS TT  STAT   STARTED       TIME COMMAND
> 	pontus   65430  0.0  0.0   1248     804 ??  Ip     26Feb26    0:00.00 ksh -c openrsync --server --sender --delete -g -l -o -p -D -r -t -v . foo
> 	pontus   31997  0.0  0.3   4996   42608 ??  Ip     26Feb26    0:01.02 openrsync --server --sender --delete -g -l -o -p -D -r -t -v . foo
> 	pontus   28449  0.0  0.0   1248     816 ??  Ip     26Feb26    0:00.00 ksh -c openrsync --server --sender --delete -g -l -o -p -D -r -t -v . bar
> 	pontus   90324  0.0  2.2 321840  348188 ??  Ip     26Feb26   18:55.44 openrsync --server --sender --delete -g -l -o -p -D -r -t -v . bar
> 	pontus   58480  0.0  0.0   1248     788 ??  Ip     27Feb26    0:00.00 ksh -c openrsync --server --sender --delete -g -l -o -p -D -r -t -v . bar
> 	pontus   47979  0.0  0.2   9752   30128 ??  Ip     27Feb26    0:01.18 openrsync --server --sender --delete -g -l -o -p -D -r -t -v . bar
> 	pontus   29425  0.0  0.0   1248     784 ??  Ip     28Feb26    0:00.00 ksh -c openrsync --server --sender --delete -g -l -o -p -D -r -t -v . bar
> 	pontus   77852  0.0  0.6   9748   92364 ??  Ip     28Feb26    0:04.78 openrsync --server --sender --delete -g -l -o -p -D -r -t -v . bar
> 	pontus   73705  0.0  0.0   1248     804 ??  Ip     28Feb26    0:00.00 ksh -c openrsync --server --sender --delete -g -l -o -p -D -r -t -v . bar
> 	pontus   53864  0.0  0.3   9736   44808 ??  Ip     28Feb26    0:07.93 openrsync --server --sender --delete -g -l -o -p -D -r -t -v . bar
> 	pontus    5045  0.0  0.0   1248     800 ??  Ip     28Feb26    0:00.00 ksh -c openrsync --server --sender --delete -g -l -o -p -D -r -t -v . bar
> 	pontus   60731  0.0  0.2   9508   31944 ??  Ip     28Feb26    1:25.05 openrsync --server --sender --delete -g -l -o -p -D -r -t -v . bar
> 	pontus   82239  0.0  0.0   1248     792 ??  Ip      1Mar26    0:00.00 ksh -c openrsync --server --sender --delete -g -l -o -p -D -r -t -v . bar
> 	pontus   69096  0.0  0.4   9480   68844 ??  Ip      1Mar26    0:09.05 openrsync --server --sender --delete -g -l -o -p -D -r -t -v . bar
> 	pontus   69237  0.0  0.0   1248     804 ??  Ip      2Mar26    0:00.00 ksh -c openrsync --server --sender --delete -g -l -o -p -D -r -t -v . foo
> 	pontus   62348  0.0  0.3   6068   45960 ??  Ip      2Mar26   18:49.17 openrsync --server --sender --delete -g -l -o -p -D -r -t -v . foo
> 	pontus   64299  0.0  0.0   1248     800 ??  Ip      8Mar26    0:00.00 ksh -c openrsync --server --sender --delete -g -l -o -p -D -r -t -v . foo
> 	pontus   40278  0.0  1.3   5884  204380 ??  Ip      8Mar26    0:59.18 openrsync --server --sender --delete -g -l -o -p -D -r -t -v . foo
> 	pontus    1344  0.0  0.0   1248     800 ??  Ip      9Mar26    0:00.00 ksh -c openrsync --server --sender --delete -g -l -o -p -D -r -t -v . foo
> 	pontus   15305  0.0  0.1   5880   19516 ??  Ip      9Mar26    1:59.83 openrsync --server --sender --delete -g -l -o -p -D -r -t -v . foo
> 	pontus   44519  0.0  0.0   1248     812 ??  Ip     10Mar26    0:00.00 ksh -c openrsync --server --sender --delete -g -l -o -p -D -r -t -v . foo
> 	pontus    9634  0.0  0.3   5876   41528 ??  Ip     10Mar26    0:56.44 openrsync --server --sender --delete -g -l -o -p -D -r -t -v . foo