You’re saying that the uprobe installation will replace the semaphore value 
with something non-zero? Is that guaranteed? If using “int 3” then probably yes 
but if using an optimized jump? And will it work on non-x86? 

> On Jan 17, 2018, at 17:05, Alexei Starovoitov <[email protected]> 
> wrote:
> 
> I think it should be possible to abuse uprobe kernel logic to flip the
> semaphore value.
> Instead of writing into /proc/pid/mem we can uprobe on that exact location.
> Though it's not text, but data section. It may work ?
> 
> On Wed, Jan 17, 2018 at 8:57 AM, Sasha Goldshtein via iovisor-dev
> <[email protected]> wrote:
>> Not sure I understand your proposal re the kernel setting the semaphore.
>> 
>> Anyway, yes, the semaphore concept and implementation goes back to SystemTap 
>> SDT which is basically DTrace probes.
>> 
>>> On Jan 17, 2018, at 16:55, Kiran T <[email protected]> wrote:
>>> 
>>> Is this because this is tied to DTRACE abi?  Perhaps another elf note
>>> or comment could be implemented, so this semaphore is set on binary
>>> load itself by the kernel?  Again thinking out loud :)
>>> 
>>> Thanks,
>>> Kiran
>>> 
>>>> On Tue, Jan 16, 2018 at 8:51 PM, Sasha Goldshtein <[email protected]> 
>>>> wrote:
>>>> Enabling semaphore-enabled probes system-wide requires poking
>>>> the semaphore’s memory in each process, I’m afraid. We can come
>>>> up with some implementation that would hook new process creation
>>>> and try to enable the semaphore when the relevant library gets loaded,
>>>> but it sounds a bit fragile. It could be interesting to explore
>>>> implementation alternatives for this. To hermetically enable the probe
>>>> we would need to synchronously block loading the provider’s library
>>>> into the target until we can modify the semaphore. This isn’t something
>>>> a BPF program can do, so it would require some external mechanism.
>>>> 
>>>>> On Jan 17, 2018, at 03:44, Kiran T <[email protected]> wrote:
>>>>> 
>>>>> Thanks Sasha, Yonghong.
>>>>> Looks like both php and python use semaphores.  Is it fundamentally
>>>>> not possible to enable this systemwide or is it a feature which hasn't
>>>>> been implemented?
>>>>> Maybe we get pids of the process as they hit another probe and then
>>>>> get the semaphore addresses and enable them?
>>>>> Or is there a way to start the processes with the semaphore enabled --
>>>>> a elf indicator or something?  Just thinking out loud.
>>>>> 
>>>>> Thanks,
>>>>> Kiran
>>>>> 
>>>>>> On Mon, Jan 15, 2018 at 10:30 PM, Sasha Goldshtein <[email protected]> 
>>>>>> wrote:
>>>>>> Please note that some USDT probes have an associated "semaphore",
>>>>>> which is really just a memory location that the probed code checks
>>>>>> before actually invoking the probe. You cannot enable USDT probes that
>>>>>> have a semaphore system-wide, without a process ID, because the
>>>>>> semaphore location has to be poked in each target process.
>>>>>> 
>>>>>> To see if your probes have an associated semaphore, just run tplist with
>>>>>> -v -v and it will print out the semaphore address for each probe. If it's
>>>>>> 0, you're good to do system-wide tracing.
>>>>>> 
>>>>>> Sasha
>>>>>> 
>>>>>> 
>>>>>> On Tue, Jan 16, 2018 at 8:08 AM Y Song via iovisor-dev
>>>>>> <[email protected]> wrote:
>>>>>>> 
>>>>>>> Kiran,
>>>>>>> 
>>>>>>> Yes, tracing through USDT without PID should work.
>>>>>>> You can just remove "-p" parameter and give a try.
>>>>>>> 
>>>>>>> Please try latest bcc as it fixed a few bugs.
>>>>>>> Let us know if you hit any issues.
>>>>>>> 
>>>>>>> Yonghong
>>>>>>> 
>>>>>>> 
>>>>>>> On Mon, Jan 15, 2018 at 5:11 PM, Kiran T via iovisor-dev
>>>>>>> <[email protected]> wrote:
>>>>>>>> I meant to say
>>>>>>>> 
>>>>>>>> Can one request to monitor binaries -- like with
>>>>>>>> uprobes/uretprobes but with USDT?
>>>>>>>> 
>>>>>>>>> On Mon, Jan 15, 2018 at 5:09 PM, Kiran T <[email protected]> wrote:
>>>>>>>>> Hi
>>>>>>>>> All the examples on tracing processes with USDT require the pid of the
>>>>>>>>> traced program:
>>>>>>>>> 
>>>>>>>>> https://github.com/iovisor/bcc/tree/master/examples/tracing
>>>>>>>>> 
>>>>>>>>> Can one not request to monitor binaries -- like with
>>>>>>>>> uprobes/uretprobes but with USDT?
>>>>>>>>> 
>>>>>>>>> I am trying to trace php scripts running on a webserver, and USDT
>>>>>>>>> would be ideal.  But, I won't have the pid of the process that will be
>>>>>>>>> spawned by the webserver in advance.
>>>>>>>>> 
>>>>>>>>> Thanks,
>>>>>>>>> Kiran
>>>>>>>> _______________________________________________
>>>>>>>> iovisor-dev mailing list
>>>>>>>> [email protected]
>>>>>>>> https://lists.iovisor.org/mailman/listinfo/iovisor-dev
>>>>>>> _______________________________________________
>>>>>>> iovisor-dev mailing list
>>>>>>> [email protected]
>>>>>>> https://lists.iovisor.org/mailman/listinfo/iovisor-dev
>> _______________________________________________
>> iovisor-dev mailing list
>> [email protected]
>> https://lists.iovisor.org/mailman/listinfo/iovisor-dev
_______________________________________________
iovisor-dev mailing list
[email protected]
https://lists.iovisor.org/mailman/listinfo/iovisor-dev

Reply via email to