Re: Why do kprobes and uprobes singlestep?

From: Andy Lutomirski
Date: Wed Mar 03 2021 - 06:28:34 EST



> On Mar 2, 2021, at 5:22 PM, Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx> wrote:
>
> On Tue, Mar 2, 2021 at 1:02 PM Andy Lutomirski <luto@xxxxxxxxxxxxxx> wrote:
>>
>>
>>>> On Mar 2, 2021, at 12:24 PM, Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx> wrote:
>>>
>>> On Tue, Mar 2, 2021 at 10:38 AM Andy Lutomirski <luto@xxxxxxxxxx> wrote:
>>>>
>>>> Is there something like a uprobe test suite? How maintained /
>>>> actively used is uprobe?
>>>
>>> uprobe+bpf is heavily used in production.
>>> selftests/bpf has only one test for it though.
>>>
>>> Why are you asking?
>>
>> Because the integration with the x86 entry code is a mess, and I want to know whether to mark it BROKEN or how to make sure the any cleanups actually work.
>
> Any test case to repro the issue you found?
> Is it a bug or just messy code?

Just messy code.

> Nowadays a good chunk of popular applications (python, mysql, etc) has
> USDTs in them.
> Issues reported with bcc:
> https://github.com/iovisor/bcc/issues?q=is%3Aissue+USDT
> Similar thing with bpftrace.
> Both standard USDT and semaphore based are used in the wild.
> uprobe for containers has been a long standing feature request.
> If you can improve uprobe performance that would be awesome.
> That's another thing that people report often. We optimized it a bit.
> More can be done.


Wait... USDT is much easier to implement well. Are we talking just USDT or are we talking about general uprobes in which almost any instruction can get probed? If the only users that care about uprobes are doing USDT, we could vastly simplify the implementation and probably make it faster, too.