`husarnet-daemon` increases the process tree over time when calling `hook.whitelist_changed.d` hooks

Hi Husarnet Team.

After using husarnet-dds singleshot ( Introducing Husarnet-DDS | Husarnet ) to update the DDS XML files, I just found that the process tree increases over time.

My /var/lib/husarnet/hook.whitelist_changed.d/dds-update.sh file is something like this:

#!/bin/bash 
 ((echo -e "
<$(date +%F\ %T)> 🔵️"; timeout 10 husarnet-dds singleshot 2>&1; echo "</$(date +%F\ %T)>") | tee --append /tmp/dds-update.log)&

And the logs are like this:

<2025-11-04 13:49:19> 🔵️
Host OS: linux
Temporary directory: /var/tmp/husarnet-dds
CYCLONEDDS_URI: file:///var/lib/theconstruct.rrl/cyclonedds_husarnet.xml
Cyclone DDS config saved here: "/var/lib/theconstruct.rrl/cyclonedds_husarnet.xml"
FASTRTPS_DEFAULT_PROFILES_FILE: /var/lib/theconstruct.rrl/fastdds_husarnet.xml
Fast DDS config saved here: "/var/lib/theconstruct.rrl/fastdds_husarnet.xml"
</2025-11-04 13:49:19>

The tree is like this:

USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         198  0.0  0.0   5140  4052 pts/0    Ss   13:32   0:00 bash
root        1846  0.0  0.0   7060  2960 pts/0    R+   13:51   0:00  \_ ps faux
root           1  0.0  0.0   4492  3144 ?        Ss   13:31   0:00 bash husarnet-docker
root          21  0.0  0.0 175140  1780 ?        Sl   13:31   0:00 husarnet-daemon
root          22  0.0  0.0   2724   956 ?        S    13:31   0:00  \_ husarnet-daemon
root          40  0.0  0.0   2724   720 ?        S    13:31   0:00      \_ husarnet-daemon
root          89  0.0  0.0   2724  1024 ?        S    13:31   0:00          \_ husarnet-daemon
root         108  0.0  0.0   2728  1024 ?        S    13:31   0:00              \_ husarnet-daemon
root         141  0.0  0.0   2728   984 ?        S    13:31   0:00                  \_ husarnet-daemon
root         291  0.0  0.0   2736  1028 ?        S    13:33   0:00                      \_ husarnet-daemon
root         632  0.0  0.0   2752  1004 ?        S    13:37   0:00                          \_ husarnet-daemon
root        1433  0.0  0.0   2752  1012 ?        S    13:47   0:00                              \_ husarnet-daemon

The more I connect and disconnect (from a rosject), the more the process tree increases.

If I manually run /var/lib/husarnet/hook.whitelist_changed.d/dds-update.sh, the process tree does NOT increase.

Given that the process tree does NOT increase when manually calling the script, I think this may be fixed inside husarnet-dds or husarnet-daemon.

The version I’m using:

# husarnet-dds | v1.3.6

and

husarnet-daemon --version
2.0.180

We use a script called husarnet-docker to launch the first husarnet-daemon like this:

...
if [ -z "${HUSARNET_DEBUG:-}" ]; then
    husarnet-daemon >/dev/null 2>&1
else
    husarnet-daemon
fi

UPDATE (2025-11-05)

I modified /var/lib/husarnet/hook.whitelist_changed.d/dds-update.sh to simply do something like echo something >> somefile.txt, yet the process tree increases; therefore, the problem is not with husarnet-dds but with husarnet-daemonwhen calling the hook.