[PATCH] makedumpfile tries to output infinite ETA

Masaki Tachibana mas-tachibana at vf.jp.nec.com
Thu Jun 14 02:42:06 PDT 2018


Hi Michael,

Thank you very much for your comment.
Certainly makedumpfile can print an invalid value at the progress bar.
Well, this problem was also argued in other mails, and Petr Tesarik posted the patch.
I'll merge the v2 patch into v1.6.4.
We are debugging V1.6.4 now and planning to release it within a month.

http://lists.infradead.org/pipermail/kexec/2018-March/020139.html
http://lists.infradead.org/pipermail/kexec/2018-April/020426.html
http://lists.infradead.org/pipermail/kexec/2018-April/020436.html

Thanks,
Tachibana

> -----Original Message-----
> From: kexec [mailto:kexec-bounces at lists.infradead.org] On Behalf Of Michael Breen
> Sent: Wednesday, June 13, 2018 5:06 PM
> To: kexec at lists.infradead.org
> Subject: Re: [PATCH] makedumpfile tries to output infinite ETA
> 
> makedumpfile-1.6.3
> 
> At the beginning of writing the dumpfile, print_progress can attempt
> to output a progress line like
> 
> Copying data                    : [  0.0 %] -  eta: -2147483648s
> 
> This happens because the ETA can evaluate as infinity when there has
> not yet been any progress: the number it is trying to output is the
> result of casting an infinite float to an int, which is undefined,
> i.e., compiler-dependent. Where it has not been possible to calculate
> a sensible ETA, no attempt should be made to output one.
> 
> More seriously in this case, combined with "eta: ", this length
> exceeds the remaining characters of the buffer into which it is
> writing (eta_msg).
> 
> This code executes even if the progress output is disabled, so there
> is no workaround not involving a code change.
> 
> (While not an immediate issue, there are also some type discrepancies,
> e.g., print_progress takes unsigned longs but is passed mdf_pfn_t
> which is unsigned long long.)
> 
> A minimal, tested fix is:
> 
> --- makedumpfile-1.6.3.org/print_info.c    2018-01-26 01:30:25.000000000 +0000
> +++ makedumpfile-1.6.3/print_info.c    2018-06-11 14:44:48.111182518 +0100
> @@ -16,6 +16,7 @@
>  #include "print_info.h"
>  #include <time.h>
>  #include <string.h>
> +#include <math.h>
> 
>  #define PROGRESS_MAXLEN        "50"
> 
> @@ -395,7 +396,8 @@ print_progress(const char *msg, unsigned
>          calc_delta(start, &delta);
>          eta = delta.tv_sec + delta.tv_usec / 1e6;
>          eta = (100 - progress) * eta / progress;
> -        eta_to_human_short(eta, eta_msg);
> +        if (isfinite(eta))
> +            eta_to_human_short(eta, eta_msg);
>      }
>      if (flag_ignore_r_char) {
>          PROGRESS_MSG("%-" PROGRESS_MAXLEN "s: [%5.1f %%] %c  %16s\n",
> 
> --
> CONFIDENTIALITY
> This e-mail message and any attachments thereto, is
> intended only for use by the addressee(s) named herein and may contain
> legally privileged and/or confidential information. If you are not the
> intended recipient of this e-mail message, you are hereby notified that any
> dissemination, distribution or copying of this e-mail message, and any
> attachments thereto, is strictly prohibited. If you have received this
> e-mail message in error, please immediately notify the sender and
> permanently delete the original and any copies of this email and any prints
> thereof.
> ABSENT AN EXPRESS STATEMENT TO THE CONTRARY HEREINABOVE, THIS
> E-MAIL IS NOT INTENDED AS A SUBSTITUTE FOR A WRITING. Notwithstanding the
> Uniform Electronic Transactions Act or the applicability of any other law
> of similar substance and effect, absent an express statement to the
> contrary hereinabove, this e-mail message its contents, and any attachments
> hereto are not intended to represent an offer or acceptance to enter into a
> contract and are not otherwise intended to bind the sender, MPSTOR, or any
> other person or entity.
> 
> _______________________________________________
> kexec mailing list
> kexec at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec





More information about the kexec mailing list