[Bug runtime/33782] New: Failed to unwind in uprobe after kernel commit 4d756095d
lijunlong at openresty dot com
sourceware-bugzilla@sourceware.org
Mon Jan 12 02:46:16 GMT 2026
https://sourceware.org/bugzilla/show_bug.cgi?id=33782
Bug ID: 33782
Summary: Failed to unwind in uprobe after kernel commit
4d756095d
Product: systemtap
Version: unspecified
Status: UNCONFIRMED
Severity: critical
Priority: P2
Component: runtime
Assignee: systemtap at sourceware dot org
Reporter: lijunlong at openresty dot com
Target Milestone: ---
In uprobes-inode.c, the code checks UPROBE_HANDLER_MASK to decide
if uprobe_get_swbp_addr() should be invoked.
This macro was removed in kernel commit 4d756095d. As a result,
the condition now always evaluates to true, leading to an unnecessary
decrement of the RIP register value.
The UPROBE_HANDLER_MASK macro was introduce in Linux 3.9 and was removed in
linux 6.13.
<code>
// uprobes started setting REG_IP itself starting in kernel commit 74e59dfc.
// There's no direct indicator of this, but commit da1816b1 in the same patch
// series defines UPROBE_HANDLER_MASK, so that's a decent trigger for us.
#ifndef UPROBE_HANDLER_MASK
#define STAPIU_NEEDS_REG_IP 1
#if !defined(STAPCONF_UPROBE_GET_SWBP_ADDR_EXPORTED)
// First typedef from the original decl, then #define it as a typecasted call.
typedef typeof(&uprobe_get_swbp_addr) uprobe_get_swbp_addr_fn;
#define uprobe_get_swbp_addr(a) \
ibt_wrapper(unsigned long, (*
(uprobe_get_swbp_addr_fn)kallsyms_uprobe_get_swbp_addr)((a)))
#endif
#endif
</code>
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the Systemtap
mailing list