Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 May 2010 09:43:12 -0500
From:      Dan McNulty <dkmcnulty@gmail.com>
To:        Alfred Perlstein <alfred@freebsd.org>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: Efficient way to determine when a child process forks or calls  exec
Message-ID:  <AANLkTil8o-EvZlvDLYpnkyvTE2gr4mcRSXRGVsFpQO6m@mail.gmail.com>
In-Reply-To: <20100519215139.GZ6175@elvis.mu.org>
References:  <AANLkTinO0hqywG7sCWJYXTsayOtad2qnP1SPDn6NzCYm@mail.gmail.com> <20100518074054.GE6175@elvis.mu.org> <AANLkTinjuqRKqwqDKBTyDiw7WmkE1-P5u8vTz7EBvqSJ@mail.gmail.com> <20100519215139.GZ6175@elvis.mu.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, May 19, 2010 at 4:51 PM, Alfred Perlstein <alfred@freebsd.org> wrote:
> * Dan McNulty <dkmcnulty@gmail.com> [100519 07:13] wrote:
>> Thanks for all the great suggestions!
>>
>> It looks like the kevent system call is the closest to what I need.
>> However, I didn't mention this, but I would like the process being
>> traced to be stopped on entrance to fork, exec, etc. This would be
>> similar to Linux's ptrace interface which sends a SIGTRAP to the
>> traced process on exec, fork, etc. From what I could tell so far,
>> kevent doesn't provide this functionality.
>>
>> Am I missing something? Is there a way to get kevent to stop the
>> process when events occur?
>
> Not that I know of off the top of my head.
>
> Although if you want to contrib the code I can help get it in. :)
>
> -Alfred

Unfortunately, writing a patch for the FreeBSD kernel may be beyond
the scope of my current work.

Although I wouldn't mind working on it in my spare time outside of my
job. Maybe in some free time this summer. I think the ideal fix for my
problem would be to implement a mechanism similar to the Linux ptrace
interface that sends a SIGTRAP for events such as fork, exec, thread
create, etc. Maybe I will poke around in the FreeBSD kernel source and
see what I can figure out.

Thanks for the help!
-Dan

>>
>> Thanks again for your help,
>> -Dan
>>
>> On Tue, May 18, 2010 at 2:40 AM, Alfred Perlstein <alfred@freebsd.org> wrote:
>> > * Dan McNulty <dkmcnulty@gmail.com> [100517 08:02] wrote:
>> >> Hi all,
>> >>
>> >> I have been experimenting with ptrace to determine when a child
>> >> process forks or calls exec. Particularly, I have explored tracing
>> >> every system call entry and exit similar to what the truss utility
>> >> does, and for my case, the performance impact of tracing every system
>> >> call is too great.
>> >>
>> >> Is there a more efficient way than tracing every system call entry and
>> >> exit to determine when a child process forks, calls exec, or creates a
>> >> new LWP?
>> >>
>> >> Thanks a lot for your help!
>> >
>> > kevent has some hooks, have you looked at that?
>> >
>> > --
>> > - Alfred Perlstein
>> > .- AMA, VMOA #5191, 03 vmax, 92 gs500, 85 ch250, 07 zx10
>> > .- FreeBSD committer
>> >
>
> --
> - Alfred Perlstein
> .- AMA, VMOA #5191, 03 vmax, 92 gs500, 85 ch250, 07 zx10
> .- FreeBSD committer
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTil8o-EvZlvDLYpnkyvTE2gr4mcRSXRGVsFpQO6m>