set task's name when fork
When fork a child process, the name filed of TaskContext is not set. It results in that when we cat /proc/{pid}/status, the name filed is null. Like this: Name: State: S (sleeping) Tgid: 28 Pid: 28 PPid: 26 TracerPid: 0 FDSize: 8 VmSize: 89712 kB VmRSS: 6648 kB Threads: 1 CapInh: 00000000a93d35fb CapPrm: 0000000000000000 CapEff: 0000000000000000 CapBnd: 00000000a93d35fb Seccomp: 0 Change-Id: I5d469098c37cedd19da16b7ffab2e546a28a321e PiperOrigin-RevId: 240893304
This commit is contained in:
parent
99195b0e16
commit
31c2236e97
|
@ -74,6 +74,7 @@ func (tc *TaskContext) release() {
|
|||
// of the original's.
|
||||
func (tc *TaskContext) Fork(ctx context.Context, k *Kernel, shareAddressSpace bool) (*TaskContext, error) {
|
||||
newTC := &TaskContext{
|
||||
Name: tc.Name,
|
||||
Arch: tc.Arch.Fork(),
|
||||
st: tc.st,
|
||||
}
|
||||
|
|
|
@ -52,6 +52,30 @@ TEST(PrctlTest, SetNameLongName) {
|
|||
ASSERT_EQ(long_name.substr(0, truncated_length), std::string(truncated_name));
|
||||
}
|
||||
|
||||
TEST(PrctlTest, ChildProcessName) {
|
||||
constexpr size_t kMaxNameLength = 15;
|
||||
|
||||
char parent_name[kMaxNameLength + 1] = {};
|
||||
memset(parent_name, 'a', kMaxNameLength);
|
||||
|
||||
ASSERT_THAT(prctl(PR_SET_NAME, parent_name), SyscallSucceeds());
|
||||
|
||||
pid_t child_pid = fork();
|
||||
TEST_PCHECK(child_pid >= 0);
|
||||
if (child_pid == 0) {
|
||||
char child_name[kMaxNameLength + 1] = {};
|
||||
TEST_PCHECK(prctl(PR_GET_NAME, child_name) >= 0);
|
||||
TEST_CHECK(memcmp(parent_name, child_name, sizeof(parent_name)) == 0);
|
||||
_exit(0);
|
||||
}
|
||||
|
||||
int status;
|
||||
ASSERT_THAT(waitpid(child_pid, &status, 0),
|
||||
SyscallSucceedsWithValue(child_pid));
|
||||
EXPECT_TRUE(WIFEXITED(status) && WEXITSTATUS(status) == 0)
|
||||
<< "status =" << status;
|
||||
}
|
||||
|
||||
// Offset added to exit code from test child to distinguish from other abnormal
|
||||
// exits.
|
||||
constexpr int kPrctlNoNewPrivsTestChildExitBase = 100;
|
||||
|
|
Loading…
Reference in New Issue