Difference between revisions of "CLI/opt/--allow-uprobes"
m |
m (→Description) |
||
| Line 7: | Line 7: | ||
User-space probes (uprobes) let you instrument functions in user processes. When a uprobe is triggered for the first time in a process, the kernel automatically creates a dedicated VMA for uprobes. This mapping is not removed even if the uprobe itself is later deleted. As a result, a process may retain a ''uprobes VMA'' long after probes have been removed. | User-space probes (uprobes) let you instrument functions in user processes. When a uprobe is triggered for the first time in a process, the kernel automatically creates a dedicated VMA for uprobes. This mapping is not removed even if the uprobe itself is later deleted. As a result, a process may retain a ''uprobes VMA'' long after probes have been removed. | ||
| − | By default, CRIU refuses to checkpoint a process that has a uprobes VMA, since restoring it without the corresponding probes can change execution semantics. The <code>--allow-uprobes</code> | + | By default, CRIU refuses to checkpoint a process that has a uprobes VMA, since restoring it without the corresponding probes can change execution semantics. The <code>--allow-uprobes</code> option tells CRIU to proceed anyway. |
| + | |||
| + | On restore users need to ensure that any uprobes that were active for the checkpointed processes are still installed on the restore host before resuming execution. If a restored process executes at an address that had been uprobe'd but the probe is no longer active, the kernel delivers <code>SIGTRAP</code>. Without a handler for <code>SIGTRAP</code>, the process will terminate and may produce a core dump. | ||
Revision as of 12:56, 7 October 2025
The --allow-uprobes command-line option allows CRIU to checkpoint and restore processes that have (or once had) a kernel-created uprobes VMA (virtual memory area). Since this VMA persists even after the probe is removed, CRIU cannot safely infer the probe state at checkpoint time without this option.
Description
User-space probes (uprobes) let you instrument functions in user processes. When a uprobe is triggered for the first time in a process, the kernel automatically creates a dedicated VMA for uprobes. This mapping is not removed even if the uprobe itself is later deleted. As a result, a process may retain a uprobes VMA long after probes have been removed.
By default, CRIU refuses to checkpoint a process that has a uprobes VMA, since restoring it without the corresponding probes can change execution semantics. The --allow-uprobes option tells CRIU to proceed anyway.
On restore users need to ensure that any uprobes that were active for the checkpointed processes are still installed on the restore host before resuming execution. If a restored process executes at an address that had been uprobe'd but the probe is no longer active, the kernel delivers SIGTRAP. Without a handler for SIGTRAP, the process will terminate and may produce a core dump.