You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Test failure: System.Diagnostics.Tests.ProcessTests/TestCheckChildProcessUserAndGroupIds #28922
The list that contains 998 is determined by calling id -G <username>.
The child process will launch successfully when the actual groups is a subset of the requested groups. The test is more strict and requires an exact match (checkGroupsExact is true on Linux):
the mysterious 998 is 'docker'. So far I was not able to reproduce the failure using repro machine. At last, the groups and OS should be identical to official machines. The test output is sorted but in 'id -G' output the missing group is last.
One thing that may be causing this is the helixbot user was added to the docker group, but the process that is launching the tests isn't aware of this. This may happen if that process was already running before the helixbot user was added to the docker group. Is this something that could occur in the CI environment?
I did ~ 2000 runs of whole test set on repro machine and I did not get single failure.
I don't know if helixbot user is part of base image @MattGal but if not that would be place to look.
To generalize on @tmds comment, adding user to group will not be visible unless you login again. (or re-parse /etc/groups
furt@net-dale:/tmp$ ./test
gr = 6
furt@net-dale:/tmp$ sudo usermod -a -G foo furt
furt@net-dale:/tmp$ ./test
gr = 6
<login/logout>
furt@net-dale:/tmp$ ./test
gr = 7
test simply primps number of groups user is in printf("gr = %d\n",getgroups(0, NULL));
I'm trying to chat with @wfurt offline but for the queue mentioned by @stephentoub while docker is on the machine in question, I see no evidence that the work item was attempted to be run inside a docker container. Machines in Ubuntu.1604.Amd64.Open are just plain Azure D2_V3 vms. Still looking...
I was able to reproduce the failure using our CI in #46138
I've verified that it's caused by the difference in what id -G (what we use for obtaining the expected value) and getgroups (what we use for getting the actual value) return even without starting any new processes:
Activity
wfurt commentedon Mar 11, 2019
cc: @tmds It seems like 998 is missing for some reason. That looks different from the duplicates.
stephentoub commentedon Mar 11, 2019
I believe this is the first time we've seen it fail again since I added the extra diagnostics to output the full contents of both sets.
stephentoub commentedon Mar 11, 2019
cc: @danmosemsft
danmoseley commentedon Mar 11, 2019
In a build the previous day, identical result:
https://mc.dot.net/#/product/netcore/30/source/official~2Fdotnet~2Fcorefx~2Frefs~2Fheads~2Fmaster/type/test~2Ffunctional~2Fcli~2F/build/20190309.4/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessTests~2FTestCheckChildProcessUserAndGroupIds
So what is the mysterious 998
wfurt commentedon Mar 11, 2019
I can get repro machine tomorrow and can check if I can make it fail again.
tmds commentedon Mar 11, 2019
Thanks @wfurt .
The list that contains
998is determined by callingid -G <username>.The child process will launch successfully when the actual groups is a subset of the requested groups. The test is more strict and requires an exact match (
checkGroupsExactistrueon Linux):https://github.com/dotnet/corefx/blob/fd0911e27f6c6f958f213bac8b3fb99b7700167b/src/System.Diagnostics.Process/tests/ProcessTests.Unix.cs#L513-L520
stephentoub commentedon Mar 11, 2019
Again here:
https://mc.dot.net/#/user/dotnet-bot/pr~2Fdotnet~2Fcorefx~2Frefs~2Fpull~2F35946~2Fmerge/test~2Ffunctional~2Fcli~2F/20190311.6/workItem/System.Diagnostics.Process.Tests/analysis/xunit/System.Diagnostics.Tests.ProcessTests~2FTestCheckChildProcessUserAndGroupIds
wfurt commentedon Mar 11, 2019
the mysterious 998 is 'docker'. So far I was not able to reproduce the failure using repro machine. At last, the groups and OS should be identical to official machines. The test output is sorted but in 'id -G' output the missing group is last.
tmds commentedon Mar 11, 2019
I'm also part of a docker group (981 on my machine).
What does
getgroupsreturn when youstracethegroupscommand?wfurt commentedon Mar 11, 2019
I did 100+ rounds of the test and I did not see any failure so far.
tmds commentedon Mar 11, 2019
One thing that may be causing this is the helixbot user was added to the docker group, but the process that is launching the tests isn't aware of this. This may happen if that process was already running before the helixbot user was added to the docker group. Is this something that could occur in the CI environment?
danmoseley commentedon Mar 11, 2019
@MattGal do you know the answer to @tmds question here?
MattGal commentedon Mar 11, 2019
I don't think that'd be the case, but I will investigate after 4 PM or so PST.
wfurt commentedon Mar 12, 2019
I did ~ 2000 runs of whole test set on repro machine and I did not get single failure.
I don't know if helixbot user is part of base image @MattGal but if not that would be place to look.
To generalize on @tmds comment, adding user to group will not be visible unless you login again. (or re-parse /etc/groups
test simply primps number of groups user is in
printf("gr = %d\n",getgroups(0, NULL));MattGal commentedon Mar 12, 2019
I'm trying to chat with @wfurt offline but for the queue mentioned by @stephentoub while docker is on the machine in question, I see no evidence that the work item was attempted to be run inside a docker container. Machines in Ubuntu.1604.Amd64.Open are just plain Azure D2_V3 vms. Still looking...
6 remaining items
wtgodbe commentedon Jun 25, 2019
The test is actually disabled: dotnet/corefx#35949. May be the same issue as https://github.com/dotnet/corefx/issues/38833
adamsitnik commentedon Dec 18, 2020
I was able to reproduce the failure using our CI in #46138
I've verified that it's caused by the difference in what
id -G(what we use for obtaining the expected value) andgetgroups(what we use for getting the actual value) return even without starting any new processes:eba057f
https://helixre8s23ayyeko0k025g8.blob.core.windows.net/dotnet-runtime-refs-pull-46138-merge-21aa167a19b94858a8/System.Diagnostics.Process.Tests/console.aa0d1c27.log?sv=2019-07-07&se=2021-01-07T10%3A48%3A30Z&sr=c&sp=rl&sig=yOZ94Wil3yQaONO%2FVo4b293jCZUZ4jwNFtdVd7K33pY%3D