Perl / perl5

🐪 The Perl programming language
https://dev.perl.org/perl5/
Other
1.9k stars 538 forks source link

Test failures on DragonflyBSD #12793

Closed p5pRT closed 11 years ago

p5pRT commented 11 years ago

Migrated from rt.perl.org#116851 (status was 'resolved')

Searchable as RT116851$

p5pRT commented 11 years ago

From @bingos

Created by @bingos

The following tests fail on DragonflyBSD​:

Test Summary Report ------------------- ../lib/File/Copy.t (Wstat​: 20224 Tests​: 84 Failed​: 0)   Non-zero exit status​: 79   Parse errors​: Bad plan. You planned 465 tests but ran 84. ../lib/filetest.t (Wstat​: 512 Tests​: 15 Failed​: 2)   Failed tests​: 12-13   Non-zero exit status​: 2 Files=2382\, Tests=619227\, 1302 wallclock secs (81.26 usr 67.84 sys + 582.18 cusr 491.78 csys = 1223.06 CPU) Result​: FAIL

Further detail from running the tests under harness​:

$ ./perl harness -v ../lib/File/Copy.t Inappropriate file type or format​: file-31740 => 2777 at ../lib/File/Copy.t line 339. # Looks like you planned 465 tests but ran 84. # Looks like your test exited with 79 just after 84. ../lib/File/Copy.t .. 1..465 ok 1 - 'copy()' is a usage error ok 2 - 'copy('arg')' is a usage error ok 3 - 'copy('arg'\, 'arg'\, 'arg'\, 'arg')' is a usage error ok 4 - 'move()' is a usage error ok 5 - 'move('arg')' is a usage error ok 6 - 'move('arg'\, 'arg'\, 'arg')' is a usage error ok 7 - copy(fn\, fn)​: files of the same size ok 8 - copy(fn\, fn)​: same contents # next test checks copying to STDOUT ok ok 10 - copy(*F\, fn)​: same contents ok 11 - copy(\*F\, fn)​: same contents ok 12 - copy(fn\, io)​: same contents ok 13 - copy(fn\, fh)​: same contents ok 14 - move on missing file ok 15 - target still there ok 16 - move ok 17 - destination exists ok 18 - source does not ok 19 - contents preserved ok 20 - mtime preserved by copy() ok 21 - copy(fn\, dir)​: same contents ok 22 - copy over the same file works ok 23 - copy to itself fails ok 24 - but warns ok 25 - contents preserved ok 26 - move(fn\, dir)​: same contents ok 27 - file moved indeed ok 28 - copy to itself (via symlink) fails ok 29 - emits a warning ok 30 - rt.perl.org 5196​: copying to itself would truncate the file ok 31 - copy to itself (via hardlink) fails ok 32 - emits a warning ok 33 - rt.perl.org 5196​: copying to itself would truncate the file ok 34 - a bad buffer size fails to copy ok 35 - with a helpful error message ok 36 - There is 1 warning ok 37 - but does not truncate the destination ok 38 - nor change the destination's contents ok 39 - copy with leading whitespace ok 40 - copy(fn\, fn)​: files of the same size ok 41 - copy(fn\, fn)​: same contents # next test checks copying to STDOUT ok ok 43 - copy(*F\, fn)​: same contents ok 44 - copy(\*F\, fn)​: same contents ok 45 - copy(fn\, io)​: same contents ok 46 - copy(fn\, fh)​: same contents ok 47 - move on missing file ok 48 - target still there ok 49 - move ok 50 - destination exists ok 51 - source does not ok 52 - contents preserved ok 53 - mtime preserved by copy() while testing cross-partition ok 54 - copy(fn\, dir)​: same contents ok 55 - copy over the same file works ok 56 - copy to itself fails ok 57 - but warns ok 58 - contents preserved ok 59 - move(fn\, dir)​: same contents ok 60 - file moved indeed ok 61 - copy to itself (via symlink) fails ok 62 - emits a warning ok 63 - rt.perl.org 5196​: copying to itself would truncate the file ok 64 - copy to itself (via hardlink) fails ok 65 - emits a warning ok 66 - rt.perl.org 5196​: copying to itself would truncate the file ok 67 - a bad buffer size fails to copy ok 68 - with a helpful error message ok 69 - There is 1 warning ok 70 - but does not truncate the destination ok 71 - nor change the destination's contents ok 72 - copy with leading whitespace ok 73 - Permission bits set correctly ok 74 - Permission bits set correctly ok 75 - Permission bits set correctly ok 76 - Permission bits set correctly ok 77 - Permission bits not modified ok 78 - Permission bits not modified ok 79 - Permission bits set correctly ok 80 - Permission bits set correctly ok 81 - Permission bits set correctly ok 82 - Permission bits set correctly ok 83 - Permission bits not modified ok 84 - Permission bits not modified Dubious\, test returned 79 (wstat 20224\, 0x4f00) Failed 381/465 subtests

Test Summary Report ------------------- ../lib/File/Copy.t (Wstat​: 20224 Tests​: 84 Failed​: 0)   Non-zero exit status​: 79   Parse errors​: Bad plan. You planned 465 tests but ran 84. Files=1\, Tests=84\, 0 wallclock secs ( 0.02 usr 0.02 sys + 0.09 cusr 0.05 csys = 0.17 CPU) Result​: FAIL

$ ./perl harness -v ../lib/filetest.t # Failed test 'filetest.tst should not be recognized as writable' # at ../lib/filetest.t line 80. # got​: '1' # expected​: undef

# Failed test 'filetest.tst should not be recognized as writable' # at ../lib/filetest.t line 82. # got​: '1' # expected​: undef # Looks like you failed 2 tests of 15. ../lib/filetest.t .. 1..15 ok 1 - required pragma successfully ok 2 - filetest dies with bad subpragma on import ok 3 - hint bits not set without pragma in place ok 4 - use filetest; ok 5 - hint bits set with pragma loaded ok 6 - hint bits not set with pragma unimported ok 7 - filetest dies without subpragma on unimport ok 8 - filetest dies with bad subpragma on unuse ok 9 - filetest dies with bad subpragma on use ok 10 - filetest dies with missing subpragma on use ok 11 - filetest dies with missing subpragma on unuse not ok 12 - filetest.tst should not be recognized as writable not ok 13 - filetest.tst should not be recognized as writable ok 14 - filetest.tst should be recognized as writable ok 15 - filetest.tst should be recognized as writable Dubious\, test returned 2 (wstat 512\, 0x200) Failed 2/15 subtests

Test Summary Report ------------------- ../lib/filetest.t (Wstat​: 512 Tests​: 15 Failed​: 2)   Failed tests​: 12-13   Non-zero exit status​: 2 Files=1\, Tests=15\, 0 wallclock secs ( 0.00 usr 0.02 sys + 0.03 cusr 0.03 csys = 0.09 CPU) Result​: FAIL

Perl Info ``` Flags: category=core severity=low Site configuration information for perl 5.17.9: Configured by bingos at Tue Feb 19 08:55:24 GMT 2013. Summary of my perl5 (revision 5 version 17 subversion 9) configuration: Commit id: cff517f58dd82d18e36fcb75e3263c76b73e0f13 Platform: osname=dragonfly, osvers=3.2-release, archname=x86_64-dragonfly-thread-multi uname='dragonfly daytona.bingosnet.co.uk 3.2-release dragonfly v3.2.2-release #0: sun dec 16 13:26:10 pst 2012 root@pkgbox64.dragonflybsd.org:usrobjbuildhomejustinsrcsysx86_64_generic x86_64 ' config_args='-des -Dusedevel -Dusethreads' hint=recommended, useposix=true, d_sigaction=define useithreads=define, usemultiplicity=define useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef use64bitint=define, use64bitall=define, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include', optimize='-O', cppflags='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include' ccversion='', gccversion='4.4.7 2012.03.13', gccosandvers='' intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16 ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='cc', ldflags ='-pthread -Wl,-E -fstack-protector -L/usr/local/lib' libpth=/usr/lib /usr/local/lib libs=-lgdbm -ldl -lm -lcrypt -lutil -lc perllibs=-ldl -lm -lcrypt -lutil -lc libc=, so=so, useshrplib=false, libperl=libperl.a gnulibc_version='' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' ' cccdlflags='-DPIC -fPIC', lddlflags='-shared -L/usr/local/lib -fstack-protector' Locally applied patches: @INC for perl 5.17.9: lib /usr/local/lib/perl5/site_perl/5.17.9/x86_64-dragonfly-thread-multi /usr/local/lib/perl5/site_perl/5.17.9 /usr/local/lib/perl5/5.17.9/x86_64-dragonfly-thread-multi /usr/local/lib/perl5/5.17.9 /usr/local/lib/perl5/site_perl . Environment for perl 5.17.9: HOME=/home/bingos LANG (unset) LANGUAGE (unset) LD_LIBRARY_PATH (unset) LOGDIR (unset) PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/pkg/sbin:/usr/pkg/bin:/usr/pkg/xorg/bin:/usr/local/sbin:/usr/local/bin:/home/bingos/bin PERL_BADLANG (unset) SHELL=/usr/pkg/bin/bash ```
p5pRT commented 11 years ago

From @iabyn

On Tue\, Feb 19\, 2013 at 03​:19​:22AM -0800\, Kidney Bingos wrote​:

The following tests fail on DragonflyBSD​: [snip] $ ./perl harness -v ../lib/File/Copy.t Inappropriate file type or format​: file-31740 => 2777 at ../lib/File/Copy.t line 339.

This means that perl is trying to do a chmod 2777 and is getting an OS error. Perhaps this version of BSD doesn't support the GID bit?

What error (if any) do the following give you​:

$ touch foo $ chmod 2777 foo $ perl -le 'for (0..7) { chmod((($_ \<\< 9)|0777)\, "foo") or print "failed $_​: $!" }'

$ ./perl harness -v ../lib/filetest.t # Failed test 'filetest.tst should not be recognized as writable' # at ../lib/filetest.t line 80. # got​: '1' # expected​: undef

# Failed test 'filetest.tst should not be recognized as writable' # at ../lib/filetest.t line 82. # got​: '1' # expected​: undef # Looks like you failed 2 tests of 15.

This is basically doing​:

  system "chflags uchg foo";   use filetest 'access';   print "ok\n" if ! -w "foo"   print "ok\n" if ! -W "foo"

Since I have no idea what chflags does\, I can't comment further.

-- Justice is when you get what you deserve. Law is when you get what you pay for.

p5pRT commented 11 years ago

The RT System itself - Status changed from 'new' to 'open'

p5pRT commented 11 years ago

From @bingos

On Sat\, Feb 23\, 2013 at 11​:57​:04PM +0000\, Dave Mitchell wrote​:

On Tue\, Feb 19\, 2013 at 03​:19​:22AM -0800\, Kidney Bingos wrote​:

The following tests fail on DragonflyBSD​: [snip] $ ./perl harness -v ../lib/File/Copy.t Inappropriate file type or format​: file-31740 => 2777 at ../lib/File/Copy.t line 339.

This means that perl is trying to do a chmod 2777 and is getting an OS error. Perhaps this version of BSD doesn't support the GID bit?

What error (if any) do the following give you​:

$ touch foo $ chmod 2777 foo $ perl -le 'for (0..7) { chmod((($_ \<\< 9)|0777)\, "foo") or print "failed $_​: $!" }'

$ touch foo $ chmod 2777 foo $ ls -l total 1 -rwxrwsrwx 1 bingos bingos 0 Feb 24 18​:27 foo drwxr-xr-x 3 bingos bingos 512 Feb 19 11​:01 repos $ /opt/perl-5.16.2/bin/perl -le 'for (0..7) { chmod((($_ \<\< 9)|0777)\, "foo") or print "failed $_​: $!" }' failed 2​: Inappropriate file type or format failed 3​: Inappropriate file type or format failed 4​: Inappropriate file type or format failed 5​: Inappropriate file type or format failed 6​: Inappropriate file type or format failed 7​: Inappropriate file type or format $

SetGID is supported. What seems to occur above is that once the sticky bit is set (sticky bit being restricted to directories on UFS-based FS) one can't change it\, [   http​://leaf.dragonflybsd.org/cgi/web-man?command=chmod&section=1   http​://leaf.dragonflybsd.org/cgi/web-man?command=chmod&section=2 ] which behaviour I can reproduce 'outside' perl​:

$ touch foo $ chmod 2777 foo $ chmod 1777 foo $ chmod 2777 foo chmod​: foo​: Inappropriate file type or format

$ ./perl harness -v ../lib/filetest.t # Failed test 'filetest.tst should not be recognized as writable' # at ../lib/filetest.t line 80. # got​: '1' # expected​: undef

# Failed test 'filetest.tst should not be recognized as writable' # at ../lib/filetest.t line 82. # got​: '1' # expected​: undef # Looks like you failed 2 tests of 15.

This is basically doing​:

system "chflags uchg foo";
use filetest 'access';
print "ok\\n" if \! \-w "foo"
print "ok\\n" if \! \-W "foo"

Since I have no idea what chflags does\, I can't comment further.

chflags is similar to chattr on Linux from what I can gather. It wasn't something I was aware of until I found this test failing. [ http​://leaf.dragonflybsd.org/cgi/web-man?command=chflags&section=1 ]

On Dragonfly​:

$ touch foo $ if [ -w foo ]; then echo "Yes"; fi Yes $ chflags uchg foo $ if [ -w foo ]; then echo "Yes"; fi Yes

On FreeBSD 7.4​:

$ touch foo $ if [ -w foo ]; then echo "Yes"; fi Yes $ chflags uchg foo $ if [ -w foo ]; then echo "Yes"; fi $

I had raised this ticket so I didn't forget the test failures this time :(

-- Chris Williams aka BinGOs PGP ID 0x4658671F http​://www.gumbynet.org.uk

p5pRT commented 11 years ago

From @jkeenan

On Sun Feb 24 11​:07​:42 2013\, chris@​bingosnet.co.uk wrote​:

On Sat\, Feb 23\, 2013 at 11​:57​:04PM +0000\, Dave Mitchell wrote​:

On Tue\, Feb 19\, 2013 at 03​:19​:22AM -0800\, Kidney Bingos wrote​:

The following tests fail on DragonflyBSD​: [snip] $ ./perl harness -v ../lib/File/Copy.t Inappropriate file type or format​: file-31740 => 2777 at ../lib/File/Copy.t line 339.

This means that perl is trying to do a chmod 2777 and is getting an OS error. Perhaps this version of BSD doesn't support the GID bit?

What error (if any) do the following give you​:

$ touch foo $ chmod 2777 foo $ perl -le 'for (0..7) { chmod((($_ \<\< 9)|0777)\, "foo") or print "failed $_​: $!" }'

$ touch foo $ chmod 2777 foo $ ls -l total 1 -rwxrwsrwx 1 bingos bingos 0 Feb 24 18​:27 foo drwxr-xr-x 3 bingos bingos 512 Feb 19 11​:01 repos $ /opt/perl-5.16.2/bin/perl -le 'for (0..7) { chmod((($_ \<\< 9)|0777)\, "foo") or print "failed $_​: $!" }' failed 2​: Inappropriate file type or format failed 3​: Inappropriate file type or format failed 4​: Inappropriate file type or format failed 5​: Inappropriate file type or format failed 6​: Inappropriate file type or format failed 7​: Inappropriate file type or format $

SetGID is supported. What seems to occur above is that once the sticky bit is set (sticky bit being restricted to directories on UFS-based FS) one can't change it\, [ http​://leaf.dragonflybsd.org/cgi/web-man?command=chmod&section=1 http​://leaf.dragonflybsd.org/cgi/web-man?command=chmod&section=2 ] which behaviour I can reproduce 'outside' perl​:

$ touch foo $ chmod 2777 foo $ chmod 1777 foo $ chmod 2777 foo chmod​: foo​: Inappropriate file type or format

$ ./perl harness -v ../lib/filetest.t # Failed test 'filetest.tst should not be recognized as writable' # at ../lib/filetest.t line 80. # got​: '1' # expected​: undef

# Failed test 'filetest.tst should not be recognized as writable' # at ../lib/filetest.t line 82. # got​: '1' # expected​: undef # Looks like you failed 2 tests of 15.

This is basically doing​:

system "chflags uchg foo";
use filetest 'access';
print "ok\\n" if \! \-w "foo"
print "ok\\n" if \! \-W "foo"

Since I have no idea what chflags does\, I can't comment further.

chflags is similar to chattr on Linux from what I can gather. It wasn't something I was aware of until I found this test failing. [ http​://leaf.dragonflybsd.org/cgi/web-man?command=chflags&section=1 ]

On Dragonfly​:

$ touch foo $ if [ -w foo ]; then echo "Yes"; fi Yes $ chflags uchg foo $ if [ -w foo ]; then echo "Yes"; fi Yes

On FreeBSD 7.4​:

$ touch foo $ if [ -w foo ]; then echo "Yes"; fi Yes $ chflags uchg foo $ if [ -w foo ]; then echo "Yes"; fi $

I had raised this ticket so I didn't forget the test failures this time :(

Are these failures still appearing with 5.18.0?

And\, assuming they are\, do we have an idea how to fix them for this OS -- or what the right thing should be?

Thank you very much. Jim Keenan

p5pRT commented 11 years ago

From @bingos

On Sun\, May 19\, 2013 at 07​:37​:33PM -0700\, James E Keenan via RT wrote​:

On Sun Feb 24 11​:07​:42 2013\, chris@​bingosnet.co.uk wrote​:

On Sat\, Feb 23\, 2013 at 11​:57​:04PM +0000\, Dave Mitchell wrote​:

On Tue\, Feb 19\, 2013 at 03​:19​:22AM -0800\, Kidney Bingos wrote​:

The following tests fail on DragonflyBSD​: [snip] $ ./perl harness -v ../lib/File/Copy.t Inappropriate file type or format​: file-31740 => 2777 at ../lib/File/Copy.t line 339.

This means that perl is trying to do a chmod 2777 and is getting an OS error. Perhaps this version of BSD doesn't support the GID bit?

What error (if any) do the following give you​:

$ touch foo $ chmod 2777 foo $ perl -le 'for (0..7) { chmod((($_ \<\< 9)|0777)\, "foo") or print "failed $_​: $!" }'

$ touch foo $ chmod 2777 foo $ ls -l total 1 -rwxrwsrwx 1 bingos bingos 0 Feb 24 18​:27 foo drwxr-xr-x 3 bingos bingos 512 Feb 19 11​:01 repos $ /opt/perl-5.16.2/bin/perl -le 'for (0..7) { chmod((($_ \<\< 9)|0777)\, "foo") or print "failed $_​: $!" }' failed 2​: Inappropriate file type or format failed 3​: Inappropriate file type or format failed 4​: Inappropriate file type or format failed 5​: Inappropriate file type or format failed 6​: Inappropriate file type or format failed 7​: Inappropriate file type or format $

SetGID is supported. What seems to occur above is that once the sticky bit is set (sticky bit being restricted to directories on UFS-based FS) one can't change it\, [ http​://leaf.dragonflybsd.org/cgi/web-man?command=chmod&section=1 http​://leaf.dragonflybsd.org/cgi/web-man?command=chmod&section=2 ] which behaviour I can reproduce 'outside' perl​:

$ touch foo $ chmod 2777 foo $ chmod 1777 foo $ chmod 2777 foo chmod​: foo​: Inappropriate file type or format

$ ./perl harness -v ../lib/filetest.t # Failed test 'filetest.tst should not be recognized as writable' # at ../lib/filetest.t line 80. # got​: '1' # expected​: undef

# Failed test 'filetest.tst should not be recognized as writable' # at ../lib/filetest.t line 82. # got​: '1' # expected​: undef # Looks like you failed 2 tests of 15.

This is basically doing​:

system "chflags uchg foo";
use filetest 'access';
print "ok\\n" if \! \-w "foo"
print "ok\\n" if \! \-W "foo"

Since I have no idea what chflags does\, I can't comment further.

chflags is similar to chattr on Linux from what I can gather. It wasn't something I was aware of until I found this test failing. [ http​://leaf.dragonflybsd.org/cgi/web-man?command=chflags&section=1 ]

On Dragonfly​:

$ touch foo $ if [ -w foo ]; then echo "Yes"; fi Yes $ chflags uchg foo $ if [ -w foo ]; then echo "Yes"; fi Yes

On FreeBSD 7.4​:

$ touch foo $ if [ -w foo ]; then echo "Yes"; fi Yes $ chflags uchg foo $ if [ -w foo ]; then echo "Yes"; fi $

I had raised this ticket so I didn't forget the test failures this time :(

Are these failures still appearing with 5.18.0?

And\, assuming they are\, do we have an idea how to fix them for this OS -- or what the right thing should be?

Thank you very much. Jim Keenan

I dealt with these in what was blead and became v5.18.0

33821f2f1514a9813696be8d26217081cabbf062 lib/File/Copy.t d04589db35f09d1a2397c7ca43216163acba7a2d lib/filetest.t

The sticky bit appears to be extremely sticky.

And the dflybsd filetests don't appear to honour chflags.

Skipped those applicable tests on DragonflyBSD.

Cheers\,

-- Chris Williams aka BinGOs PGP ID 0x4658671F http​://www.gumbynet.org.uk

p5pRT commented 11 years ago

@iabyn - Status changed from 'open' to 'resolved'