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