Running "udhcpc -n -b" causes udhcpc to go into background and then exit after some timeout unless a lease is obtained. It's probably arguable what's the proper behavior is, but I expect "-b" switch to override "-n" switch. A particular use-case is managing udhcpc from ifupdown. Currently, ifupdown passes "-n" to udhcpc by default (unless compiled with other options), and there is no way to override this without recompiling busybox. It looks like, the code actually tries to favor "-b" over "-n", but doesn't clear "-n" flag while clearing "-b" before backgrounding.
Created attachment 7951 [details] Minimal .config
Created attachment 7956 [details] Proposed fix
A simple reproducer: ip link add type veth ip link set veth0 up busybox udhcpc -n -i veth0 -b -S
fixed in git: commit 87e216294af9eec39c0c1d553555f8a98c15db38 Author: Andrey Mazo <ahippo@yandex.com> Date: Fri Feb 22 16:46:19 2019 -0500 udhcpc: don't exit after backgrounding on -n -b