1. 02 Mar, 2017 1 commit
    • Mark Drayton's avatar
      python: handle null module in BPF.sym · dcf8cf98
      Mark Drayton authored
      Check to see if `module` is None before attempting to call `os.path.basename`
      on it. Before:
      
      ```
      >>> BPF.sym(0x400001, 12345, show_module=True)
      Traceback (most recent call last):
      ..
      AttributeError: 'NoneType' object has no attribute 'rfind'
      ```
      
      After:
      
      ```
      >>> BPF.sym(0x400001, 12345, show_module=True)
      '[unknown]'
      ```
      dcf8cf98
  2. 01 Mar, 2017 1 commit
  3. 28 Feb, 2017 4 commits
  4. 27 Feb, 2017 1 commit
    • Mark Drayton's avatar
      Make perf ring buffer size configurable · 5f5687e4
      Mark Drayton authored
      As discussed in #966, this PR makes the size of the ring buffer used to send
      data to userspace configurable. It changes the Python, Lua and C++ APIs to
      expose this knob.
      
      It also defaults the buffer size to a larger value (64 pages per CPU, an 8x
      increase) for several tools which produce a lot of output, as well as making it
      configurable in `trace` via a `-b` flag.
      5f5687e4
  5. 26 Feb, 2017 3 commits
  6. 23 Feb, 2017 4 commits
  7. 22 Feb, 2017 2 commits
  8. 21 Feb, 2017 19 commits
  9. 20 Feb, 2017 4 commits
    • 4ast's avatar
      Merge pull request #992 from goldshtn/trace-argdist-usdt-arg · 0af31efb
      4ast authored
      trace, argdist: Treat small USDT arguments correctly
      0af31efb
    • Sasha Goldshtein's avatar
      trace, argdist: Treat small USDT arguments correctly · 3a5256f1
      Sasha Goldshtein authored
      trace and argdist currently only work correctly for USDT arguments
      whose size is exactly 8 bytes. Smaller types, such as chars, shorts,
      ints (signed or unsigned) are not treated correctly. The reason is
      that the produced program would invoke the `bpf_usdt_readarg` helper
      with the address of a u64 local variable, and then cast that variable
      to the user-specified type derived from the format string. However,
      the `bpf_usdt_readarg` rewriting then passes `sizeof(u64)` to the
      generated `bpf_..._readarg` macro, which then fails to read anything
      because the provided size doesn't match the argument size it knows
      about.
      
      The fix is fairly easy: instead of declaring a u64 unconditionally
      and reading into that variable with `bpf_usdt_readarg`, declare a
      variable that has the correct type according to what we know about
      the USDT probe.
      3a5256f1
    • 4ast's avatar
      Merge pull request #989 from pchaigno/fix-fd-leak · 203fd276
      4ast authored
      Fix file descriptor leak
      203fd276
    • Paul Chaignon's avatar
      Fix file descriptor leak · 29195875
      Paul Chaignon authored
      29195875
  10. 19 Feb, 2017 1 commit
    • Sasha Goldshtein's avatar
      Support base + index * scale addressing for USDT arguments · 8698bdb0
      Sasha Goldshtein authored
      It turns out that some software will have USDT probe arguments
      referencing memory using the full `nnn@(%basereg + %idxreg * scale`
      syntax. This is represented as `nnn@(%basereg,%idxreg,scale)` in
      the `NT_STAPSDT` note, encountered in building a recent version of
      PostgreSQL on FC25.
      
      This format is now recognized by the USDT parser, and the correct
      BPF code is emitted to retrieve arguments that reference memory
      using this full addressing syntax.`
      8698bdb0