[Crash-utility] Crash-utility Digest, Vol 175, Issue 27

Jon Deacon jdeacon60 at gmail.com
Sun Apr 19 23:10:49 UTC 2020


Would you please take me off your list totally ridiculous  

Sent from my iPhone

> On Apr 19, 2020, at 4:01 PM, crash-utility-request at redhat.com wrote:
> 
> Send Crash-utility mailing list submissions to
>    crash-utility at redhat.com
> 
> To subscribe or unsubscribe via the World Wide Web, visit
>    https://www.redhat.com/mailman/listinfo/crash-utility
> or, via email, send a message with subject or body 'help' to
>    crash-utility-request at redhat.com
> 
> You can reach the person managing the list at
>    crash-utility-owner at redhat.com
> 
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Crash-utility digest..."
> 
> 
> Today's Topics:
> 
>   1. Re: [PATCH] add log -T option to display the message text
>      with human readable timestamp (Dave Anderson)
>   2. Re: [PATCH] add log -T option to display the message text
>      with human readable timestamp (Dave Anderson)
>   3. Re: [PATCH] add log -T option to display the    message    text
>      with human readable timestamp (Moore, Martin (Linux ERT))
> 
> 
> ----------------------------------------------------------------------
> 
> Message: 1
> Date: Sun, 19 Apr 2020 15:34:46 -0400 (EDT)
> From: Dave Anderson <anderson at redhat.com>
> To: Wang Long <w at laoqinren.net>
> Cc: crash-utility at redhat.com
> Subject: Re: [Crash-utility] [PATCH] add log -T option to display the
>    message text with human readable timestamp
> Message-ID:
>    <116726603.23908736.1587324886732.JavaMail.zimbra at redhat.com>
> Content-Type: text/plain; charset=utf-8
> 
> 
> 
> ----- Original Message -----
>> Sometimes, we need to know the accurate time of the log, which
>> helps us analyze the problem.
>> 
>> add -T option(like dmesg -T command) for log command to display
>> the message text with human readable timestamp.
>> 
>> Signed-off-by: Wang Long <w at laoqinren.net>
> 
> Did you attempt this patch on a live system?  Because your patch to 
> kernel_init() hangs the session.  I didn't bother to investigate beyond
> adding these two debug statements around your addition to kernel_init():
> 
>  error(INFO, "start patch...\n");
>          get_uptime(NULL, &uptime_jiffies);
>          uptime_sec = (uptime_jiffies)/(ulonglong)machdep->hz;
>          kt->boot_date.tv_sec = kt->date.tv_sec - uptime_sec;
>          kt->boot_date.tv_nsec = 0;
>  error(INFO, "end patch...\n");
> 
> And that's where it hangs:
> 
>  $ ./crash
> 
>  crash 7.2.9rc13
>  Copyright (C) 2002-2020  Red Hat, Inc.
>  Copyright (C) 2004, 2005, 2006, 2010  IBM Corporation
>  Copyright (C) 1999-2006  Hewlett-Packard Co
>  Copyright (C) 2005, 2006, 2011, 2012  Fujitsu Limited
>  Copyright (C) 2006, 2007  VA Linux Systems Japan K.K.
>  Copyright (C) 2005, 2011  NEC Corporation
>  Copyright (C) 1999, 2002, 2007  Silicon Graphics, Inc.
>  Copyright (C) 1999, 2000, 2001, 2002  Mission Critical Linux, Inc.
>  This program is free software, covered by the GNU General Public License,
>  and you are welcome to change it and/or distribute copies of it under
>  certain conditions.  Enter "help copying" to see the conditions.
>  This program has absolutely no warranty.  Enter "help warranty" for details.
> 
>  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"...
> 
>  WARNING: kernel relocated [796MB]: patching 85687 gdb minimal_symbol values
> 
>  crash: start patch...                                                  
> 
>  <hang>
> 
> And it shows a cpu spinning at 100%:
> 
>  $ top
>  top - 15:26:43 up 38 days,  3:41,  5 users,  load average: 1.00, 0.89, 0.65
>  Tasks: 280 total,   2 running, 278 sleeping,   0 stopped,   0 zombie
>  %Cpu(s):  3.9 us,  8.7 sy,  0.0 ni, 87.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
>  KiB Mem : 15907600 total,   455876 free,  1232832 used, 14218892 buff/cache
>  KiB Swap:  8060924 total,  7395580 free,   665344 used. 14176220 avail Mem 
>    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
>  26668 root      20   0  350268 213688   5680 R 100.0  1.3   5:42.70 crash
>   1707 root      20   0  115692   1184    688 S   0.3  0.0   2:16.52 ksmtuned
>  12852 anderson  20   0 4235240 274608  20320 S   0.3  1.7 601:46.85 gnome-shell
>  13060 anderson  20   0  804924  14100   3744 S   0.3  0.1 118:44.59 gsd-color
>  27045 anderson  20   0  172452   2532   1648 R   0.3  0.0   0:00.08 top
>      1 root      20   0  210504   5592   3224 S   0.0  0.0  18:14.19 systemd
>  ...
> 
> I'll let you figure it out...
> 
> Dave
> 
> 
> 
> 
> 
> 
>> ---
>> defs.h   |  2 ++
>> help.c   | 28 +++++++++++++++++++++++++++-
>> kernel.c | 22 ++++++++++++++++++++--
>> 3 files changed, 49 insertions(+), 3 deletions(-)
>> 
>> diff --git a/defs.h b/defs.h
>> index d8eda5e..1644dbd 100644
>> --- a/defs.h/
>> +++ b/defs.h
>> @@ -689,6 +689,7 @@ struct kernel_table {                   /* kernel data */
>>         ulong kernel_module;
>>    int mods_installed;
>>    struct timespec date;
>> +    struct timespec boot_date;
>>    char proc_version[BUFSIZE];
>>    struct new_utsname utsname;
>>    uint kernel_version[3];
>> @@ -5577,6 +5578,7 @@ void dump_log(int);
>> #define SHOW_LOG_DICT  (0x2)
>> #define SHOW_LOG_TEXT  (0x4)
>> #define SHOW_LOG_AUDIT (0x8)
>> +#define SHOW_LOG_CTIME (0x10)
>> void set_cpu(int);
>> void clear_machdep_cache(void);
>> struct stack_hook *gather_text_list(struct bt_info *);
>> diff --git a/help.c b/help.c
>> index c443cad..1ee70f7 100644
>> --- a/help.c
>> +++ b/help.c
>> @@ -3892,12 +3892,13 @@ NULL
>> char *help_log[] = {
>> "log",
>> "dump system message buffer",
>> -"[-tdma]",
>> +"[-Ttdma]",
>> "  This command dumps the kernel log_buf contents in chronological order.
>> The",
>> "  command supports the older log_buf formats, which may or may not contain
>> a",
>> "  timestamp inserted prior to each message, as well as the newer
>> variable-length",
>> "  record format, where the timestamp is contained in each log entry's
>> header.",
>> "  ",/
>> +"    -T  Display the message text with human readable timestamp.",
>> "    -t  Display the message text without the timestamp; only applicable to
>> the",
>> "        variable-length record format.",
>> "    -d  Display the dictionary of key/value pair properties that are
>> optionally",
>> @@ -4031,6 +4032,31 @@ char *help_log[] = {
>> "    type=1307 audit(1489384479.809:4346):  cwd=\"/proc\"",
>> "    ...",
>> " ",
>> +"  Display the message text with human readable timestamp.\n"
>> +"    %s> log -T",
>> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem
>> 0x0000000000000000-0x000000000009fbff] usable",
>> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem
>> 0x000000000009fc00-0x000000000009ffff] reserved",
>> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem
>> 0x00000000000f0000-0x00000000000fffff] reserved",
>> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem
>> 0x0000000000100000-0x00000000dffeffff] usable",
>> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem
>> 0x00000000dfff0000-0x00000000dfffffff] ACPI data",
>> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem
>> 0x00000000fec00000-0x00000000fec00fff] reserved",
>> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem
>> 0x00000000fee00000-0x00000000fee00fff] reserved",
>> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem
>> 0x00000000fffc0000-0x00000000ffffffff] reserved",
>> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem
>> 0x0000000100000000-0x000000011fffffff] usable",
>> +"    [Sat Apr  4 07:41:09 2020] NX (Execute Disable) protection: active",
>> +"    [Sat Apr  4 07:41:09 2020] SMBIOS 2.5 present.",
>> +"    [Sat Apr  4 07:41:09 2020] DMI: innotek GmbH VirtualBox/VirtualBox,
>> BIOS VirtualBox 12/01/2006",
>> +"    [Sat Apr  4 07:41:09 2020] Hypervisor detected: KVM",
>> +"    [Sat Apr  4 07:41:09 2020] kvm-clock: Using msrs 4b564d01 and
>> 4b564d00",
>> +"    [Sat Apr  4 07:41:09 2020] kvm-clock: cpu 0, msr 6de01001, primary cpu
>> clock",
>> +"    [Sat Apr  4 07:41:09 2020] kvm-clock: using sched offset of 11838753697
>> cycles",
>> +"    [Sat Apr  4 07:41:09 2020] clocksource: kvm-clock: mask:
>> 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns",
>> +"    [Sat Apr  4 07:41:09 2020] e820: update [mem 0x00000000-0x00000fff]
>> usable ==> reserved",
>> +"    [Sat Apr  4 07:41:09 2020] e820: remove [mem 0x000a0000-0x000fffff]
>> usable",
>> +"    [Sat Apr  4 07:41:09 2020] last_pfn = 0x120000 max_arch_pfn =
>> 0x400000000",
>> +"    [Sat Apr  4 07:41:09 2020] MTRR default type: uncachable",
>> +"    [Sat Apr  4 07:41:09 2020] MTRR variable ranges disabled:",
>> +"    ...",/
>> NULL
>> };
>> 
>> diff --git a/kernel.c b/kernel.c
>> index 7604fac..016d8d9 100644
>> --- a/kernel.c
>> +++ b/kernel.c
>> @@ -111,6 +111,8 @@ kernel_init()
>>    char *irq_desc_type_name;
>>    ulong pv_init_ops;/
>>    struct gnu_request req;
>> +    ulonglong uptime_jiffies;
>> +    ulong  uptime_sec;
>> 
>>    if (pc->flags & KERNEL_DEBUG_QUERY)
>>        return;
>> @@ -294,6 +296,14 @@ kernel_init()
>>    } else
>>        error(INFO, "cannot determine base kernel version\n");
>> 
>> +    get_uptime(NULL, &uptime_jiffies);
>> +    uptime_sec = (uptime_jiffies)/(ulonglong)machdep->hz;
>> +    kt->boot_date.tv_sec = kt->date.tv_sec - uptime_sec;
>> +    kt->boot_date.tv_nsec = 0;
>> +
>> +    if (CRASHDEBUG(1))
>> +        fprintf(fp, "boot_date: %lx: %s\n",
>> +            kt->boot_date.tv_sec, strip_linefeeds(ctime(&kt->boot_date.tv_sec)));
>> 
>>    verify_version();
>> 
>> @@ -4912,9 +4922,12 @@ cmd_log(void)
>> 
>>    msg_flags = 0;
>> 
>> -        while ((c = getopt(argcnt, args, "tdma")) != EOF) {
>> +        while ((c = getopt(argcnt, args, "Ttdma")) != EOF) {
>>                 switch(c)
>>                 {
>> +        case 'T':
>> +            msg_flags |= SHOW_LOG_CTIME;
>> +            break;
>>        case 't':
>>            msg_flags |= SHOW_LOG_TEXT;
>>            break;
>> @@ -5154,7 +5167,12 @@ dump_log_entry(char *logptr, int msg_flags)
>>    if ((msg_flags & SHOW_LOG_TEXT) == 0) {
>>        nanos = (ulonglong)ts_nsec / (ulonglong)1000000000;
>>        rem = (ulonglong)ts_nsec % (ulonglong)1000000000;
>> -        sprintf(buf, "[%5lld.%06ld] ", nanos, rem/1000);
>> +        if (msg_flags & SHOW_LOG_CTIME) {
>> +            time_t t = kt->boot_date.tv_sec + nanos;
>> +            sprintf(buf, "[%s] ", strip_linefeeds(ctime(&t)));
>> +        }
>> +        else
>> +            sprintf(buf, "[%5lld.%06ld] ", nanos, rem/1000);
>>        ilen = strlen(buf);
>>        fprintf(fp, "%s", buf);
>>    }
>> --
>> 1.8.3.1
>> 
>> 
>> 
>> 
> 
> 
> 
> ------------------------------
> 
> Message: 2
> Date: Sun, 19 Apr 2020 15:48:55 -0400 (EDT)
> From: Dave Anderson <anderson at redhat.com>
> To: "Discussion list for crash utility usage,    maintenance and
>    development" <crash-utility at redhat.com>
> Subject: Re: [Crash-utility] [PATCH] add log -T option to display the
>    message text with human readable timestamp
> Message-ID:
>    <2105444223.23908999.1587325735354.JavaMail.zimbra at redhat.com>
> Content-Type: text/plain; charset=utf-8
> 
> 
> FWIW, I tried it on another RHEL7 machine running live,
> but then also on a RHEL8 kernel dumpfile, and they all hang:
> 
>  $ crash vmlinux vmcore
> 
>  crash 7.2.9rc13
>  Copyright (C) 2002-2020  Red Hat, Inc.
>  Copyright (C) 2004, 2005, 2006, 2010  IBM Corporation
>  Copyright (C) 1999-2006  Hewlett-Packard Co
>  Copyright (C) 2005, 2006, 2011, 2012  Fujitsu Limited
>  Copyright (C) 2006, 2007  VA Linux Systems Japan K.K.
>  Copyright (C) 2005, 2011  NEC Corporation
>  Copyright (C) 1999, 2002, 2007  Silicon Graphics, Inc.
>  Copyright (C) 1999, 2000, 2001, 2002  Mission Critical Linux, Inc.
>  This program is free software, covered by the GNU General Public License,
>  and you are welcome to change it and/or distribute copies of it under
>  certain conditions.  Enter "help copying" to see the conditions.
>  This program has absolutely no warranty.  Enter "help warranty" for details.
> 
>  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"...
> 
>  WARNING: kernel relocated [950MB]: patching 94929 gdb minimal_symbol values
> 
>  crash: start patch...                                                  
> 
> 
> 
> ----- Original Message -----
>> 
>> 
>> ----- Original Message -----
>>> Sometimes, we need to know the accurate time of the log, which
>>> helps us analyze the problem.
>>> 
>>> add -T option(like dmesg -T command) for log command to display
>>> the message text with human readable timestamp.
>>> 
>>> Signed-off-by: Wang Long <w at laoqinren.net>
>> 
>> Did you attempt this patch on a live system?  Because your patch to
>> kernel_init() hangs the session.  I didn't bother to investigate beyond
>> adding these two debug statements around your addition to kernel_init():
>> 
>>  error(INFO, "start patch...\n");
>>          get_uptime(NULL, &uptime_jiffies);
>>          uptime_sec = (uptime_jiffies)/(ulonglong)machdep->hz;
>>          kt->boot_date.tv_sec = kt->date.tv_sec - uptime_sec;
>>          kt->boot_date.tv_nsec = 0;
>>  error(INFO, "end patch...\n");
>> 
>> And that's where it hangs:
>> 
>>  $ ./crash
>> 
>>  crash 7.2.9rc13
>>  Copyright (C) 2002-2020  Red Hat, Inc.
>>  Copyright (C) 2004, 2005, 2006, 2010  IBM Corporation
>>  Copyright (C) 1999-2006  Hewlett-Packard Co
>>  Copyright (C) 2005, 2006, 2011, 2012  Fujitsu Limited
>>  Copyright (C) 2006, 2007  VA Linux Systems Japan K.K.
>>  Copyright (C) 2005, 2011  NEC Corporation
>>  Copyright (C) 1999, 2002, 2007  Silicon Graphics, Inc.
>>  Copyright (C) 1999, 2000, 2001, 2002  Mission Critical Linux, Inc.
>>  This program is free software, covered by the GNU General Public License,
>>  and you are welcome to change it and/or distribute copies of it under
>>  certain conditions.  Enter "help copying" to see the conditions.
>>  This program has absolutely no warranty.  Enter "help warranty" for
>>  details.
>> 
>>  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"...
>> 
>>  WARNING: kernel relocated [796MB]: patching 85687 gdb minimal_symbol values
>> 
>>  crash: start patch...
>> 
>>  <hang>
>> 
>> And it shows a cpu spinning at 100%:
>> 
>>  $ top
>>  top - 15:26:43 up 38 days,  3:41,  5 users,  load average: 1.00, 0.89, 0.65
>>  Tasks: 280 total,   2 running, 278 sleeping,   0 stopped,   0 zombie
>>  %Cpu(s):  3.9 us,  8.7 sy,  0.0 ni, 87.3 id,  0.0 wa,  0.0 hi,  0.0 si,
>>  0.0 st
>>  KiB Mem : 15907600 total,   455876 free,  1232832 used, 14218892 buff/cache
>>  KiB Swap:  8060924 total,  7395580 free,   665344 used. 14176220 avail Mem
>>    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
>>  26668 root      20   0  350268 213688   5680 R 100.0  1.3   5:42.70 crash
>>   1707 root      20   0  115692   1184    688 S   0.3  0.0   2:16.52
>>   ksmtuned
>>  12852 anderson  20   0 4235240 274608  20320 S   0.3  1.7 601:46.85
>>  gnome-shell
>>  13060 anderson  20   0  804924  14100   3744 S   0.3  0.1 118:44.59
>>  gsd-color
>>  27045 anderson  20   0  172452   2532   1648 R   0.3  0.0   0:00.08 top
>>      1 root      20   0  210504   5592   3224 S   0.0  0.0  18:14.19 systemd
>>  ...
>> 
>> I'll let you figure it out...
>> 
>> Dave
>> 
>> 
>> 
>> 
>> 
>> 
>>> ---
>>> defs.h   |  2 ++
>>> help.c   | 28 +++++++++++++++++++++++++++-
>>> kernel.c | 22 ++++++++++++++++++++--
>>> 3 files changed, 49 insertions(+), 3 deletions(-)
>>> 
>>> diff --git a/defs.h b/defs.h
>>> index d8eda5e..1644dbd 100644
>>> --- a/defs.h/
>>> +++ b/defs.h
>>> @@ -689,6 +689,7 @@ struct kernel_table {                   /* kernel data
>>> */
>>>         ulong kernel_module;
>>>    int mods_installed;
>>>    struct timespec date;
>>> +    struct timespec boot_date;
>>>    char proc_version[BUFSIZE];
>>>    struct new_utsname utsname;
>>>    uint kernel_version[3];
>>> @@ -5577,6 +5578,7 @@ void dump_log(int);
>>> #define SHOW_LOG_DICT  (0x2)
>>> #define SHOW_LOG_TEXT  (0x4)
>>> #define SHOW_LOG_AUDIT (0x8)
>>> +#define SHOW_LOG_CTIME (0x10)
>>> void set_cpu(int);
>>> void clear_machdep_cache(void);
>>> struct stack_hook *gather_text_list(struct bt_info *);
>>> diff --git a/help.c b/help.c
>>> index c443cad..1ee70f7 100644
>>> --- a/help.c
>>> +++ b/help.c
>>> @@ -3892,12 +3892,13 @@ NULL
>>> char *help_log[] = {
>>> "log",
>>> "dump system message buffer",
>>> -"[-tdma]",
>>> +"[-Ttdma]",
>>> "  This command dumps the kernel log_buf contents in chronological order.
>>> The",
>>> "  command supports the older log_buf formats, which may or may not
>>> contain
>>> a",
>>> "  timestamp inserted prior to each message, as well as the newer
>>> variable-length",
>>> "  record format, where the timestamp is contained in each log entry's
>>> header.",
>>> "  ",/
>>> +"    -T  Display the message text with human readable timestamp.",
>>> "    -t  Display the message text without the timestamp; only applicable
>>> to
>>> the",
>>> "        variable-length record format.",
>>> "    -d  Display the dictionary of key/value pair properties that are
>>> optionally",
>>> @@ -4031,6 +4032,31 @@ char *help_log[] = {
>>> "    type=1307 audit(1489384479.809:4346):  cwd=\"/proc\"",
>>> "    ...",
>>> " ",
>>> +"  Display the message text with human readable timestamp.\n"
>>> +"    %s> log -T",
>>> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem
>>> 0x0000000000000000-0x000000000009fbff] usable",
>>> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem
>>> 0x000000000009fc00-0x000000000009ffff] reserved",
>>> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem
>>> 0x00000000000f0000-0x00000000000fffff] reserved",
>>> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem
>>> 0x0000000000100000-0x00000000dffeffff] usable",
>>> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem
>>> 0x00000000dfff0000-0x00000000dfffffff] ACPI data",
>>> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem
>>> 0x00000000fec00000-0x00000000fec00fff] reserved",
>>> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem
>>> 0x00000000fee00000-0x00000000fee00fff] reserved",
>>> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem
>>> 0x00000000fffc0000-0x00000000ffffffff] reserved",
>>> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem
>>> 0x0000000100000000-0x000000011fffffff] usable",
>>> +"    [Sat Apr  4 07:41:09 2020] NX (Execute Disable) protection: active",
>>> +"    [Sat Apr  4 07:41:09 2020] SMBIOS 2.5 present.",
>>> +"    [Sat Apr  4 07:41:09 2020] DMI: innotek GmbH VirtualBox/VirtualBox,
>>> BIOS VirtualBox 12/01/2006",
>>> +"    [Sat Apr  4 07:41:09 2020] Hypervisor detected: KVM",
>>> +"    [Sat Apr  4 07:41:09 2020] kvm-clock: Using msrs 4b564d01 and
>>> 4b564d00",
>>> +"    [Sat Apr  4 07:41:09 2020] kvm-clock: cpu 0, msr 6de01001, primary
>>> cpu
>>> clock",
>>> +"    [Sat Apr  4 07:41:09 2020] kvm-clock: using sched offset of
>>> 11838753697
>>> cycles",
>>> +"    [Sat Apr  4 07:41:09 2020] clocksource: kvm-clock: mask:
>>> 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483
>>> ns",
>>> +"    [Sat Apr  4 07:41:09 2020] e820: update [mem 0x00000000-0x00000fff]
>>> usable ==> reserved",
>>> +"    [Sat Apr  4 07:41:09 2020] e820: remove [mem 0x000a0000-0x000fffff]
>>> usable",
>>> +"    [Sat Apr  4 07:41:09 2020] last_pfn = 0x120000 max_arch_pfn =
>>> 0x400000000",
>>> +"    [Sat Apr  4 07:41:09 2020] MTRR default type: uncachable",
>>> +"    [Sat Apr  4 07:41:09 2020] MTRR variable ranges disabled:",
>>> +"    ...",/
>>> NULL
>>> };
>>> 
>>> diff --git a/kernel.c b/kernel.c
>>> index 7604fac..016d8d9 100644
>>> --- a/kernel.c
>>> +++ b/kernel.c
>>> @@ -111,6 +111,8 @@ kernel_init()
>>>    char *irq_desc_type_name;
>>>    ulong pv_init_ops;/
>>>    struct gnu_request req;
>>> +    ulonglong uptime_jiffies;
>>> +    ulong  uptime_sec;
>>> 
>>>    if (pc->flags & KERNEL_DEBUG_QUERY)
>>>        return;
>>> @@ -294,6 +296,14 @@ kernel_init()
>>>    } else
>>>        error(INFO, "cannot determine base kernel version\n");
>>> 
>>> +    get_uptime(NULL, &uptime_jiffies);
>>> +    uptime_sec = (uptime_jiffies)/(ulonglong)machdep->hz;
>>> +    kt->boot_date.tv_sec = kt->date.tv_sec - uptime_sec;
>>> +    kt->boot_date.tv_nsec = 0;
>>> +
>>> +    if (CRASHDEBUG(1))
>>> +        fprintf(fp, "boot_date: %lx: %s\n",
>>> +            kt->boot_date.tv_sec, strip_linefeeds(ctime(&kt->boot_date.tv_sec)));
>>> 
>>>    verify_version();
>>> 
>>> @@ -4912,9 +4922,12 @@ cmd_log(void)
>>> 
>>>    msg_flags = 0;
>>> 
>>> -        while ((c = getopt(argcnt, args, "tdma")) != EOF) {
>>> +        while ((c = getopt(argcnt, args, "Ttdma")) != EOF) {
>>>                 switch(c)
>>>                 {
>>> +        case 'T':
>>> +            msg_flags |= SHOW_LOG_CTIME;
>>> +            break;
>>>        case 't':
>>>            msg_flags |= SHOW_LOG_TEXT;
>>>            break;
>>> @@ -5154,7 +5167,12 @@ dump_log_entry(char *logptr, int msg_flags)
>>>    if ((msg_flags & SHOW_LOG_TEXT) == 0) {
>>>        nanos = (ulonglong)ts_nsec / (ulonglong)1000000000;
>>>        rem = (ulonglong)ts_nsec % (ulonglong)1000000000;
>>> -        sprintf(buf, "[%5lld.%06ld] ", nanos, rem/1000);
>>> +        if (msg_flags & SHOW_LOG_CTIME) {
>>> +            time_t t = kt->boot_date.tv_sec + nanos;
>>> +            sprintf(buf, "[%s] ", strip_linefeeds(ctime(&t)));
>>> +        }
>>> +        else
>>> +            sprintf(buf, "[%5lld.%06ld] ", nanos, rem/1000);
>>>        ilen = strlen(buf);
>>>        fprintf(fp, "%s", buf);
>>>    }
>>> --
>>> 1.8.3.1
>>> 
>>> 
>>> 
>>> 
>> 
>> --
>> Crash-utility mailing list
>> Crash-utility at redhat.com
>> https://www.redhat.com/mailman/listinfo/crash-utility
>> 
> 
> 
> 
> ------------------------------
> 
> Message: 3
> Date: Sun, 19 Apr 2020 20:01:12 +0000
> From: "Moore, Martin (Linux ERT)" <martin.moore at hpe.com>
> To: "Discussion list for crash utility usage,    maintenance and
>    development"    <crash-utility at redhat.com>, "anderson at redhat.com"
>    <anderson at redhat.com>
> Subject: Re: [Crash-utility] [PATCH] add log -T option to display the
>    message    text with human readable timestamp
> Message-ID:
>    <AT5PR8401MB05480CDBEEE71C6F900654B991D70 at AT5PR8401MB0548.NAMPRD84.PROD.OUTLOOK.COM>
>    
> Content-Type: text/plain; charset=WINDOWS-1252
> 
> Just to mention an alternative possibility, the pykdump extension to crash (https://sourceforge.net/projects/pykdump/) includes the 'tslog' command to accomplish this.
> 
> Martin Moore
> Linux Engineering Resolution Team
> HPE Pointnext Services
> Hewlett Packard Enterprise
> 
> Martin.Moore at hpe.com?
> 8AM-5PM EDT (GMT-4) Monday-Friday
> Manager: Becky McBride (becky.mcbride at hpe.com)
> 
> -----Original Message-----
> From: crash-utility-bounces at redhat.com <crash-utility-bounces at redhat.com> On Behalf Of Wang Long
> Sent: Saturday, April 18, 2020 10:21 PM
> To: anderson at redhat.com; crash-utility at redhat.com
> Subject: [Crash-utility] [PATCH] add log -T option to display the message text with human readable timestamp
> 
> Sometimes, we need to know the accurate time of the log, which helps us analyze the problem.
> 
> add -T option(like dmesg -T command) for log command to display the message text with human readable timestamp.
> 
> Signed-off-by: Wang Long <w at laoqinren.net>
> ---
> defs.h   |  2 ++
> help.c   | 28 +++++++++++++++++++++++++++-
> kernel.c | 22 ++++++++++++++++++++--
> 3 files changed, 49 insertions(+), 3 deletions(-)
> 
> diff --git a/defs.h b/defs.h
> index d8eda5e..1644dbd 100644
> --- a/defs.h
> +++ b/defs.h
> @@ -689,6 +689,7 @@ struct kernel_table {                   /* kernel data */
>         ulong kernel_module;
>    int mods_installed;
>    struct timespec date;
> +    struct timespec boot_date;
>    char proc_version[BUFSIZE];
>    struct new_utsname utsname;
>    uint kernel_version[3];
> @@ -5577,6 +5578,7 @@ void dump_log(int);  #define SHOW_LOG_DICT  (0x2)  #define SHOW_LOG_TEXT  (0x4)  #define SHOW_LOG_AUDIT (0x8)
> +#define SHOW_LOG_CTIME (0x10)
> void set_cpu(int);
> void clear_machdep_cache(void);
> struct stack_hook *gather_text_list(struct bt_info *); diff --git a/help.c b/help.c index c443cad..1ee70f7 100644
> --- a/help.c
> +++ b/help.c
> @@ -3892,12 +3892,13 @@ NULL
> char *help_log[] = {
> "log",
> "dump system message buffer",
> -"[-tdma]",
> +"[-Ttdma]",
> "  This command dumps the kernel log_buf contents in chronological order.  The",  "  command supports the older log_buf formats, which may or may not contain a",  "  timestamp inserted prior to each message, as well as the newer variable-length",  "  record format, where the timestamp is contained in each log entry's header.",  "  ",
> +"    -T  Display the message text with human readable timestamp.",
> "    -t  Display the message text without the timestamp; only applicable to the",
> "        variable-length record format.",
> "    -d  Display the dictionary of key/value pair properties that are optionally",
> @@ -4031,6 +4032,31 @@ char *help_log[] = {
> "    type=1307 audit(1489384479.809:4346):  cwd=\"/proc\"",
> "    ...",
> " ",
> +"  Display the message text with human readable timestamp.\n"
> +"    %s> log -T",
> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable",
> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved",
> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved",
> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem 0x0000000000100000-0x00000000dffeffff] usable",
> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem 0x00000000dfff0000-0x00000000dfffffff] ACPI data",
> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem 0x00000000fec00000-0x00000000fec00fff] reserved",
> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem 0x00000000fee00000-0x00000000fee00fff] reserved",
> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved",
> +"    [Sat Apr  4 07:41:09 2020] BIOS-e820: [mem 0x0000000100000000-0x000000011fffffff] usable",
> +"    [Sat Apr  4 07:41:09 2020] NX (Execute Disable) protection: active",
> +"    [Sat Apr  4 07:41:09 2020] SMBIOS 2.5 present.",
> +"    [Sat Apr  4 07:41:09 2020] DMI: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006",
> +"    [Sat Apr  4 07:41:09 2020] Hypervisor detected: KVM",
> +"    [Sat Apr  4 07:41:09 2020] kvm-clock: Using msrs 4b564d01 and 4b564d00",
> +"    [Sat Apr  4 07:41:09 2020] kvm-clock: cpu 0, msr 6de01001, primary cpu clock",
> +"    [Sat Apr  4 07:41:09 2020] kvm-clock: using sched offset of 11838753697 cycles",
> +"    [Sat Apr  4 07:41:09 2020] clocksource: kvm-clock: mask: 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns",
> +"    [Sat Apr  4 07:41:09 2020] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved",
> +"    [Sat Apr  4 07:41:09 2020] e820: remove [mem 0x000a0000-0x000fffff] usable",
> +"    [Sat Apr  4 07:41:09 2020] last_pfn = 0x120000 max_arch_pfn = 0x400000000",
> +"    [Sat Apr  4 07:41:09 2020] MTRR default type: uncachable",
> +"    [Sat Apr  4 07:41:09 2020] MTRR variable ranges disabled:",
> +"    ...",
> NULL               
> };
> 
> diff --git a/kernel.c b/kernel.c
> index 7604fac..016d8d9 100644
> --- a/kernel.c
> +++ b/kernel.c
> @@ -111,6 +111,8 @@ kernel_init()
>    char *irq_desc_type_name;    
>    ulong pv_init_ops;
>    struct gnu_request req;
> +    ulonglong uptime_jiffies;
> +    ulong  uptime_sec;
> 
>    if (pc->flags & KERNEL_DEBUG_QUERY)
>        return;
> @@ -294,6 +296,14 @@ kernel_init()
>    } else
>        error(INFO, "cannot determine base kernel version\n");
> 
> +    get_uptime(NULL, &uptime_jiffies);
> +    uptime_sec = (uptime_jiffies)/(ulonglong)machdep->hz;
> +    kt->boot_date.tv_sec = kt->date.tv_sec - uptime_sec;
> +    kt->boot_date.tv_nsec = 0;
> +
> +    if (CRASHDEBUG(1))
> +        fprintf(fp, "boot_date: %lx: %s\n",
> +            kt->boot_date.tv_sec, 
> +strip_linefeeds(ctime(&kt->boot_date.tv_sec)));
> 
>    verify_version();
> 
> @@ -4912,9 +4922,12 @@ cmd_log(void)
> 
>    msg_flags = 0;
> 
> -        while ((c = getopt(argcnt, args, "tdma")) != EOF) {
> +        while ((c = getopt(argcnt, args, "Ttdma")) != EOF) {
>                 switch(c)
>                 {
> +        case 'T':
> +            msg_flags |= SHOW_LOG_CTIME;
> +            break;
>        case 't':
>            msg_flags |= SHOW_LOG_TEXT;
>            break;
> @@ -5154,7 +5167,12 @@ dump_log_entry(char *logptr, int msg_flags)
>    if ((msg_flags & SHOW_LOG_TEXT) == 0) {
>        nanos = (ulonglong)ts_nsec / (ulonglong)1000000000;
>        rem = (ulonglong)ts_nsec % (ulonglong)1000000000;
> -        sprintf(buf, "[%5lld.%06ld] ", nanos, rem/1000);
> +        if (msg_flags & SHOW_LOG_CTIME) {
> +            time_t t = kt->boot_date.tv_sec + nanos;
> +            sprintf(buf, "[%s] ", strip_linefeeds(ctime(&t)));
> +        }
> +        else
> +            sprintf(buf, "[%5lld.%06ld] ", nanos, rem/1000);
>        ilen = strlen(buf);
>        fprintf(fp, "%s", buf);
>    }
> --
> 1.8.3.1
> 
> 
> 
> 
> --
> Crash-utility mailing list
> Crash-utility at redhat.com
> https://www.redhat.com/mailman/listinfo/crash-utility
> 
> 
> 
> 
> ------------------------------
> 
> --
> Crash-utility mailing list
> Crash-utility at redhat.com
> https://www.redhat.com/mailman/listinfo/crash-utility
> 
> End of Crash-utility Digest, Vol 175, Issue 27
> **********************************************
> 





More information about the Crash-utility mailing list