On Fri, 29 Oct 2021 19:02:15 +0800
Li Feng <fengli(a)smartx.com> wrote:
[...]
clone(child_stack=NULL,
flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLDstrace: Process
172939 attached
, child_tidptr=0x7f7b89b1da10) = 172939
[pid 172921] exit_group(0 <unfinished ...>
[pid 172939] set_robust_list(0x7f7b89b1da20, 24 <unfinished ...>
[pid 172921] <... exit_group resumed>) = ?
[pid 172921] +++ exited with 0 +++
<... set_robust_list resumed>) = ?
+++ killed by SIGSYS (core dumped) +++
```
Which is the bad syscall?
Oh, it's set_robust_list(), it's normal that exit_group() doesn't
return. That new usage probably comes from:
https://sourceware.org/git/?p=glibc.git;a=commit;h=9a7565403758f65c07fe3705…
and that code path is not really needed for passt, so I would have a
quick try at avoiding it rather than adding a syscall, perhaps with a
small replacement of daemon() using clone() instead of fork().
I forgot to follow up here: in the end I pushed a change that, among
other calls, allows set_robust_list() unconditionally: