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]

Re: Bug report


On 12 Sep 2005 12:12:21 -0400, Frank Ch. Eigler <fche@redhat.com> wrote:
> 
> jamesd.wi wrote:
> 
> > I was testing out systemtap here is the bug.
> > probe module("*").function("*")
> > {
> >    if (target() == pid())
> >         i++;
> > }
> > probe timer.jiffies(100) { exit(); }
> > [...]
> 
> I guess this sort of torture test will be fun to play with
> later, once we get the basics working well.

okay, i just hope you don't end up redesigning the full program
because, inserting 50,000 probes should not generate nearly 6 million
lines of C code, and yes people will want to do it to take a snap shot
of what is happening in the kernel. And when userland probes are
introduced the number of possible probes sky rockets. Even 600,000
lines of code for 5000 probes is too much.

> 
> 
> > /tmp/stapMErPuc/stap_7606.c: In function =E2dwarf_kprobe_13567_enter=E2:
> > /tmp/stapMErPuc/stap_7606.c:1635844: error: stray =E2\8=E2 in program
> > /tmp/stapMErPuc/stap_7606.c:1635844: error: syntax error before =E2!=3D=E2 =
> > token
> > [...]
> 
> Something is messing up the text you're posting.  Could you send
> as plain text the neighbourhood of those erroneous lines of code?

static int
dwarf_kprobe_13567_enter (struct kprobe *_ignored, struct pt_regs *regs) {
  struct context *c = & contexts [smp_processor_id()];
  const char* probe_point =
"kernel.function(\"inode_doinit_with_dentry@security/selinux/hooks.c:732\")";
  if (atomic_read (&session_state) != STAP_SESSION_RUNNING)
    return 0;
  if (atomic_inc_return (&c->busy) != 1) {
    printk (KERN_ERR "probe reentrancy (%s vs %s)\n", c->probe_point,
probe_point);
    atomic_set (& session_state, STAP_SESSION_ERROR);
    return 0;
  }

  c->last_error = 0;
  c->probe_point = probe_point;
  c->nesting = 0;
  c->regs = regs;
  c->actioncount = 0;
  probe_13567 (c);
  if (c->last_error && c->last_error[0]) {
    _stp_error ("%s near %s", c->last_error, c->last_stmt);
    atomic_set (& session_state, STAP_SESSION_ERROR);
  }
  atomic_dec (& c->busy);
  return 0;
}

with the bad line being:

  if (atomic_read (&session_state) != STAP_SESSION_RUNNING)
    return 0;

please find attached file that contains  the function before and after
the function with the error in it.

now that i have looked at the code and found it to be pretty normal
the error could be related to compiling a C file that has 6 million
lines of code, though i'm only guessing as i have never compiled any
one file that big before.

the comple C file is availible.  its 171MB uncompressed and 2.2MB bzip2'd

James Dickens




> 
> 
> - FChE
>

Attachment: bug_section
Description: Binary data


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