This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: what does 'probe process(PID_OR_NAME).clone' mean?


> Thread dying => task_struct->pid != task_struct->tgid
> 
> and
> 
> Process dying => task_struct->pid == task_struct->tgid
> 
> ??

No.

In Linux, process death is just the death of the last thread in the thread
group (process) to die.  task_struct.pid == task_struct.tgid just means
this was the initial thread.  It may have died while others still live.
This test is not part of the equation at all.

> Hmm.. I don't think the above is enough.. you may also have to check if
> task_struct->thread_group is an empty list or not.

That's called thread_group_empty().  It's not true until all other threads
have been passed to release_task().  This both has races if used here, and
does not do what you want in the face of ptrace keeping zombie threads around.


Thanks,
Roland


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]