| Line 5: |
Line 5: |
| | == Description == | | == 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. | + | User-space probes (uprobes) allow instrumentation of functions in user processes. When a uprobe is triggered for the first time, the kernel automatically creates a dedicated VMA mapping. This mapping is not removed even if the uprobe itself is later deleted. As a result, a process may retain uprobes VMAs long after the 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> option tells CRIU to proceed anyway. | + | By default, CRIU exits with an error when checkpointing a process that has a uprobes VMA, because restoring that process 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. | + | On restore, users must 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 code at a location that previously had a uprobe installed 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. |