[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