Ping?
On Thu, Dec 18, 2014 at 11:24 AM, Filipe Brandenburger <[email protected]> wrote: > In test_raw_clone, make sure the cloned thread calls _exit() and in the parent > thread call waitpid(..., __WCLONE) to wait for the child thread to terminate, > otherwise there is a race condition where the child thread will log to the > console after the test process has already exited and the assertion from the > child thread might not be enforced. > > The absence of this patch might also create problems for other tests that > would > be added after this one, since potentially both parent and child would run > those tests as the child would continue running. > > Tested by confirming that the logs from the child are printed before the test > terminates and that a false assertion in the child aborts the test with a core > dump. > --- > src/test/test-util.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/src/test/test-util.c b/src/test/test-util.c > index ec04744..997e3df 100644 > --- a/src/test/test-util.c > +++ b/src/test/test-util.c > @@ -1325,10 +1325,15 @@ static void test_raw_clone(void) { > pid2 = raw_getpid(); > log_info("raw_clone: "PID_FMT" getpid()→"PID_FMT" > raw_getpid()→"PID_FMT, > pid, getpid(), pid2); > - if (pid == 0) > + if (pid == 0) { > assert_se(pid2 != parent); > - else > + _exit(EXIT_SUCCESS); > + } else { > + int status; > assert_se(pid2 == parent); > + > + waitpid(pid, &status, __WCLONE); > + } > } > > int main(int argc, char *argv[]) { > -- > 1.8.3.1 > _______________________________________________ systemd-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/systemd-devel
