2004-09-20 11:17:41

by Kirill Korotaev

[permalink] [raw]
Subject: [Q] why switch_exec_pids() changes thread group leader pid?

Hello,

I've been looking through switch_exec_pids() function and found that it
changes thread group leader PID/TGID. Is it really a good idea to change
pid of the process during it's lifetime? I could understand if it was
happenning in the context of that process, but pid changes everytime a
thread calls do_execve().

As far as I can see, leader doesn't have to do any of detach_pid()'s.
Instead thread should change it's PID/TGID.

Am I wrong?

Kirill


2004-09-20 11:47:01

by William Lee Irwin III

[permalink] [raw]
Subject: Re: [Q] why switch_exec_pids() changes thread group leader pid?

On Mon, Sep 20, 2004 at 03:29:47PM +0400, Kirill Korotaev wrote:
> I've been looking through switch_exec_pids() function and found that it
> changes thread group leader PID/TGID. Is it really a good idea to change
> pid of the process during it's lifetime? I could understand if it was
> happenning in the context of that process, but pid changes everytime a
> thread calls do_execve().
> As far as I can see, leader doesn't have to do any of detach_pid()'s.
> Instead thread should change it's PID/TGID.

It's only done when a thread that is not a thread group leader
execve()'s. This is actually pretty rare and confined to threaded
applications, so it should be almost never called.


-- wli

2004-09-20 11:56:26

by Kirill Korotaev

[permalink] [raw]
Subject: Re: [Q] why switch_exec_pids() changes thread group leader pid?

William Lee Irwin III wrote:
> On Mon, Sep 20, 2004 at 03:29:47PM +0400, Kirill Korotaev wrote:
>
>>I've been looking through switch_exec_pids() function and found that it
>>changes thread group leader PID/TGID. Is it really a good idea to change
>> pid of the process during it's lifetime? I could understand if it was
>>happenning in the context of that process, but pid changes everytime a
>>thread calls do_execve().
>>As far as I can see, leader doesn't have to do any of detach_pid()'s.
>>Instead thread should change it's PID/TGID.
>
>
> It's only done when a thread that is not a thread group leader
> execve()'s. This is actually pretty rare and confined to threaded
> applications, so it should be almost never called.
Heh, rare doesn't mean correct, yeah? :)

Kirill

2004-09-20 12:24:49

by William Lee Irwin III

[permalink] [raw]
Subject: Re: [Q] why switch_exec_pids() changes thread group leader pid?

On Mon, Sep 20, 2004 at 03:29:47PM +0400, Kirill Korotaev wrote:
>>> I've been looking through switch_exec_pids() function and found that it
>>> changes thread group leader PID/TGID. Is it really a good idea to change
>>> pid of the process during it's lifetime? I could understand if it was
>>> happenning in the context of that process, but pid changes everytime a
>>> thread calls do_execve().
>>> As far as I can see, leader doesn't have to do any of detach_pid()'s.
>>> Instead thread should change it's PID/TGID.

William Lee Irwin III wrote:
>> It's only done when a thread that is not a thread group leader
>> execve()'s. This is actually pretty rare and confined to threaded
>> applications, so it should be almost never called.

On Mon, Sep 20, 2004 at 04:07:33PM +0400, Kirill Korotaev wrote:
> Heh, rare doesn't mean correct, yeah? :)

The semantic it implements is that the thread calling execve() kills
all other threads of the process and assumes the identity of the thread
group leader. It should be clear that when the thread were already the
group leader, such as it is for unthreaded processes, one need only
kill the other threads, of which there are none for unthreaded
processes. I'm largely not involved with the implementation of POSIX
threading semantics, so there is some limit regarding the amount of
detail in which I can go on about it without resorting to research.

Ingo Molnar, Roland McGrath, and Ulrich Drepper will likely have more
information if you should care to question so deeply as to ask e.g.
whether this is actually faithful to whatever standard they followed.


-- wli