On 08/05, Andrii Nakryiko wrote: > > On Wed, Aug 5, 2026 at 8:14 AM Oleg Nesterov <[email protected]> wrote: > > > > On 08/05, Sumanth Korikkar wrote: > > > > > > bpftrace -e 'usdt:./testprogs/usdt_semaphore_test:tracetest:testprobe { > > > printf("%s\n", str(arg1) ); exit(); }' > > > > does bpftrace care if USDT semaphore is set to 1 or 2, it shouldn't. > As long as detaching decrements it from 2 back to zero we should be > fine. Is that what's happening? If so, is there really a problem > needing to be fixed?
Yes, I thought about that too... > > So, 2 vmas map the same binary, install_breakpoint() is called twice. > > But, the 2nd install_breakpoint() -> ... -> uprobe_write() should see > > that the original insn was already replaced by int3, in this case > > verify_opcode() returns 0 and uprobe_write() should do nothing. > > > > And, if this uprobe was optimized before the 2nd install_breakpoint(), > > uprobe_write() won't be called. > > > > Hmm. > > Even though it's the same file offset, it is mapped to two different > virtual addresses, so I think it should be two different memory pages > that will have two separate int3 instructions. I don't think there is > any contradiction or surprise, is there? Ah, indeed I am stupid ;) Yes, uprobe_write() creates the COW'ed anonymous page, so the 1st install_breakpoint() won't affect the 2nd mapping to the same binary. Thanks Andrii! Oleg.
