This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tapsets/23799] New: sprint_ustack() returns empty strings while sprint_ubacktrace() does not


https://sourceware.org/bugzilla/show_bug.cgi?id=23799

            Bug ID: 23799
           Summary: sprint_ustack() returns empty strings while
                    sprint_ubacktrace() does not
           Product: systemtap
           Version: unspecified
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: tapsets
          Assignee: systemtap at sourceware dot org
          Reporter: agentzh at gmail dot com
  Target Milestone: ---

Consider the following minimal C program:

```
int foo(void) {
    return 3;
}

int bar(void) {
    return foo();
}

int main(void) {
    bar();
    return 0;
}
```

Compile and link it like this:

```
gcc -g test.c
```

And then run the following stap oneliner:

```
stap -e 'probe process.function("foo") { printf("{%s}\n{%s}",
sprint_ustack(ubacktrace()), sprint_ubacktrace()); }' -c ./a.out --ldd
```

And the output is

```
{}
{foo+0x4 [a.out]
bar+0x9 [a.out]
main+0x9 [a.out]
__libc_start_main+0xea [libc-2.26.so]
_start+0x2a [a.out]}
```

The weird thing is that `sprint_ustack(ubacktrace())` returns an empty string
while `sprint_ubacktrace()` does not. Why the difference? Is there a bug in
`sprint_ustack()`? Any hints on debugging this thing?

Thanks!

-- 
You are receiving this mail because:
You are the assignee for the bug.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]