On 05/22, Alexei Starovoitov wrote: > On 5/22/19 9:38 AM, Stanislav Fomichev wrote: > > On 05/21, Yonghong Song wrote: > >> This patch tries to solve the following specific use case. > >> > >> Currently, bpf program can already collect stack traces > >> through kernel function get_perf_callchain() > >> when certain events happens (e.g., cache miss counter or > >> cpu clock counter overflows). But such stack traces are > >> not enough for jitted programs, e.g., hhvm (jited php). > >> To get real stack trace, jit engine internal data structures > >> need to be traversed in order to get the real user functions. > >> > >> bpf program itself may not be the best place to traverse > >> the jit engine as the traversing logic could be complex and > >> it is not a stable interface either. > >> > >> Instead, hhvm implements a signal handler, > >> e.g. for SIGALARM, and a set of program locations which > >> it can dump stack traces. When it receives a signal, it will > >> dump the stack in next such program location. > >> > > > > [..] > >> This patch implements bpf_send_signal() helper to send > >> a signal to hhvm in real time, resulting in intended stack traces. > > Series looks good. One minor nit/question: maybe rename bpf_send_signal > > to something like bpf_send_signal_to_current/bpf_current_send_signal/etc? > > bpf_send_signal is too generic now that you send the signal > > to the current process.. > > bpf_send_signal_to_current was Yonghong's original name > and I asked him to rename it to bpf_send_signal :) > I don't see bpf sending signals to arbitrary processes > in the near future. :) I was thinking that it might be a bit more clear if we communicate target process in the name, but I don't feel strongly about it. So it's not about the future. OTOH, who knows, I remember when people said there would not be any locking/loops in bpf. And here we are :)