Bug 1994505
| Summary: | vfs.{read,write,open} stap script produces "Potential type mismatch" warnings | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 8 | Reporter: | Ramesh Sahoo <rsahoo> |
| Component: | systemtap | Assignee: | Frank Ch. Eigler <fche> |
| systemtap sub component: | system-version | QA Contact: | Martin Cermak <mcermak> |
| Status: | CLOSED ERRATA | Docs Contact: | |
| Severity: | medium | ||
| Priority: | unspecified | CC: | dsmith, lberk, mcermak, mjw, rmetrich |
| Version: | 8.4 | Keywords: | Bugfix, Patch, Triaged, UserExperience |
| Target Milestone: | rc | ||
| Target Release: | --- | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | systemtap-4.6-1.el8 | Doc Type: | No Doc Update |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2022-05-10 14:10:47 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
The messages point to this man page: % man warning::debuginfo which contains information about how to deal with missing debuginfo. The simplest thing to do here may be: # sudo stap-prep Please let us know how things work after the needed debuginfo is installed. (If inside RH, there is a debuginfod server that systemtap can use to download this stuff for itself.) Hello Frank,
Thanks, I got that working but there are several warnings. Anyway to avoid these warnings?
[root@localhost ~]# stap -v file_watch.stp 102228763
Pass 1: parsed user script and 484 library scripts using 268276virt/110052res/12104shr/97544data kb, in 280usr/30sys/312real ms.
WARNING: Potential type mismatch in reassignment: identifier 'root_dentry' at /usr/share/systemtap/tapset/linux/dentry.stp:246:3
source: root_dentry = @cast(task, "task_struct", "kernel")->fs->root->dentry
^
WARNING: Potential type mismatch in reassignment: identifier 'root_dentry' at :246:3
source: root_dentry = @cast(task, "task_struct", "kernel")->fs->root->dentry
^
WARNING: Potential type mismatch in reassignment: identifier 'root_dentry' at :246:3
source: root_dentry = @cast(task, "task_struct", "kernel")->fs->root->dentry
^
WARNING: Potential type mismatch in reassignment: identifier 'root_dentry' at :242:3
source: root_dentry = & @cast(task, "task_struct", "kernel")->fs->root
^
WARNING: Potential type mismatch in reassignment: identifier 'root_dentry' at :242:3
source: root_dentry = & @cast(task, "task_struct", "kernel")->fs->root
^
WARNING: Potential type mismatch in reassignment: identifier 'root_dentry' at :242:3
source: root_dentry = & @cast(task, "task_struct", "kernel")->fs->root
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :268:6
source: dentry = mnt->mnt_mountpoint
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :269:6
source: vfsmnt = & mnt->mnt_parent->mnt
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :290:27
source: name = __dentry_prepend(dentry, name)
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :291:3
source: dentry = dentry->d_parent
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :291:12
source: dentry = dentry->d_parent
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :268:6
source: dentry = mnt->mnt_mountpoint
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :269:6
source: vfsmnt = & mnt->mnt_parent->mnt
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :290:27
source: name = __dentry_prepend(dentry, name)
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :291:3
source: dentry = dentry->d_parent
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :291:12
source: dentry = dentry->d_parent
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :268:6
source: dentry = mnt->mnt_mountpoint
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :269:6
source: vfsmnt = & mnt->mnt_parent->mnt
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :290:27
source: name = __dentry_prepend(dentry, name)
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :291:3
source: dentry = dentry->d_parent
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :291:12
source: dentry = dentry->d_parent
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :212:2
source: dentry = & @cast(dentry, "dentry", "kernel")
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :212:19
source: dentry = & @cast(dentry, "dentry", "kernel")
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :213:2
source: vfsmnt = & @cast(vfsmnt, "vfsmount", "kernel")
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :213:19
source: vfsmnt = & @cast(vfsmnt, "vfsmount", "kernel")
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :216:9
source: && dentry->d_op && dentry->d_op->d_dname
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :216:25
source: && dentry->d_op && dentry->d_op->d_dname
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :217:28
source: && (!__dentry_IS_ROOT(dentry) || dentry != vfsmnt->mnt_root)) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :217:39
source: && (!__dentry_IS_ROOT(dentry) || dentry != vfsmnt->mnt_root)) {
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :217:49
source: && (!__dentry_IS_ROOT(dentry) || dentry != vfsmnt->mnt_root)) {
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :222:7
source: if (vfsmnt->mnt_sb->s_magic == @const("SOCKFS_MAGIC")) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :223:35
source: return sprintf("socket:[%lu]", dentry->d_inode->i_ino)
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :225:12
source: else if (vfsmnt->mnt_sb->s_magic == @const("PIPEFS_MAGIC")) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :226:33
source: return sprintf("pipe:[%lu]", dentry->d_inode->i_ino)
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :228:12
source: else if (vfsmnt->mnt_sb->s_magic
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :230:43
source: return sprintf("ANON_INODE:%s", d_name(dentry))
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :232:12
source: else if (vfsmnt->mnt_sb->s_magic == @const("NSFS_MAGIC")) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :233:20
source: ns_ops = &@cast(dentry->d_fsdata, "proc_ns_operations", "kernel")
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :235:12
source: dentry->d_inode->i_ino)
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :237:34
source: return sprintf("UNKNOWN:[%p]", dentry)
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :251:27
source: mnt = &@cast(real_mount(vfsmnt), "mount", "kernel")
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :257:9
source: while (dentry != root_dentry || vfsmnt == root_vfsmnt) {
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :257:34
source: while (dentry != root_dentry || vfsmnt == root_vfsmnt) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :258:7
source: if (dentry == vfsmnt->mnt_root || __dentry_IS_ROOT(dentry)) {
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :258:17
source: if (dentry == vfsmnt->mnt_root || __dentry_IS_ROOT(dentry)) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :258:54
source: if (dentry == vfsmnt->mnt_root || __dentry_IS_ROOT(dentry)) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :260:8
source: if (dentry != vfsmnt->mnt_root) {
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :260:18
source: if (dentry != vfsmnt->mnt_root) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :212:2
source: dentry = & @cast(dentry, "dentry", "kernel")
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :212:19
source: dentry = & @cast(dentry, "dentry", "kernel")
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :213:2
source: vfsmnt = & @cast(vfsmnt, "vfsmount", "kernel")
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :213:19
source: vfsmnt = & @cast(vfsmnt, "vfsmount", "kernel")
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :216:9
source: && dentry->d_op && dentry->d_op->d_dname
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :216:25
source: && dentry->d_op && dentry->d_op->d_dname
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :217:28
source: && (!__dentry_IS_ROOT(dentry) || dentry != vfsmnt->mnt_root)) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :217:39
source: && (!__dentry_IS_ROOT(dentry) || dentry != vfsmnt->mnt_root)) {
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :217:49
source: && (!__dentry_IS_ROOT(dentry) || dentry != vfsmnt->mnt_root)) {
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :222:7
source: if (vfsmnt->mnt_sb->s_magic == @const("SOCKFS_MAGIC")) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :223:35
source: return sprintf("socket:[%lu]", dentry->d_inode->i_ino)
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :225:12
source: else if (vfsmnt->mnt_sb->s_magic == @const("PIPEFS_MAGIC")) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :226:33
source: return sprintf("pipe:[%lu]", dentry->d_inode->i_ino)
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :228:12
source: else if (vfsmnt->mnt_sb->s_magic
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :230:43
source: return sprintf("ANON_INODE:%s", d_name(dentry))
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :232:12
source: else if (vfsmnt->mnt_sb->s_magic == @const("NSFS_MAGIC")) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :233:20
source: ns_ops = &@cast(dentry->d_fsdata, "proc_ns_operations", "kernel")
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :235:12
source: dentry->d_inode->i_ino)
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :237:34
source: return sprintf("UNKNOWN:[%p]", dentry)
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :251:27
source: mnt = &@cast(real_mount(vfsmnt), "mount", "kernel")
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :257:9
source: while (dentry != root_dentry || vfsmnt == root_vfsmnt) {
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :257:34
source: while (dentry != root_dentry || vfsmnt == root_vfsmnt) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :258:7
source: if (dentry == vfsmnt->mnt_root || __dentry_IS_ROOT(dentry)) {
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :258:17
source: if (dentry == vfsmnt->mnt_root || __dentry_IS_ROOT(dentry)) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :258:54
source: if (dentry == vfsmnt->mnt_root || __dentry_IS_ROOT(dentry)) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :260:8
source: if (dentry != vfsmnt->mnt_root) {
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :260:18
source: if (dentry != vfsmnt->mnt_root) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :212:2
source: dentry = & @cast(dentry, "dentry", "kernel")
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :212:19
source: dentry = & @cast(dentry, "dentry", "kernel")
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :213:2
source: vfsmnt = & @cast(vfsmnt, "vfsmount", "kernel")
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :213:19
source: vfsmnt = & @cast(vfsmnt, "vfsmount", "kernel")
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :216:9
source: && dentry->d_op && dentry->d_op->d_dname
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :216:25
source: && dentry->d_op && dentry->d_op->d_dname
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :217:28
source: && (!__dentry_IS_ROOT(dentry) || dentry != vfsmnt->mnt_root)) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :217:39
source: && (!__dentry_IS_ROOT(dentry) || dentry != vfsmnt->mnt_root)) {
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :217:49
source: && (!__dentry_IS_ROOT(dentry) || dentry != vfsmnt->mnt_root)) {
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :222:7
source: if (vfsmnt->mnt_sb->s_magic == @const("SOCKFS_MAGIC")) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :223:35
source: return sprintf("socket:[%lu]", dentry->d_inode->i_ino)
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :225:12
source: else if (vfsmnt->mnt_sb->s_magic == @const("PIPEFS_MAGIC")) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :226:33
source: return sprintf("pipe:[%lu]", dentry->d_inode->i_ino)
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :228:12
source: else if (vfsmnt->mnt_sb->s_magic
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :230:43
source: return sprintf("ANON_INODE:%s", d_name(dentry))
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :232:12
source: else if (vfsmnt->mnt_sb->s_magic == @const("NSFS_MAGIC")) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :233:20
source: ns_ops = &@cast(dentry->d_fsdata, "proc_ns_operations", "kernel")
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :235:12
source: dentry->d_inode->i_ino)
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :237:34
source: return sprintf("UNKNOWN:[%p]", dentry)
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :251:27
source: mnt = &@cast(real_mount(vfsmnt), "mount", "kernel")
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :257:9
source: while (dentry != root_dentry || vfsmnt == root_vfsmnt) {
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :257:34
source: while (dentry != root_dentry || vfsmnt == root_vfsmnt) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :258:7
source: if (dentry == vfsmnt->mnt_root || __dentry_IS_ROOT(dentry)) {
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :258:17
source: if (dentry == vfsmnt->mnt_root || __dentry_IS_ROOT(dentry)) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :258:54
source: if (dentry == vfsmnt->mnt_root || __dentry_IS_ROOT(dentry)) {
^
WARNING: Potential type mismatch in reassignment: identifier 'dentry' at :260:8
source: if (dentry != vfsmnt->mnt_root) {
^
WARNING: Potential type mismatch in reassignment: identifier 'vfsmnt' at :260:18
source: if (dentry != vfsmnt->mnt_root) {
^
Pass 2: analyzed script: 6 probes, 64 functions, 9 embeds, 38 globals using 479080virt/322500res/13800shr/308348data kb, in 2670usr/380sys/3055real ms.
Pass 3: translated to C into "/tmp/stapLResKt/stap_e1576cc8e2e33e12298b404b13ba64b9_42821_src.c" using 479080virt/322692res/13992shr/308348data kb, in 40usr/70sys/107real ms.
Pass 4: compiled C into "stap_e1576cc8e2e33e12298b404b13ba64b9_42821.ko" in 4880usr/700sys/5031real ms.
Pass 5: starting run.
Tue Aug 17 13:25:15 2021 file_path(/tmp/anaconda.log) proc_name(cat) uid(0) pid(78200) ppid(78114) parent_proc(bash) ppfunc(vfs_read) cmd_line(cat /tmp/anaconda.log)
Process Trace:
↓ 78114 ('bash')
↓ 78107 ('sshd')
↓ 78100 ('sshd')
↓ 1168 ('sshd')
↓ 1 ('systemd')
Tue Aug 17 13:25:15 2021 file_path(/tmp/anaconda.log) proc_name(cat) uid(0) pid(78200) ppid(78114) parent_proc(bash) ppfunc(vfs_read) cmd_line(cat /tmp/anaconda.log)
Process Trace:
↓ 78114 ('bash')
↓ 78107 ('sshd')
↓ 78100 ('sshd')
↓ 1168 ('sshd')
↓ 1 ('systemd')
Yeah, that warning is annoying. Use "stap -w ..." to suppress it until we can get rid of it. Will retarget this BZ toward that end. While we're still aiming to get this done during the 8.6 timeframe, but unsetting flags to stop making it look like there is a firm commitment. upstream commit a11d8a296ba4 should roll into the upcoming rebase Verified with systemtap-4.6-2.el8 and systemtap-4.6-1.el9 (In reply to Martin Cermak from comment #7) > Verified with systemtap-4.6-2.el8 and systemtap-4.6-1.el9 And with systemtap-4.6-3.el9 too. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (systemtap bug fix and enhancement update), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHBA-2022:1890 |
Description of problem: The following stap script perfectly works on RHEL7 however it breaks on RHEL8. #! /usr/bin/env stap # Systemtap script to watch read,write,open events on a file. # This script must be executed with the inode number of the file as an argument. # Execute stat -c "%i" <file_path> to see file indode # # Run Instructions: # # yum install systemtap # # stap-prep # # stap -v <thiscript.stp> <file_indode_number> # probe vfs.{read,write,open}.return { ino = ino if (ino == $1){ printf ("%s file_path(%s) proc_name(%s) uid(%ld) pid(%d) ppid(%d) parent_proc(%s) ppfunc(%s) cmd_line(%s)\n", ctime(gettimeofday_s()), pathname, execname(), uid(), pid(), ppid(), pexecname(), ppfunc(), cmdline_str()) printf("Process Trace:\n") ts = task_current() while (ts->pid !=1 && ts->pid !=0) { ts = ts->parent printf(" ↓ %ld ('%s')\n", ts->pid, pid2execname(ts->pid)) } printf("\n") } } Output from RHEL7: Tue Aug 17 07:31:53 2021 file_path(/tmp/file1.txt) proc_name(cat) uid(100084) pid(10439) ppid(26535) parent_proc(bash) ppfunc(vfs_read) cmd_line(cat /tmp/file1.txt) Process Trace: ↓ 26535 ('bash') ↓ 26090 ('terminator') ↓ 3560 ('gnome-shell') ↓ 3375 ('gnome-session-b') ↓ 3332 ('gdm-session-wor') ↓ 2219 ('gdm') ↓ 1 ('systemd') Failed Output from RHEL8: [root@localhost ~]# stap -v file_watch.stp 102228751 Pass 1: parsed user script and 484 library scripts using 268276virt/109956res/12004shr/97544data kb, in 270usr/30sys/309real ms. WARNING: cannot find module kernel debuginfo: No DWARF information found [man warning::debuginfo] semantic error: resolution failed in DWARF builder semantic error: resolution failed in DWARF builder semantic error: while resolving probe point: identifier 'kernel' at /usr/share/systemtap/tapset/linux/vfs.stp:991:25 source: probe vfs.read.return = kernel.function("vfs_read").return ^ semantic error: no match semantic error: resolution failed in alias expansion builder WARNING: cannot find module kernel debuginfo: No DWARF information found [man warning::debuginfo] semantic error: resolution failed in DWARF builder semantic error: resolution failed in alias expansion builder WARNING: cannot find module kernel debuginfo: No DWARF information found [man warning::debuginfo] semantic error: resolution failed in alias expansion builder Version-Release number of selected component (if applicable): systemtap-4.4-11.el8_4.x86_64