tmm1/rblineprof

More NULL frames

lmarburger opened this issue · 1 comments

After applying #17, @eric and I found this bug. Here's the test case.

(gdb) continue
Continuing.

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x0000000000000048
[Switching to process 82986 thread 0x1503]
0x000000010f9ff5f4 in profiler_hook (event=32, data=<value temporarily unavailable, due to optimizations>, self=140588440928000, mid=4736, klass=140588440003480) at rblineprof.c:423
423         if (prev->srcfile != frame->srcfile) {
(gdb) where
#0  0x000000010f9ff5f4 in profiler_hook (event=32, data=<value temporarily unavailable, due to optimizations>, self=140588440928000, mid=4736, klass=140588440003480) at rblineprof.c:423
#1  0x000000010f6dcb6f in thread_exec_event_hooks ()
#2  0x000000010f6dc8c3 in thread_suppress_tracing ()
#3  0x000000010f6dc9ad in rb_threadptr_exec_event_hooks ()
#4  0x000000010f6cbbd8 in vm_call0 ()
#5  0x000000010f6cf297 in rb_funcall_passing_block ()
#6  0x000000010f6d9911 in rb_yield ()
#7  0x000000010f5591ce in rb_ary_each ()
#8  0x000000010f6d7a67 in vm_call_method ()
#9  0x000000010f6c4eb5 in vm_exec_core ()
#10 0x000000010f6c9aea in vm_exec ()
#11 0x000000010f6d9660 in rb_yield ()
#12 0x000000010f5928ff in rb_ensure ()
#13 0x000000010f9ff256 in lineprof (self=140588440828600, filename=140588440870920) at rblineprof.c:589
#14 0x000000010f6d7a67 in vm_call_method ()
#15 0x000000010f6c4eb5 in vm_exec_core ()
#16 0x000000010f6c9aea in vm_exec ()
#17 0x000000010f6cae2d in rb_vm_invoke_proc ()
#18 0x000000010f5999ee in proc_call ()
#19 0x000000010f6d7a67 in vm_call_method ()
#20 0x000000010f6c4eb5 in vm_exec_core ()
#21 0x000000010f6c9aea in vm_exec ()
#22 0x000000010f6cae2d in rb_vm_invoke_proc ()
#23 0x000000010f6e2319 in thread_start_func_2 ()
#24 0x000000010f6e246c in thread_start_func_1 ()
#25 0x00007fff8e18b7a2 in _pthread_start ()
#26 0x00007fff8e1781e1 in thread_start ()

(gdb) p frame
$1 = (stackframe_t *) 0x0

(gdb) p prev
$2 = (stackframe_t *) 0x10f9fff88

(gdb) p rblineprof
$3 = {
  enabled = true,
  stack = {{
      event = 32,
      thread = 0x7fdd4ca016a0,
      self = 140588440929440,
      mid = 424,
      klass = 140588440037160,
      filename = 0x0,
      line = 15,
      start = {
        wall_time = 1369359164923503,
        cpu_time = 170409
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca016a0,
      self = 140588440928640,
      mid = 4736,
      klass = 140588440003480,
      filename = 0x0,
      line = 15,
      start = {
        wall_time = 1369359164924412,
        cpu_time = 170831
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca0bd30,
      self = 140588440660760,
      mid = 8288,
      klass = 140588440075080,
      filename = 0x0,
      line = 184,
      start = {
        wall_time = 1369359164923583,
        cpu_time = 170455
      },
      srcfile = 0x7fdd4be971c0
    }, {
      event = 32,
      thread = 0x7fdd4ca281d0,
      self = 140588440828600,
      mid = 6176,
      klass = 140588440075080,
      filename = 0x0,
      line = 17,
      start = {
        wall_time = 1369359164923654,
        cpu_time = 170494
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca281d0,
      self = 140588440024240,
      mid = 6024,
      klass = 140588440027240,
      filename = 0x0,
      line = 17,
      start = {
        wall_time = 1369359164923656,
        cpu_time = 170495
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca38810,
      self = 140588440828600,
      mid = 6176,
      klass = 140588440075080,
      filename = 0x0,
      line = 17,
      start = {
        wall_time = 1369359164923702,
        cpu_time = 170516
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca38810,
      self = 140588440024240,
      mid = 6024,
      klass = 140588440027240,
      filename = 0x0,
      line = 17,
      start = {
        wall_time = 1369359164923704,
        cpu_time = 170517
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca067d0,
      self = 140588440828600,
      mid = 6176,
      klass = 140588440075080,
      filename = 0x0,
      line = 17,
      start = {
        wall_time = 1369359164923731,
        cpu_time = 170530
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca067d0,
      self = 140588440024240,
      mid = 6024,
      klass = 140588440027240,
      filename = 0x0,
      line = 17,
      start = {
        wall_time = 1369359164923733,
        cpu_time = 170531
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca27d60,
      self = 140588440828600,
      mid = 6176,
      klass = 140588440075080,
      filename = 0x0,
      line = 17,
      start = {
        wall_time = 1369359164923769,
        cpu_time = 170548
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca27d60,
      self = 140588440024240,
      mid = 6024,
      klass = 140588440027240,
      filename = 0x0,
      line = 17,
      start = {
        wall_time = 1369359164923771,
        cpu_time = 170549
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca3c790,
      self = 140588440828600,
      mid = 6176,
      klass = 140588440075080,
      filename = 0x0,
      line = 17,
      start = {
        wall_time = 1369359164923796,
        cpu_time = 170561
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca3c790,
      self = 140588440024240,
      mid = 6024,
      klass = 140588440027240,
      filename = 0x0,
      line = 17,
      start = {
        wall_time = 1369359164923797,
        cpu_time = 170561
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca38cb0,
      self = 140588440828600,
      mid = 6176,
      klass = 140588440075080,
      filename = 0x0,
      line = 17,
      start = {
        wall_time = 1369359164923833,
        cpu_time = 170577
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca38cb0,
      self = 140588440024240,
      mid = 6024,
      klass = 140588440027240,
      filename = 0x0,
      line = 17,
      start = {
        wall_time = 1369359164923835,
        cpu_time = 170578
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca3a450,
      self = 140588440828600,
      mid = 6176,
      klass = 140588440075080,
      filename = 0x0,
      line = 17,
      start = {
        wall_time = 1369359164923877,
        cpu_time = 170601
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca3a450,
      self = 140588440024240,
      mid = 6024,
      klass = 140588440027240,
      filename = 0x0,
      line = 17,
      start = {
        wall_time = 1369359164923879,
        cpu_time = 170602
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca21150,
      self = 140588440828600,
      mid = 6176,
      klass = 140588440075080,
      filename = 0x0,
      line = 17,
      start = {
        wall_time = 1369359164924071,
        cpu_time = 170682
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca21150,
      self = 140588440024240,
      mid = 6024,
      klass = 140588440027240,
      filename = 0x0,
      line = 17,
      start = {
        wall_time = 1369359164924077,
        cpu_time = 170684
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca0d360,
      self = 140588440828600,
      mid = 6176,
      klass = 140588440075080,
      filename = 0x0,
      line = 17,
      start = {
        wall_time = 1369359164924129,
        cpu_time = 170707
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca0d360,
      self = 140588440024240,
      mid = 6024,
      klass = 140588440027240,
      filename = 0x0,
      line = 17,
      start = {
        wall_time = 1369359164924131,
        cpu_time = 170708
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca0c7c0,
      self = 140588440828600,
      mid = 6176,
      klass = 140588440075080,
      filename = 0x0,
      line = 17,
      start = {
        wall_time = 1369359164924177,
        cpu_time = 170730
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 32,
      thread = 0x7fdd4ca0c7c0,
      self = 140588440024240,
      mid = 6024,
      klass = 140588440027240,
      filename = 0x0,
      line = 17,
      start = {
        wall_time = 1369359164924180,
        cpu_time = 170731
      },
      srcfile = 0x7fdd4ca06f20
    }, {
      event = 0,
      thread = 0x0,
      self = 0,
      mid = 0,
      klass = 0,
      filename = 0x0,
      line = 0,
      start = {
        wall_time = 0,
        cpu_time = 0
      },
      srcfile = 0x0
    } <repeats 32745 times>},
  stack_depth = 18446744073709551612,
  source_filename = 0x0,
  file = {
    filename = 0x0,
    nlines = 0,
    lines = 0x0,
    total = {
      wall_time = 0,
      cpu_time = 0
    },
    child = {
      wall_time = 0,
      cpu_time = 0
    },
    depth = 0,
    exclusive_start = {
      wall_time = 0,
      cpu_time = 0
    },
    exclusive = {
      wall_time = 0,
      cpu_time = 0
    }
  },
  source_regex = 140588440870920,
  files = 0x7fdd4be3cae0,
  cache = {
    file = 0x7fdd4c8bb130 "/Users/Larry/tmp/rblineprof-puma/config.ru",
    srcfile = 0x7fdd4ca06f20
  }
}
eric commented

Big stack depth:

  stack_depth = 18446744073709551612,