On 12/16/2017 09:43 PM, enh wrote: > I don't think the world is helped by having two different imperfect > heuristics, and I do think it will cause bug reports for us.
We _do_ have two imperfect heuristics. Checking the patch you sent you're checking an exact match for argv[0] before looking at comm, and your basename() logic only kicks in for absolute paths. So a command run at a relative path won't do what ubuntu's does: $ ln -s $(which sleep) sleep $ sleep 999 & [1] 19487 $ ./sleep 1000 & [2] 19490 $ killall ./sleep [1]- Terminated sleep 999 [2]+ Terminated ./sleep 1000 Hmmm. What _is_ it doing? $ $PWD/sleep 998 & [1] 19916 $ sleep 1001 & [2] 19917 $ killall $PWD/sleep [1]- Terminated $PWD/sleep 998 [2]+ Terminated sleep 1001 Yeah, it doesn't look like it's ever taking the $PATH into account? But then why... $ $PWD/sleep 998 & [1] 19945 $ sleep 1001 & [2] 19946 $ $PWD/../sleep 998 & bash: /home/landley/toybox/toy3/../sleep: No such file or directory It's because it's a symlink, isn't it? $ killall sleep [1]- Terminated $PWD/sleep 998 [2]+ Terminated sleep 1001 $ sleep 1001 & [1] 21634 $ $PWD/sleep 998 & [2] 21637 $ killall $PWD/sleep [2]+ Terminated $PWD/sleep 998 Yes it is. It's comparing the inode. $ sleep 1001 & [1] 21738 $ ./sleep 999 & [2] 21739 $ killall sleep [1]- Terminated sleep 1001 [2]+ Terminated ./sleep 999 But ONLY for paths, not for simple names. $ sleep 1001 & ./sleep 999 & [1] 21758 [2] 21759 $ killall ./sleep [2]+ Terminated ./sleep 999 Including relative paths, so the x[0] == '/' test is still wrong. Sigh. You argument that "we can't just do something easily explained but must copy ubuntu's magic edge cases exactly" implies I need to understand ubuntu's magic edge cases, which are nonobvious. Rob _______________________________________________ Toybox mailing list Toybox@lists.landley.net http://lists.landley.net/listinfo.cgi/toybox-landley.net