This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
[Bug translator/14431] New: NULL/invalid char * pretty printed as "<unknown>" string
- From: "mjw at redhat dot com" <sourceware-bugzilla at sourceware dot org>
- To: systemtap at sourceware dot org
- Date: Fri, 03 Aug 2012 10:30:22 +0000
- Subject: [Bug translator/14431] New: NULL/invalid char * pretty printed as "<unknown>" string
- Auto-submitted: auto-generated
http://sourceware.org/bugzilla/show_bug.cgi?id=14431
Bug #: 14431
Summary: NULL/invalid char * pretty printed as "<unknown>"
string
Product: systemtap
Version: unspecified
Status: NEW
Severity: normal
Priority: P2
Component: translator
AssignedTo: systemtap@sourceware.org
ReportedBy: mjw@redhat.com
Classification: Unclassified
If you have a char or unsigned char pointer and pretty print it, but it doesn't
actually point to a valid string, then the result is not very useful. char *
and unsigned char * are often used as arbitrary pointers/markers in code, not
just for strings.
Contrived example:
#include <malloc.h>
#include <stddef.h>
struct foobar
{
char *foo;
size_t foo_size;
unsigned char *bar;
size_t bar_size;
};
static struct foobar *fb;
unsigned char
use ()
{
if (fb->foo) *fb->foo = 'a';
return fb->bar_size > 0 ? *fb->bar : 0;
}
int
main (int argc, char **argv)
{
struct foobar stack;
fb = &stack;
fb->foo_size = 42;
fb->bar_size = 47;
fb->foo = (char *) calloc (fb->foo_size, 1);
fb->bar = (unsigned char *) calloc (fb->bar_size, 1);
fb->bar_size = use (&fb);
fb->foo = NULL;
fb->bar = fb->foo + fb->foo_size;
fb->bar_size = 0;
return use (&fb);
}
$ gcc -g -o foobar foobar.c
$ stap -e 'probe process.function("use") { log($fb$) }' -c ./foobar
{.foo="", .foo_size=42, .bar="", .bar_size=47}
{.foo="<unknown>", .foo_size=42, .bar="<unknown>", .bar_size=0}
It would have been convenient if those last two foo/bar pointers were
represented by something different than just "<unknown>".
Maybe "<unknown@0x0>" and "<unknown@0x42>"?
--
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.