Control: severity -1 important

Hi there,

On Saturday, June 01 2019, Steve McIntyre wrote:

> On Wed, May 29, 2019 at 04:30:05PM +0200, Lucas Nussbaum wrote:
>>Hi,
>>
>>During a rebuild of all packages in buster (in a buster chroot, not a
>>sid chroot), your package failed to build on amd64.
>
> Hmmm, that's odd. I've just built the current package in fresh amd64
> and i386 chroots here, with no errors.

I can also confirm building strace on a fresh sid chroot without errors.

> Checking your log, the /dev/kvm error is not fatal and some tests are
> skipped without KVM access.

Also confirming this.

> The actual failures that you're seeing are from 4 stat functions,
> reported several times due to the build setup:
>
> $ grep ^FAIL: strace_4.26-0.2_testing.log  | less
> FAIL: lstat.gen.test
> FAIL: stat.gen.test
> FAIL: lstat.gen.test
> FAIL: trace_lstat.gen.test
> FAIL: stat.gen.test
> FAIL: trace_stat.gen.test
> FAIL: trace_lstat.gen.test
> FAIL: trace_stat.gen.test
> FAIL: lstat.gen
> FAIL: stat.gen
> FAIL: trace_lstat.gen
> FAIL: trace_stat.gen
> FAIL: lstat.gen
> FAIL: stat.gen
> FAIL: trace_lstat.gen
> FAIL: trace_stat.gen
>
> so I've updated the bug title. Checking the log for more details, I'm
> just seeing what *looks* like whitespace differences in the test
> output. But I don't see it here on my system, which is surprising. Is
> there anything at all special about your test setup that I should ba
> aware of? I'm pondering if there's maybe a locale setup difference or
> something, but that's just a guess OTTOMH...!

Yeah, I agree with Steve here; these failures seem strange, but they are
the apparent result of whitespace differences, and not real failures.
For example:

  -lstat("/dev/full", 0xf7544fc0) = -1 EOVERFLOW (Value too large for defined 
data type)
  +lstat("/dev/full", 0xf7544fc0)  = -1 EOVERFLOW (Value too large for defined 
data type)

I spent some time looking into how strace prints these lines, and found
that there is a specific function responsible for calculating the amount
of whitespace that should go between the close parenthesis and the equal
sign (on strace.c):

  void
  tabto(void)
  {
          if (current_tcp->curcol < acolumn)
                  tprints(acolumn_spaces + current_tcp->curcol);
  }

Here, "acolumn" is 40 (this value actually comes from a define in
defs.h, "DEFAULT_ACOLUMN"), and "tprints" actually calls
"fputs_unlocked", which is thread-unsafe according to its manpage.  Not
that it matters much, since strace is single-threaded, but these are the
data points I gathered so far.

These functions don't seem to be affected by locale.  I also noticed
that the test is actually comparing the output of "./lstat", which uses
a static way to generate the syscall information lines (i.e., it doesn't
have any mechanism for dynamically generating whitespaces according to
the number of columns printed -- take a look at tests/{xstatx,lstatx}.c
for more info), against the output generated by the compiled strace
binary, which, as stated above, is much more dynamic when printing
whitespaces.  It seems to me that the testcase(s) should be adjusted to
account for possible differences in whitespace.

Having said all that, I believe this bug's severity should be reduced
from "serious" to (at most) "important", at least until Lucas can
provide more information about it.  I've taken the liberty to do that;
feel free to bump it back to "serious" if needed, of course.

Thanks,

-- 
Sergio
GPG key ID: 237A 54B1 0287 28BF 00EF  31F4 D0EB 7628 65FC 5E36
Please send encrypted e-mail if possible
http://sergiodj.net/

Attachment: signature.asc
Description: PGP signature

Reply via email to