---
name: "error::pass4"
section: "7stap"
platform: "linux"
package: "systemtap"
version: "5.6-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/error::pass4"
---

# error::pass4(7stap)

systemtap pass-4 errors

## NAME

error::pass4 - systemtap pass-4 errors

## DESCRIPTION

Errors that occur during pass 4 (compilation) have generally only a few causes:

- kernel or OS version changes

  The systemtap runtime and embedded-C fragments in the tapset library are designed to be portable across a wide range of OS versions.  However, incompatibilities can occur when some OS changes occur, such as kernel modifications that change functions, types, or macros referenced  by systemtap.  Upstream (git://sourceware.org/git/systemtap.git) builds of systemtap are often quickly updated to include relevant fixes, so try getting or making an updated build.  Reworded: **build systemtap from git** **for use with very young kernels**. If the issue persists, report the problem to the systemtap developers.

- buggy embedded-C code

  Embedded-C code in your own guru-mode script cannot be checked by systemtap, and is passed through verbatim to the compiler.  Errors in such snippets of code may be found during the pass-4 compiler invocation, though may be hard to identify by the compiler errors.

- incompatible embedded-C code

  The interface standards between systemtap-generated code and embedded-C code occasionally change.  For example, before version 1.8, arguments were passed using macros *THIS-\>foo* and *THIS-\>\_\_retvalue* but from version 1.8 onward, using *STAP\_ARG\_foo* and *STAP\_RETVALUE*. Adjust your embedded-C code to current standards, or use the *stap --compatible=VERSION* option to make systemtap use a different one.

- compiler bugs and mysteries

  Messages such as "internal compiler error" suggest compiler problems.  These should be reported to the compiler developers in the form of a preprocessed *.i* file, plus the compiler command line.  To gather relevant information, run

  ```
  stap -k --vp 0003 -p4 ....
  ```

  Systemtap will report the saved temporary directory, and the compiler command line it attempted.  Go to the directory to find he main generated file *stap\_NNNNN\_src.c*. Force the compiler to produce a preprocessed file with:

  ```
  make -C /lib/modules/`uname -r`/build M=`pwd` stap_NNNNN_src.i
  ```

  (note the *.i* suffix), and the compiler command line should be in the file *.stap\_NNNNN\_src.i.cmd*.

## SEE ALSO

```
stap(1),
error::reporting(7stap)
```
