- Data corruption issues were discovered in the current implementation of the static tracepoints implementation in KGTP. Actually, KGTP uses a static memory area to get the registers snapshot and the TRACE_EVENT string from the kernel. This can be problematic when a static tracepoint ih hit more tha once in the same time. To avoid this issue, the string and the pt_regs struct are passed to the KGTP probe on the stack.

 

- Before calling the KGTP probe, we have to generate the TRACE_EVENT string on the tracepoint site. This can be problematic because the tracepoint condition is verified in the probe itself. To avoid generating the string before the condition is verifier, we divider te KGTP probe in two parts: the first one only executes the condition native code and the second one copies the string to the KGTP buffer and executes the other actions associated to the tracepoint.

 

- When comparing SystemTap to KGTP, we discovered that a false condition in a sysetmtap script takes less time than an empty KGTP probe. That was suprising knowing that the two tools use the same mechanism to insert dynamic tracepoints which is kprobes. After searching in the kprobes documentation, we knew that Kprobes Booster is able to optimize the systemtap probe and it fails to do so with the KGTP probe.

Projects: