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 runtime/19955] New: on rawhide, getting 'BUG: sleeping function called from invalid context' on perf probes


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

            Bug ID: 19955
           Summary: on rawhide, getting 'BUG: sleeping function called
                    from invalid context' on perf probes
           Product: systemtap
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: runtime
          Assignee: systemtap at sourceware dot org
          Reporter: dsmith at redhat dot com
  Target Milestone: ---

On rawhide (4.6.0-0.rc2.git4.1.fc25.x86_64), I'm getting the following on the
console:

====
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: BUG: sleeping function called from
invalid context at /usr/local/share/systemtap/runtime/linux/perf.c:268
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: in_atomic(): 1, irqs_disabled(): 0,
pid: 30122, name: find
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: INFO: lockdep is turned off.
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: CPU: 0 PID: 30122 Comm: find Tainted:
G           OE   4.6.0-0.rc2.git4.1.fc25.x86_64 #1
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: Hardware name: Bochs Bochs, BIOS Bochs
01/01/2011
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: 0000000000000286 000000001621c757
ffff880072163d58 ffffffff8145a015
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: ffff880025c48000 ffffffffc0704258
ffff880072163d80 ffffffff810e17a9
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: ffffffffc0704258 000000000000010c
0000000000000000 ffff880072163da8
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: Call Trace:
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: [<ffffffff8145a015>]
dump_stack+0x86/0xc1
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: [<ffffffff810e17a9>]
___might_sleep+0x179/0x230
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: [<ffffffff810e18a9>]
__might_sleep+0x49/0x80
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: [<ffffffffc06fc7f0>]
_stp_perf_read.isra.69+0x50/0xb0 [stap_4f7d987ad6aab55c580904401f7a7b6_30119]
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: [<ffffffffc06fcc27>]
probe_2834+0x17/0x2c0 [stap_4f7d987ad6aab55c580904401f7a7b6_30119]
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: [<ffffffffc06fdeae>]
stapiu_probe_prehandler+0x24e/0x3e0
[stap_4f7d987ad6aab55c580904401f7a7b6_30119]
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: [<ffffffff811eea91>]
uprobe_notify_resume+0x411/0xb30
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: [<ffffffff8107041b>] ?
arch_uprobe_exception_notify+0x3b/0x50
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: [<ffffffff810db9f0>] ?
notifier_call_chain+0x40/0xb0
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: [<ffffffff81003279>]
exit_to_usermode_loop+0x89/0xd0
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: [<ffffffff81003e96>]
prepare_exit_to_usermode+0x76/0x80
Apr 15 09:41:44 kvm-rawhide-64-1 kernel: [<ffffffff818cdbbe>]
retint_user+0x8/0x20
====

Here's the offending function from runtime/linux/perf.c. Line 268 is the
might_sleep() call right before the return.

====
long _stp_perf_read (int ncpu, unsigned i)                                      
{                                                                               
  /* Choose the stap_perf_probes entry */                                       
  struct stap_perf_probe* stp;                                                  
  u64 enabled, running;                                                         

  if (i > sizeof(stap_perf_probes)/sizeof(struct stap_perf_probe))              
    {                                                                           
      _stp_error ("_stp_perf_read - out of range");                             
      return 0;                                                                 
    }                                                                           
  stp = & stap_perf_probes[i];                                                  

  if (stp == NULL || stp->e.t.per_thread_event == NULL)                         
    {                                                                           
      _stp_error ("_stp_perf_read - probe '%s' is not supported by this
kernel"\
,                                                                               
#ifdef STP_NEED_PROBE_NAME                                                      
                  (stp ? stp->probe->pn : "unknown")                            
#else                                                                           
                  (stp ? stp->probe->pp : "unknown")                            
#endif                                                                          
              );                                                                
      return 0;                                                                 
    }                                                                           

  might_sleep();                                                                
  return perf_event_read_value (stp->e.t.per_thread_event, &enabled, &running); 

}                                                                               
====

-- 
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]