Skip to content



arch_prctl - sets architecture-specific thread state


The arch_prctl syscall sets architecture-specific thread state. It allows a process to set a specific architecture feature, such as a floating point unit, from within user-space code. It is particularly useful in cases when a process needs to change the architectural state of a thread for testing purposes, for example. When setting the architectural state the addr argument can optionally be set to provide a pointer to user space memory for getting the removed state.

One of the primary drawbacks of arch_prctl is that it is vulnerable to the Time-of-check-to-time-of-use (TOCTOU) race condition, which means that it's possible for the value of addr to change between the invocation of the check and the use of the address. It is therefore important to use arch_prctl very carefully and to take into account the risk of TOCTOU when using this syscall.


  • option:int[K] - defines the operation to be performed with arch_prctl.
  • addr:unsigned long[K] - address of the state information being set or removed.

Available Tags

  • K - Originated from kernel-space.






Hooked for observability - to measure the latency of the syscall execution, to emit tracing events, to report syscall call patterns and per-process activity.

Example Use Case

The arch_prctl syscall can be used to change the architecture-specific states in a thread, such as the floating point unit. It can be used for testing purposes or for providing an alternative to a full system reboot in cases where only a few threads need to be stateful.


The arch_prctl syscall is vulnerable to the TOCTOU race condition, which means that it is possible for the values of the addr argument to change between the invoked check and the use of the address.

pthread_arch_prctl - sets thread-specific architecture-specific state information.

This document was automatically generated by OpenAI and needs review. It might not be accurate and might contain errors. The authors of Tracee recommend that the user reads the "events.go" source file to understand the events and their arguments better.