#1110137 netplugd is failing to perform ifup/down notifications as link state changes

Package:
netplug
Source:
netplug
Description:
network link monitor daemon
Submitter:
Hoyer, David
Date:
2025-08-28 00:09:01 UTC
Severity:
normal
#1110137#5
Date:
2025-07-30 14:04:11 UTC
From:
To:
I have found that netplugd is reporting an error in the journal indicating it is killing a process when a link state transition happens.

Example journal message:
Jul 28 19:36:31 eos-a netplugd[2405]: /etc/netplug/netplug eth0 in -> pid 2405
Jul 28 19:36:31 eos-a netplugd[2404]: Unexpected child 1106527440 exited with status 0

And as a result it appears that the scripts in /etc/network/if-* are not getting called so our scripts which give our application link state changes are not being called.

I backed out the patch 70no-executable-stack.patch and rebuilt that and then everything started working as I was expecting.

#1110137#10
Date:
2025-08-27 23:34:11 UTC
From:
To:
I worked out the bug in the 70no-executable-stack.patch.   I realize this is not in the correct form for a Debian patch.  I am hoping the maintainers get this rolled into a Trixie fix for this package.

diff --git a/if_info.c b/if_info.c
index fbf6ffd..d2c8f02 100644
--- a/if_info.c
+++ b/if_info.c
@@ -317,7 +317,7 @@ void ifsm_scriptdone(pid_t pid, int exitstatus)

     int find_pid(struct if_info *i, void *arg) {
         pid_t pid = *(pid_t *)(((void **)arg)[0]);
-        struct if_info **info = (struct if_info **)(((void **)arg)[0]);
+        struct if_info **info = (struct if_info **)(((void **)arg)[1]);

         if (i->worker == pid) {
             *info = i;

#1110137#15
Date:
2025-08-27 23:22:08 UTC
From:
To:
I worked out the bug in the 70no-executable-stack.patch.   I realize this is not in the correct form for a Debian patch.  I am hoping the maintainers get this rolled into a Trixie fix for this package.

diff --git a/if_info.c b/if_info.c
index fbf6ffd..d2c8f02 100644
--- a/if_info.c
+++ b/if_info.c
@@ -317,7 +317,7 @@ void ifsm_scriptdone(pid_t pid, int exitstatus)

     int find_pid(struct if_info *i, void *arg) {
         pid_t pid = *(pid_t *)(((void **)arg)[0]);
-        struct if_info **info = (struct if_info **)(((void **)arg)[0]);
+        struct if_info **info = (struct if_info **)(((void **)arg)[1]);

         if (i->worker == pid) {
             *info = i;