[Crash-utility] crash: cannot resolve "schedulers" crash-utility 7.1.5 with xen-4.7.0

Dave Anderson anderson at redhat.com
Tue Aug 30 13:24:36 UTC 2016



----- Original Message -----
> Hello everyone,
> 
> i have a problem with crash-utility 7.1.5 and xen 4.7.0
> 
> 
> i have installed the kexec-tools for saveing the vmcore in case of a
> Hypervisor crash. If i simulated this via xl debug-key C, i get the vmcore.
> now, if i want to analyze this vmcore via crash:
> crash --hyper /usr/lib/debug/xen-syms-4.7.0 vmcore
> 
> i got the follwing message:
> GNU gdb (GDB) 7.6
> Copyright (C) 2013 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law. Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "x86_64-unknown-linux-gnu"...
> 
> 
> crash: cannot resolve "schedulers"
> 
> if i execute this command with debug output:
> crash -d3 --hyper /usr/lib/debug/xen-syms-4.7.0 vmcore
> 
> i got the follwing:
> gdb /usr/lib/debug/xen-syms-4.7.0
> GNU gdb (GDB) 7.6
> Copyright (C) 2013 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law. Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "x86_64-unknown-linux-gnu"...
> 
> GNU_GET_DATATYPE[note_buf_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[crash_note_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[crash_note_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[crash_note_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[crash_note_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[crash_note_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[crash_note_core_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[crash_note_core_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[crash_note_core_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[crash_note_xen_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[crash_note_xen_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[crash_note_xen_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[crash_note_xen_core_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[crash_note_xen_core_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[crash_note_xen_core_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[crash_note_xen_info_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[crash_note_xen_info_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[crash_note_xen_info_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[xen_crash_xen_regs_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[note_buf_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[crash_note_xen_t]: returned via gdb_error_hook
> GNU_GET_DATATYPE[crash_note_xen_core_t]: returned via gdb_error_hook
> sp=ffff8300e7507fc0, cpu_info=ffff8300e7507f18
> sp=ffff830c14ec7fc0, cpu_info=ffff830c14ec7f18
> sp=ffff830c14e6ffc0, cpu_info=ffff830c14e6ff18
> sp=ffff830c17ee7fc0, cpu_info=ffff830c17ee7f18
> sp=ffff830617feffc0, cpu_info=ffff830617feff18
> sp=ffff830617fdffc0, cpu_info=ffff830617fdff18
> sp=ffff830617fd7fc0, cpu_info=ffff830617fd7f18
> sp=ffff830617fc7fc0, cpu_info=ffff830617fc7f18
> idle_vcpu=ffff8300e72fe000, domain=ffff830c17ef8000
> 
> crash: cannot resolve "schedulers"
> 
> under xen 4.6.0 with crash-utility 7.1.5
> it works.
> 
> have anybody tips or hint´s what the problem is and how to solve it.
> 
> all the best
> guido
> 

The "schedulers" symbol came from the Xen "common/schedule.c" file, where
one example upstream Xen source code repo shows it looking like this:
    
  static const struct scheduler *schedulers[] = {
      &sched_credit_def,
      &sched_credit2_def,
      &sched_arinc653_def,
      &sched_rtds_def,
  };
  
I don't know where the 4.7 Xen source code repo is located, but google'ing
for "Xen common/schedule.c" also shows a few instances where the "schedulers"
symbol looks to have been redefined like so:
    
  extern const struct scheduler *__start_schedulers_array[], *__end_schedulers_array[];
  #define NUM_SCHEDULERS (__end_schedulers_array - __start_schedulers_array)
  #define schedulers __start_schedulers_array
  
That being the case, it's going to require that the xen_hyper_scheduler_init()
function the crash utility's xen_hyper.c file to be reworked to handle both the
old and new versions of "schedulers".
    
I personally don't do any support for the Xen hypervisor, but there should be 
somebody on this list that would be interested in maintaining support for it
and posting a patch.

Dave

 




More information about the Crash-utility mailing list