Skip to content

PathTools: t/cwd_enoent.t fails in docker #16699

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
p5pRT opened this issue Sep 20, 2018 · 12 comments
Closed

PathTools: t/cwd_enoent.t fails in docker #16699

p5pRT opened this issue Sep 20, 2018 · 12 comments

Comments

@p5pRT
Copy link

p5pRT commented Sep 20, 2018

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

Searchable as RT133534$

@p5pRT
Copy link
Author

p5pRT commented Sep 20, 2018

From @eserte

This is a bug report for perl from slaven@​rezic.de,
generated with the help of perlbug 1.40 running under perl 5.20.2.


t/cwd_enoent.t fails if run in a docker container​:

...
# Failed test 'perl getcwd errno on non-existent directory'
# at t/cwd_enoent.t line 39.
# got​: '116'
# expected​: '2'

# Failed test 'perl abs_path errno on non-existent directory'
# at t/cwd_enoent.t line 44.
# got​: '116'
# expected​: '2'
# Looks like you failed 2 tests of 8.
t/cwd_enoent.t .....
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/8 subtests
...

It seems to fail also in other environments --- see
http​://www.cpantesters.org/cpan/report/eeab8488-ac6c-11e8-8fb1-ef5133556b3f
which looks like a NFS setup (but better ask Nigel Horne).

In both cases stat(.) returns ESTALE instead of the expected ENOENT.
Reproducible in an oneliner which has to be run in a docker container​:

  $ docker run -it ubuntu​:bionic bash
  $ apt-get update && apt-get install -y libautodie-perl
  $ perl -Mautodie -e '$d = "/tmp/bla"; mkdir $d; chdir $d; rmdir $d; stat(".") or warn $!'
  Stale file handle at -e line 1.

Maybe the test only needs slight adaption to accept both errno codes.



Flags​:
  category=library
  severity=low
  module=Cwd


Site configuration information for perl 5.20.2​:

Configured by Debian Project at Mon Sep 18 18​:13​:32 UTC 2017.

Summary of my perl5 (revision 5 version 20 subversion 2) configuration​:
 
  Platform​:
  osname=linux, osvers=4.9.0-3-amd64, archname=x86_64-linux-gnu-thread-multi
  uname='linux binet 4.9.0-3-amd64 #1 smp debian 4.9.30-2+deb9u3 (2017-08-06) x86_64 gnulinux '
  config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.20 -Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.20 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.20 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.20.2 -Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.20.2 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dusesitecustomize -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.20.2 -des'
  hint=recommended, useposix=true, d_sigaction=define
  useithreads=define, usemultiplicity=define
  use64bitint=define, use64bitall=define, uselongdouble=undef
  usemymalloc=n, bincompat5005=undef
  Compiler​:
  cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
  optimize='-O2 -g',
  cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include'
  ccversion='', gccversion='4.9.2', 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 =' -fstack-protector -L/usr/local/lib'
  libpth=/usr/local/lib /usr/lib/gcc/x86_64-linux-gnu/4.9/include-fixed /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib
  libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
  perllibs=-ldl -lm -lpthread -lc -lcrypt
  libc=libc-2.19.so, so=so, useshrplib=true, libperl=libperl.so.5.20
  gnulibc_version='2.19'
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
  cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib -fstack-protector'

Locally applied patches​:
  DEBPKG​:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN.
  DEBPKG​:debian/db_file_ver - http​://bugs.debian.org/340047 Remove overly restrictive DB_File version check.
  DEBPKG​:debian/doc_info - Replace generic man(1) instructions with Debian-specific information.
  DEBPKG​:debian/enc2xs_inc - http​://bugs.debian.org/290336 Tweak enc2xs to follow symlinks and ignore missing @​INC directories.
  DEBPKG​:debian/errno_ver - http​://bugs.debian.org/343351 Remove Errno version check due to upgrade problems with long-running processes.
  DEBPKG​:debian/libperl_embed_doc - http​://bugs.debian.org/186778 Note that libperl-dev package is required for embedded linking
  DEBPKG​:fixes/respect_umask - Respect umask during installation
  DEBPKG​:debian/writable_site_dirs - Set umask approproately for site install directories
  DEBPKG​:debian/extutils_set_libperl_path - EU​:MM​: set location of libperl.a under /usr/lib
  DEBPKG​:debian/no_packlist_perllocal - Don't install .packlist or perllocal.pod for perl or vendor
  DEBPKG​:debian/prefix_changes - Fiddle with *PREFIX and variables written to the makefile
  DEBPKG​:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the binary targets.
  DEBPKG​:debian/instmodsh_doc - Debian policy doesn't install .packlist files for core or vendor.
  DEBPKG​:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as per Debian policy.
  DEBPKG​:debian/libnet_config_path - Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable.
  DEBPKG​:debian/mod_paths - Tweak @​INC ordering for Debian
  DEBPKG​:debian/module_build_man_extensions - http​://bugs.debian.org/479460 Adjust Module​::Build manual page extensions for the Debian Perl policy
  DEBPKG​:debian/prune_libs - http​://bugs.debian.org/128355 Prune the list of libraries wanted to what we actually need.
  DEBPKG​:fixes/net_smtp_docs - [rt.cpan.org #36038] http​://bugs.debian.org/100195 Document the Net​::SMTP 'Port' option
  DEBPKG​:debian/perlivp - http​://bugs.debian.org/510895 Make perlivp skip include directories in /usr/local
  DEBPKG​:debian/deprecate-with-apt - http​://bugs.debian.org/747628 Point users to Debian packages of deprecated core modules
  DEBPKG​:debian/squelch-locale-warnings - http​://bugs.debian.org/508764 Squelch locale warnings in Debian package maintainer scripts
  DEBPKG​:debian/skip-upstream-git-tests - Skip tests specific to the upstream Git repository
  DEBPKG​:debian/patchlevel - http​://bugs.debian.org/567489 List packaged patches for 5.20.2-3+deb8u9 in patchlevel.h
  DEBPKG​:debian/skip-kfreebsd-crash - http​://bugs.debian.org/628493 [perl #96272] Skip a crashing test case in t/op/threads.t on GNU/kFreeBSD
  DEBPKG​:fixes/document_makemaker_ccflags - http​://bugs.debian.org/628522 [rt.cpan.org #68613] Document that CCFLAGS should include $Config{ccflags}
  DEBPKG​:debian/find_html2text - http​://bugs.debian.org/640479 Configure CPAN​::Distribution with correct name of html2text
  DEBPKG​:debian/perl5db-x-terminal-emulator.patch - http​://bugs.debian.org/668490 Invoke x-terminal-emulator rather than xterm in perl5db.pl
  DEBPKG​:debian/cpan-missing-site-dirs - http​://bugs.debian.org/688842 Fix CPAN​::FirstTime defaults with nonexisting site dirs if a parent is writable
  DEBPKG​:fixes/memoize_storable_nstore - [rt.cpan.org #77790] http​://bugs.debian.org/587650 Memoize​::Storable​: respect 'nstore' option not respected
  DEBPKG​:debian/regen-skip - Skip a regeneration check in unrelated git repositories
  DEBPKG​:fixes/regcomp-mips-optim - [perl #122817] http​://bugs.debian.org/754054 Downgrade the optimization of regcomp.c on mips and mipsel due to a gcc-4.9 bug
  DEBPKG​:debian/makemaker-pasthru - http​://bugs.debian.org/758471 Pass LD settings through to subdirectories
  DEBPKG​:fixes/perldoc-less-R - [rt.cpan.org #98636] http​://bugs.debian.org/758689 Tell the 'less' pager to allow terminal escape sequences
  DEBPKG​:fixes/pod_man_reproducible_date - http​://bugs.debian.org/759405 Support POD_MAN_DATE in Pod​::Man for the left-hand footer
  DEBPKG​:fixes/io_uncompress_gunzip_inmemory - http​://bugs.debian.org/747363 [rt.cpan.org #95494] Fix gunzip to in-memory file handle
  DEBPKG​:fixes/socket_test_recv_fix - http​://bugs.debian.org/758718 [perl #122657] Compare recv return value to peername in socket test
  DEBPKG​:fixes/hurd_socket_recv_todo - http​://bugs.debian.org/758718 [perl #122657] TODO checking the result of recv() on hurd
  DEBPKG​:fixes/regexp-performance - [0fa70a0] http​://bugs.debian.org/777556 [perl #123743] simpify and speed up /.*.../ handling
  DEBPKG​:fixes/failed_require_diagnostics - http​://bugs.debian.org/781120 [perl #123270] Report inaccesible file on failed require
  DEBPKG​:fixes/array-cloning - http​://bugs.debian.org/779357 [perl #124127] [902d169] fix cloning arrays with unused elements
  DEBPKG​:fixes/perldb-threads - http​://bugs.debian.org/779357 [perl #124127] [41ef2c6] lib/perl5db.pl​: Restore noop lock prototype
  DEBPKG​:fixes/CVE-2015-8607_file_spec_taint_fix - ensure File​::Spec​::canonpath() preserves taint
  DEBPKG​:fixes/encode-unicode-bom - http​://bugs.debian.org/798727 [rt.cpan.org #107043] Address https://rt.cpan.org/Public/Bug/Display.html?id=107043
  DEBPKG​:debian/encode-unicode-bom-doc - http​://bugs.debian.org/798727 Document Debian backport of Encode​::Unicode fix
  DEBPKG​:debian/kfreebsd-softupdates - http​://bugs.debian.org/796798 Work around Debian Bug#796798
  DEBPKG​:fixes/CVE-2016-2381_duplicate_env - remove duplicate environment variables from environ
  DEBPKG​:debian/debugperl-compat-fix - [perl #127212] http​://bugs.debian.org/810326 Disable PERL_TRACK_MEMPOOL for debugging builds
  DEBPKG​:fixes/CVE-2015-8853_regexp_hang - http​://bugs.debian.org/821848 [perl #123562] PATCH [perl #123562] Regexp-matching "hangs"
  DEBPKG​:fixes/utf8_regexp_crash - http​://bugs.debian.org/820328 [perl #124109] save_re_context()​: do "local $n" with no PL_curpm
  DEBPKG​:fixes/regcomp_whitespace_fix - http​://bugs.debian.org/820328 [perl #124109] Perl_save_re_context()​: re-indent after last commit
  DEBPKG​:fixes/5.20.3/eval_label_crash - http​://bugs.debian.org/822336 [perl #123652] eval {label​:} crash
  DEBPKG​:fixes/5.20.3/preserve_record_separator - http​://bugs.debian.org/822336 [perl #123218] "preserve" $/ if set to a bad value
  DEBPKG​:fixes/5.20.3/test_count_base_rs - http​://bugs.debian.org/822336 Fix test count in t/base/rs.t
  DEBPKG​:fixes/5.20.3/remove_get_magic - http​://bugs.debian.org/822336 [perl #123739] Remove get-magic from $/
  DEBPKG​:fixes/5.20.3/speed_up_scalar_g - http​://bugs.debian.org/822336 [perl #123202] speed up scalar //g against tainted strings
  DEBPKG​:fixes/5.20.3/accidental_all_features - http​://bugs.debian.org/822336 Stop $^H |= 0x1c020000 from enabling all features
  DEBPKG​:fixes/5.20.3/multidimensional_arrays_utf8 - http​://bugs.debian.org/822336 [perl #124113] Make check for multi-dimensional arrays be UTF8-aware
  DEBPKG​:fixes/5.20.3/unquoted_utf8_heredoc_terminators - http​://bugs.debian.org/822336 Allow unquoted UTF-8 HERE-document terminators
  DEBPKG​:fixes/5.20.3/parentheses_ambiguous_warning_utf8_functions - http​://bugs.debian.org/822336 Fix "...without parentheses is ambuguous" warning for UTF-8 function names
  DEBPKG​:fixes/5.20.3/leak_namepv_copy - http​://bugs.debian.org/822336 [perl #123786] don't leak the temp utf8 copy of namepv
  DEBPKG​:fixes/5.20.3/h2ph_hex_constants - http​://bugs.debian.org/822336 h2ph​: correct handling of hex constants for the preamble
  DEBPKG​:fixes/5.20.3/leftbracket_XTERMORDORDOR - http​://bugs.debian.org/822336 [perl #123711] Fix crash with 0-5x-l{0}
  DEBPKG​:fixes/5.20.3/fatalize_warnings_unwinding - http​://bugs.debian.org/822336 [perl #123398] don't fatalize warnings during unwinding (#123398)
  DEBPKG​:fixes/5.20.3/setpgrp - http​://bugs.debian.org/822336 =?UTF-8?q?Don=E2=80=99t=20treat=20setpgrp($nonzero)=20as=20setpgr?= =?UTF-8?q?p(1)?=
  DEBPKG​:fixes/5.20.3/death_unwinding_crash - http​://bugs.debian.org/822336 [perl #124156] RT #124156​: death during unwinding causes crash
  DEBPKG​:fixes/5.20.3/stashpvn_crash - http​://bugs.debian.org/822336 [perl #125541] Fix crash with %​::=(); J->${\"​::"}
  DEBPKG​:fixes/5.20.3/possessive_quantifier - http​://bugs.debian.org/822336 [perl #125825] PATCH​: [perl 125825] {n}+ possessive quantifier broken
  DEBPKG​:fixes/5.20.3/quoted_code_crash - http​://bugs.debian.org/822336 [perl #123712] Fix /$a[/ parsing
  DEBPKG​:fixes/5.20.3/checking_sub_inwhat - http​://bugs.debian.org/822336 [perl #123712] Don't check sub_inwhat
  DEBPKG​:fixes/5.20.3/yylex_loop - http​://bugs.debian.org/822336 Fix hang with "@​{"
  DEBPKG​:fixes/5.20.3/docs/op - http​://bugs.debian.org/822336 Fix apidocs for OP_TYPE_IS(_OR_WAS) - arguments separated by |, not ,.
  DEBPKG​:fixes/5.20.3/docs/encoding - http​://bugs.debian.org/822336 perlpodspec​: Corrections/adds to detecting =encoding
  DEBPKG​:fixes/5.20.3/docs/SvPV_set - http​://bugs.debian.org/822336 improve SvPV_set's docs, it really shouldn't be public API
  DEBPKG​:fixes/5.20.3/docs/autodie - http​://bugs.debian.org/822336 Fix warning message regarding "use autodie" and "use open".
  DEBPKG​:fixes/5.20.3/docs/autodie_2_26 - http​://bugs.debian.org/822336 perlunicook​: Note that autodie >= 2.26 should be okay with "use open".
  DEBPKG​:fixes/5.20.3/docs/setenv - http​://bugs.debian.org/822336 Fix setenv() replacement documentation in perlclib
  DEBPKG​:fixes/5.20.3/docs/clib_caution - http​://bugs.debian.org/822336 perlhacktips​: Add caution about clib ptr returns to static memory
  DEBPKG​:fixes/5.20.3/docs/perlunicook_typos - http​://bugs.debian.org/822336 Fix minor code typos in perlunicook
  DEBPKG​:fixes/5.20.3/docs/ook_example - http​://bugs.debian.org/822336 [perl #122322] Update OOK example in perlguts
  DEBPKG​:fixes/5.20.3/docs/study_noop - http​://bugs.debian.org/822336 perlfunc​: mention that study() is currently a noop
  DEBPKG​:fixes/CVE-2016-1238/remove-dot-when-loading - [perl #127834] (perl #127834) remove . from the end of @​INC if complex modules are loaded
  DEBPKG​:fixes/CVE-2016-1238/remove-dot-in-padwalker - [perl #127834] perl5db.pl​: ensure PadWalker is loaded from standard paths
  DEBPKG​:fixes/CVE-2016-1238/remove-dot-in-dist - [perl #127834] dist/​: remove . from @​INC when loading optional modules
  DEBPKG​:fixes/CVE-2016-1238/remove-dot-in-cpan - [perl #127834] cpan/​: remove . from @​INC when loading optional modules
  DEBPKG​:fixes/CVE-2016-1238/customized-encode - Update customized.dat for cpan/Encode/Encode.pm
  DEBPKG​:debian/CVE-2016-1238/test-suite-without-dot - [perl #127810] Patch unit tests to explicitly insert "." into @​INC when needed.
  DEBPKG​:debian/CVE-2016-1238/eumm-without-dot - [perl #127810] Add PERL_USE_UNSAFE_INC support to EU​::MM for fortify_inc support.
  DEBPKG​:debian/CVE-2016-1238/cpan-without-dot - [perl #127810] Set PERL_USE_UNSAFE_INC for cpan usage
  DEBPKG​:debian/CVE-2016-1238/mb-without-dot - Make Module​::Build set PERL_USE_UNSAFE_INC
  DEBPKG​:debian/CVE-2016-1238/sitecustomize-in-etc - Look for sitecustomize.pl in /etc/perl rather than sitelib on Debian systems
  DEBPKG​:fixes/xsloader-eval - [rt.cpan.org #115808] http​://bugs.debian.org/829578 =?UTF-8?q?Don=E2=80=99t=20let=20XSLoader=20load=20relative=20path?= =?UTF-8?q?s?=
  DEBPKG​:fixes/file_path_chmod_race - http​://bugs.debian.org/863870 [rt.cpan.org #121951] Prevent directory chmod race attack.
  DEBPKG​:fixes/extutils_file_path_compat - [PATCH] Correct the order of tests of chmod(). (#294)
  DEBPKG​:debian/customized_file_path - Update customized.dat for File-Path changes
  DEBPKG​:debian/CVE-2016-1238/base-pm-amends-pt1 - Revert base.pm no-dot-in-inc fixes to make way for a better version
  DEBPKG​:debian/CVE-2016-1238/base-pm-amends-pt2 - [1afa289] Limit dotless-INC effect on base.pm with guard​:
  DEBPKG​:fixes/CVE-2017-12837 - http​://bugs.debian.org/875596 [perl #131582] regcomp [perl #131582]
  DEBPKG​:fixes/CVE-2017-12883 - http​://bugs.debian.org/875597 [perl #131598] PATCH​: [perl #131598]
  DEBPKG​:fixes/CVE-2017-12883-5.20 - http​://bugs.debian.org/875597 [perl #131598] regcomp​: Fix out of bound reads


@​INC for perl 5.20.2​:
  /etc/perl
  /usr/local/lib/x86_64-linux-gnu/perl/5.20.2
  /usr/local/share/perl/5.20.2
  /usr/lib/x86_64-linux-gnu/perl5/5.20
  /usr/share/perl5
  /usr/lib/x86_64-linux-gnu/perl/5.20
  /usr/share/perl/5.20
  /usr/local/lib/site_perl


Environment for perl 5.20.2​:
  HOME=/home/eserte
  LANG=en_US.UTF-8
  LANGUAGE=en_US​:en
  LD_LIBRARY_PATH (unset)
  LOGDIR (unset)
  PATH=/usr/local/bin​:/usr/bin​:/bin​:/usr/local/sbin​:/usr/sbin​:/sbin​:/home/eserte/bin/linux-gnu​:/home/eserte/bin/sh​:/home/eserte/bin​:/home/eserte/bin/pistachio-perl/bin​:/usr/games​:/home/eserte/devel
  PERLDOC=-MPod​::Perldoc​::ToTextOverstrike
  PERL_BADLANG (unset)
  SHELL=/bin/zsh

@p5pRT
Copy link
Author

p5pRT commented Oct 2, 2018

From @eserte

Dana Thu, 20 Sep 2018 07​:10​:47 -0700, slaven@​rezic.de reče​:

This is a bug report for perl from slaven@​rezic.de,
generated with the help of perlbug 1.40 running under perl 5.20.2.

-----------------------------------------------------------------
t/cwd_enoent.t fails if run in a docker container​:

...
# Failed test 'perl getcwd errno on non-existent directory'
# at t/cwd_enoent.t line 39.
# got​: '116'
# expected​: '2'

# Failed test 'perl abs_path errno on non-existent directory'
# at t/cwd_enoent.t line 44.
# got​: '116'
# expected​: '2'
# Looks like you failed 2 tests of 8.
t/cwd_enoent.t .....
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/8 subtests
...

It seems to fail also in other environments --- see
http​://www.cpantesters.org/cpan/report/eeab8488-ac6c-11e8-8fb1-
ef5133556b3f
which looks like a NFS setup (but better ask Nigel Horne).

In both cases stat(.) returns ESTALE instead of the expected ENOENT.
Reproducible in an oneliner which has to be run in a docker container​:

$ docker run -it ubuntu​:bionic bash
$ apt-get update && apt-get install -y libautodie-perl
$ perl -Mautodie -e '$d = "/tmp/bla"; mkdir $d; chdir $d; rmdir $d;
stat(".") or warn $!'
Stale file handle at -e line 1.

Maybe the test only needs slight adaption to accept both errno codes.

-----------------------------------------------------------------
---
Flags​:
category=library
severity=low
module=Cwd
---
Site configuration information for perl 5.20.2​:

Configured by Debian Project at Mon Sep 18 18​:13​:32 UTC 2017.

Summary of my perl5 (revision 5 version 20 subversion 2)
configuration​:

Platform​:
osname=linux, osvers=4.9.0-3-amd64, archname=x86_64-linux-gnu-
thread-multi
uname='linux binet 4.9.0-3-amd64 #1 smp debian 4.9.30-2+deb9u3
(2017-08-06) x86_64 gnulinux '
config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN
-D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector-strong -Wformat
-Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared
-Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu
-Dprefix=/usr -Dprivlib=/usr/share/perl/5.20
-Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.20 -Dvendorprefix=/usr
-Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/x86_64-linux-
gnu/perl5/5.20 -Dsiteprefix=/usr/local
-Dsitelib=/usr/local/share/perl/5.20.2
-Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.20.2
-Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3
-Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3
-Dusesitecustomize -Duse64bitint -Dman1ext=1 -Dman3ext=3perl
-Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio
-Uusenm -Ui_libutil -Uversiononly -DDEBUGGING=-g -Doptimize=-O2
-Duseshrplib -Dlibperl=libperl.so.5.20.2 -des'
hint=recommended, useposix=true, d_sigaction=define
useithreads=define, usemultiplicity=define
use64bitint=define, use64bitall=define, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler​:
cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-
strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64',
optimize='-O2 -g',
cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-
aliasing -pipe -I/usr/local/include'
ccversion='', gccversion='4.9.2', 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 =' -fstack-protector -L/usr/local/lib'
libpth=/usr/local/lib /usr/lib/gcc/x86_64-linux-gnu/4.9/include-
fixed /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu
/lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib
libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
perllibs=-ldl -lm -lpthread -lc -lcrypt
libc=libc-2.19.so, so=so, useshrplib=true, libperl=libperl.so.5.20
gnulibc_version='2.19'
Dynamic Linking​:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib -fstack-
protector'

Locally applied patches​:
DEBPKG​:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS
default for modules installed from CPAN.
DEBPKG​:debian/db_file_ver - http​://bugs.debian.org/340047 Remove
overly restrictive DB_File version check.
DEBPKG​:debian/doc_info - Replace generic man(1) instructions with
Debian-specific information.
DEBPKG​:debian/enc2xs_inc - http​://bugs.debian.org/290336 Tweak
enc2xs to follow symlinks and ignore missing @​INC directories.
DEBPKG​:debian/errno_ver - http​://bugs.debian.org/343351 Remove
Errno version check due to upgrade problems with long-running
processes.
DEBPKG​:debian/libperl_embed_doc - http​://bugs.debian.org/186778
Note that libperl-dev package is required for embedded linking
DEBPKG​:fixes/respect_umask - Respect umask during installation
DEBPKG​:debian/writable_site_dirs - Set umask approproately for
site install directories
DEBPKG​:debian/extutils_set_libperl_path - EU​:MM​: set location of
libperl.a under /usr/lib
DEBPKG​:debian/no_packlist_perllocal - Don't install .packlist or
perllocal.pod for perl or vendor
DEBPKG​:debian/prefix_changes - Fiddle with *PREFIX and variables
written to the makefile
DEBPKG​:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to
the binary targets.
DEBPKG​:debian/instmodsh_doc - Debian policy doesn't install
.packlist files for core or vendor.
DEBPKG​:debian/ld_run_path - Remove standard libs from LD_RUN_PATH
as per Debian policy.
DEBPKG​:debian/libnet_config_path - Set location of libnet.cfg to
/etc/perl/Net as /usr may not be writable.
DEBPKG​:debian/mod_paths - Tweak @​INC ordering for Debian
DEBPKG​:debian/module_build_man_extensions -
http​://bugs.debian.org/479460 Adjust Module​::Build manual page
extensions for the Debian Perl policy
DEBPKG​:debian/prune_libs - http​://bugs.debian.org/128355 Prune the
list of libraries wanted to what we actually need.
DEBPKG​:fixes/net_smtp_docs - [rt.cpan.org #36038]
http​://bugs.debian.org/100195 Document the Net​::SMTP 'Port' option
DEBPKG​:debian/perlivp - http​://bugs.debian.org/510895 Make perlivp
skip include directories in /usr/local
DEBPKG​:debian/deprecate-with-apt - http​://bugs.debian.org/747628
Point users to Debian packages of deprecated core modules
DEBPKG​:debian/squelch-locale-warnings -
http​://bugs.debian.org/508764 Squelch locale warnings in Debian
package maintainer scripts
DEBPKG​:debian/skip-upstream-git-tests - Skip tests specific to the
upstream Git repository
DEBPKG​:debian/patchlevel - http​://bugs.debian.org/567489 List
packaged patches for 5.20.2-3+deb8u9 in patchlevel.h
DEBPKG​:debian/skip-kfreebsd-crash - http​://bugs.debian.org/628493
[perl #96272] Skip a crashing test case in t/op/threads.t on
GNU/kFreeBSD
DEBPKG​:fixes/document_makemaker_ccflags -
http​://bugs.debian.org/628522 [rt.cpan.org #68613] Document that
CCFLAGS should include $Config{ccflags}
DEBPKG​:debian/find_html2text - http​://bugs.debian.org/640479
Configure CPAN​::Distribution with correct name of html2text
DEBPKG​:debian/perl5db-x-terminal-emulator.patch -
http​://bugs.debian.org/668490 Invoke x-terminal-emulator rather than
xterm in perl5db.pl
DEBPKG​:debian/cpan-missing-site-dirs -
http​://bugs.debian.org/688842 Fix CPAN​::FirstTime defaults with
nonexisting site dirs if a parent is writable
DEBPKG​:fixes/memoize_storable_nstore - [rt.cpan.org #77790]
http​://bugs.debian.org/587650 Memoize​::Storable​: respect 'nstore'
option not respected
DEBPKG​:debian/regen-skip - Skip a regeneration check in unrelated
git repositories
DEBPKG​:fixes/regcomp-mips-optim - [perl #122817]
http​://bugs.debian.org/754054 Downgrade the optimization of regcomp.c
on mips and mipsel due to a gcc-4.9 bug
DEBPKG​:debian/makemaker-pasthru - http​://bugs.debian.org/758471
Pass LD settings through to subdirectories
DEBPKG​:fixes/perldoc-less-R - [rt.cpan.org #98636]
http​://bugs.debian.org/758689 Tell the 'less' pager to allow terminal
escape sequences
DEBPKG​:fixes/pod_man_reproducible_date -
http​://bugs.debian.org/759405 Support POD_MAN_DATE in Pod​::Man for the
left-hand footer
DEBPKG​:fixes/io_uncompress_gunzip_inmemory -
http​://bugs.debian.org/747363 [rt.cpan.org #95494] Fix gunzip to in-
memory file handle
DEBPKG​:fixes/socket_test_recv_fix - http​://bugs.debian.org/758718
[perl #122657] Compare recv return value to peername in socket test
DEBPKG​:fixes/hurd_socket_recv_todo - http​://bugs.debian.org/758718
[perl #122657] TODO checking the result of recv() on hurd
DEBPKG​:fixes/regexp-performance - [0fa70a0]
http​://bugs.debian.org/777556 [perl #123743] simpify and speed up
/.*.../ handling
DEBPKG​:fixes/failed_require_diagnostics -
http​://bugs.debian.org/781120 [perl #123270] Report inaccesible file
on failed require
DEBPKG​:fixes/array-cloning - http​://bugs.debian.org/779357 [perl
#124127] [902d169] fix cloning arrays with unused elements
DEBPKG​:fixes/perldb-threads - http​://bugs.debian.org/779357 [perl
#124127] [41ef2c6] lib/perl5db.pl​: Restore noop lock prototype
DEBPKG​:fixes/CVE-2015-8607_file_spec_taint_fix - ensure
File​::Spec​::canonpath() preserves taint
DEBPKG​:fixes/encode-unicode-bom - http​://bugs.debian.org/798727
[rt.cpan.org #107043] Address
https://rt.cpan.org/Public/Bug/Display.html?id=107043
DEBPKG​:debian/encode-unicode-bom-doc -
http​://bugs.debian.org/798727 Document Debian backport of
Encode​::Unicode fix
DEBPKG​:debian/kfreebsd-softupdates - http​://bugs.debian.org/796798
Work around Debian Bug#796798
DEBPKG​:fixes/CVE-2016-2381_duplicate_env - remove duplicate
environment variables from environ
DEBPKG​:debian/debugperl-compat-fix - [perl #127212]
http​://bugs.debian.org/810326 Disable PERL_TRACK_MEMPOOL for debugging
builds
DEBPKG​:fixes/CVE-2015-8853_regexp_hang -
http​://bugs.debian.org/821848 [perl #123562] PATCH [perl #123562]
Regexp-matching "hangs"
DEBPKG​:fixes/utf8_regexp_crash - http​://bugs.debian.org/820328
[perl #124109] save_re_context()​: do "local $n" with no PL_curpm
DEBPKG​:fixes/regcomp_whitespace_fix -
http​://bugs.debian.org/820328 [perl #124109] Perl_save_re_context()​:
re-indent after last commit
DEBPKG​:fixes/5.20.3/eval_label_crash -
http​://bugs.debian.org/822336 [perl #123652] eval {label​:} crash
DEBPKG​:fixes/5.20.3/preserve_record_separator -
http​://bugs.debian.org/822336 [perl #123218] "preserve" $/ if set to a
bad value
DEBPKG​:fixes/5.20.3/test_count_base_rs -
http​://bugs.debian.org/822336 Fix test count in t/base/rs.t
DEBPKG​:fixes/5.20.3/remove_get_magic -
http​://bugs.debian.org/822336 [perl #123739] Remove get-magic from $/
DEBPKG​:fixes/5.20.3/speed_up_scalar_g -
http​://bugs.debian.org/822336 [perl #123202] speed up scalar //g
against tainted strings
DEBPKG​:fixes/5.20.3/accidental_all_features -
http​://bugs.debian.org/822336 Stop $^H |= 0x1c020000 from enabling all
features
DEBPKG​:fixes/5.20.3/multidimensional_arrays_utf8 -
http​://bugs.debian.org/822336 [perl #124113] Make check for multi-
dimensional arrays be UTF8-aware
DEBPKG​:fixes/5.20.3/unquoted_utf8_heredoc_terminators -
http​://bugs.debian.org/822336 Allow unquoted UTF-8 HERE-document
terminators
DEBPKG​:fixes/5.20.3/parentheses_ambiguous_warning_utf8_functions -
http​://bugs.debian.org/822336 Fix "...without parentheses is
ambuguous" warning for UTF-8 function names
DEBPKG​:fixes/5.20.3/leak_namepv_copy -
http​://bugs.debian.org/822336 [perl #123786] don't leak the temp utf8
copy of namepv
DEBPKG​:fixes/5.20.3/h2ph_hex_constants -
http​://bugs.debian.org/822336 h2ph​: correct handling of hex constants
for the preamble
DEBPKG​:fixes/5.20.3/leftbracket_XTERMORDORDOR -
http​://bugs.debian.org/822336 [perl #123711] Fix crash with 0-5x-l{0}
DEBPKG​:fixes/5.20.3/fatalize_warnings_unwinding -
http​://bugs.debian.org/822336 [perl #123398] don't fatalize warnings
during unwinding (#123398)
DEBPKG​:fixes/5.20.3/setpgrp - http​://bugs.debian.org/822336 =?UTF-
8?q?Don=E2=80=99t=20treat=20setpgrp($nonzero)=20as=20setpgr?= =?UTF-
8?q?p(1)?=
DEBPKG​:fixes/5.20.3/death_unwinding_crash -
http​://bugs.debian.org/822336 [perl #124156] RT #124156​: death during
unwinding causes crash
DEBPKG​:fixes/5.20.3/stashpvn_crash - http​://bugs.debian.org/822336
[perl #125541] Fix crash with %​::=(); J->${\"​::"}
DEBPKG​:fixes/5.20.3/possessive_quantifier -
http​://bugs.debian.org/822336 [perl #125825] PATCH​: [perl 125825] {n}+
possessive quantifier broken
DEBPKG​:fixes/5.20.3/quoted_code_crash -
http​://bugs.debian.org/822336 [perl #123712] Fix /$a[/ parsing
DEBPKG​:fixes/5.20.3/checking_sub_inwhat -
http​://bugs.debian.org/822336 [perl #123712] Don't check sub_inwhat
DEBPKG​:fixes/5.20.3/yylex_loop - http​://bugs.debian.org/822336 Fix
hang with "@​{"
DEBPKG​:fixes/5.20.3/docs/op - http​://bugs.debian.org/822336 Fix
apidocs for OP_TYPE_IS(_OR_WAS) - arguments separated by |, not ,.
DEBPKG​:fixes/5.20.3/docs/encoding - http​://bugs.debian.org/822336
perlpodspec​: Corrections/adds to detecting =encoding
DEBPKG​:fixes/5.20.3/docs/SvPV_set - http​://bugs.debian.org/822336
improve SvPV_set's docs, it really shouldn't be public API
DEBPKG​:fixes/5.20.3/docs/autodie - http​://bugs.debian.org/822336
Fix warning message regarding "use autodie" and "use open".
DEBPKG​:fixes/5.20.3/docs/autodie_2_26 -
http​://bugs.debian.org/822336 perlunicook​: Note that autodie >= 2.26
should be okay with "use open".
DEBPKG​:fixes/5.20.3/docs/setenv - http​://bugs.debian.org/822336
Fix setenv() replacement documentation in perlclib
DEBPKG​:fixes/5.20.3/docs/clib_caution -
http​://bugs.debian.org/822336 perlhacktips​: Add caution about clib ptr
returns to static memory
DEBPKG​:fixes/5.20.3/docs/perlunicook_typos -
http​://bugs.debian.org/822336 Fix minor code typos in perlunicook
DEBPKG​:fixes/5.20.3/docs/ook_example -
http​://bugs.debian.org/822336 [perl #122322] Update OOK example in
perlguts
DEBPKG​:fixes/5.20.3/docs/study_noop -
http​://bugs.debian.org/822336 perlfunc​: mention that study() is
currently a noop
DEBPKG​:fixes/CVE-2016-1238/remove-dot-when-loading - [perl
#127834] (perl #127834) remove . from the end of @​INC if complex
modules are loaded
DEBPKG​:fixes/CVE-2016-1238/remove-dot-in-padwalker - [perl
#127834] perl5db.pl​: ensure PadWalker is loaded from standard paths
DEBPKG​:fixes/CVE-2016-1238/remove-dot-in-dist - [perl #127834]
dist/​: remove . from @​INC when loading optional modules
DEBPKG​:fixes/CVE-2016-1238/remove-dot-in-cpan - [perl #127834]
cpan/​: remove . from @​INC when loading optional modules
DEBPKG​:fixes/CVE-2016-1238/customized-encode - Update
customized.dat for cpan/Encode/Encode.pm
DEBPKG​:debian/CVE-2016-1238/test-suite-without-dot - [perl
#127810] Patch unit tests to explicitly insert "." into @​INC when
needed.
DEBPKG​:debian/CVE-2016-1238/eumm-without-dot - [perl #127810] Add
PERL_USE_UNSAFE_INC support to EU​::MM for fortify_inc support.
DEBPKG​:debian/CVE-2016-1238/cpan-without-dot - [perl #127810] Set
PERL_USE_UNSAFE_INC for cpan usage
DEBPKG​:debian/CVE-2016-1238/mb-without-dot - Make Module​::Build
set PERL_USE_UNSAFE_INC
DEBPKG​:debian/CVE-2016-1238/sitecustomize-in-etc - Look for
sitecustomize.pl in /etc/perl rather than sitelib on Debian systems
DEBPKG​:fixes/xsloader-eval - [rt.cpan.org #115808]
http​://bugs.debian.org/829578 =?UTF-
8?q?Don=E2=80=99t=20let=20XSLoader=20load=20relative=20path?= =?UTF-
8?q?s?=
DEBPKG​:fixes/file_path_chmod_race - http​://bugs.debian.org/863870
[rt.cpan.org #121951] Prevent directory chmod race attack.
DEBPKG​:fixes/extutils_file_path_compat - [PATCH] Correct the order
of tests of chmod(). (#294)
DEBPKG​:debian/customized_file_path - Update customized.dat for
File-Path changes
DEBPKG​:debian/CVE-2016-1238/base-pm-amends-pt1 - Revert base.pm
no-dot-in-inc fixes to make way for a better version
DEBPKG​:debian/CVE-2016-1238/base-pm-amends-pt2 - [1afa289] Limit
dotless-INC effect on base.pm with guard​:
DEBPKG​:fixes/CVE-2017-12837 - http​://bugs.debian.org/875596 [perl
#131582] regcomp [perl #131582]
DEBPKG​:fixes/CVE-2017-12883 - http​://bugs.debian.org/875597 [perl
#131598] PATCH​: [perl #131598]
DEBPKG​:fixes/CVE-2017-12883-5.20 - http​://bugs.debian.org/875597
[perl #131598] regcomp​: Fix out of bound reads

---
@​INC for perl 5.20.2​:
/etc/perl
/usr/local/lib/x86_64-linux-gnu/perl/5.20.2
/usr/local/share/perl/5.20.2
/usr/lib/x86_64-linux-gnu/perl5/5.20
/usr/share/perl5
/usr/lib/x86_64-linux-gnu/perl/5.20
/usr/share/perl/5.20
/usr/local/lib/site_perl

---
Environment for perl 5.20.2​:
HOME=/home/eserte
LANG=en_US.UTF-8
LANGUAGE=en_US​:en
LD_LIBRARY_PATH (unset)
LOGDIR (unset)
PATH=/usr/local/bin​:/usr/bin​:/bin​:/usr/local/sbin​:/usr/sbin​:/sbin​:/home/eserte/bin/linux-
gnu​:/home/eserte/bin/sh​:/home/eserte/bin​:/home/eserte/bin/pistachio-
perl/bin​:/usr/games​:/home/eserte/devel
PERLDOC=-MPod​::Perldoc​::ToTextOverstrike
PERL_BADLANG (unset)
SHELL=/bin/zsh

A possible patch is attached.

@p5pRT
Copy link
Author

p5pRT commented Oct 2, 2018

From @eserte

0001-accept-also-ESTALE-fix-for-RT-133534.patch
From 1216af32d5f2ddb5b13507dce592acbc33e33c24 Mon Sep 17 00:00:00 2001
From: Slaven Rezic <[email protected]>
Date: Tue, 2 Oct 2018 15:39:48 +0200
Subject: [PATCH] accept also ESTALE (fix for RT #133534)

ESTALE may occur in some environments when accessing a
now non-existing directory, e.g. when using NFS or in docker
containers.
---
 t/cwd_enoent.t | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/t/cwd_enoent.t b/t/cwd_enoent.t
index 8f3a1fb..510c65e 100644
--- a/t/cwd_enoent.t
+++ b/t/cwd_enoent.t
@@ -2,7 +2,7 @@ use warnings;
 use strict;
 
 use Config;
-use Errno qw(ENOENT);
+use Errno qw();
 use File::Temp qw(tempdir);
 use Test::More;
 
@@ -19,6 +19,7 @@ unless(mkdir("$tmp/testdir") && chdir("$tmp/testdir") && rmdir("$tmp/testdir")){
 plan tests => 8;
 require Cwd;
 
+my @acceptable_errnos = (&Errno::ENOENT, (defined &Errno::ESTALE ? &Errno::ESTALE : ()));
 foreach my $type (qw(regular perl)) {
     SKIP: {
 	skip "_perl_abs_path() not expected to work", 4
@@ -36,12 +37,14 @@ foreach my $type (qw(regular perl)) {
 	$res = Cwd::getcwd();
 	$eno = 0+$!;
 	is $res, undef, "$type getcwd result on non-existent directory";
-	is $eno, ENOENT, "$type getcwd errno on non-existent directory";
+	ok((grep { $eno == $_ } @acceptable_errnos), "$type getcwd errno on non-existent directory")
+	    or diag "Got errno code $eno, expected " . join(", ", @acceptable_errnos);
 	$! = 0;
 	$res = Cwd::abs_path(".");
 	$eno = 0+$!;
 	is $res, undef, "$type abs_path result on non-existent directory";
-	is $eno, ENOENT, "$type abs_path errno on non-existent directory";
+	ok((grep { $eno == $_ } @acceptable_errnos), "$type abs_path errno on non-existent directory")
+	    or diag "Got errno code $eno, expected " . join(", ", @acceptable_errnos);
     }
 }
 
-- 
2.7.4

@p5pRT
Copy link
Author

p5pRT commented Oct 3, 2018

From @jkeenan

On Tue, 02 Oct 2018 13​:43​:10 GMT, slaven@​rezic.de wrote​:

Dana Thu, 20 Sep 2018 07​:10​:47 -0700, slaven@​rezic.de reče​:

This is a bug report for perl from slaven@​rezic.de,
generated with the help of perlbug 1.40 running under perl 5.20.2.

-----------------------------------------------------------------
t/cwd_enoent.t fails if run in a docker container​:

...
# Failed test 'perl getcwd errno on non-existent directory'
# at t/cwd_enoent.t line 39.
# got​: '116'
# expected​: '2'

# Failed test 'perl abs_path errno on non-existent directory'
# at t/cwd_enoent.t line 44.
# got​: '116'
# expected​: '2'
# Looks like you failed 2 tests of 8.
t/cwd_enoent.t .....
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/8 subtests
...

It seems to fail also in other environments --- see
http​://www.cpantesters.org/cpan/report/eeab8488-ac6c-11e8-8fb1-
ef5133556b3f
which looks like a NFS setup (but better ask Nigel Horne).

In both cases stat(.) returns ESTALE instead of the expected ENOENT.
Reproducible in an oneliner which has to be run in a docker
container​:

$ docker run -it ubuntu​:bionic bash
$ apt-get update && apt-get install -y libautodie-perl
$ perl -Mautodie -e '$d = "/tmp/bla"; mkdir $d; chdir $d; rmdir $d;
stat(".") or warn $!'
Stale file handle at -e line 1.

Maybe the test only needs slight adaption to accept both errno codes.

A possible patch is attached.

I had to manually apply the patch because it was created against ./dist/PathTools rather than against . (the top of the core distribution). Please check. It's now available for smoking in this branch​:

smoke-me/jkeenan/slaven/133534-path-tools

Anyone who can test the branch inside a docker container, please do so.

Thank you very much.
--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

p5pRT commented Oct 3, 2018

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

@p5pRT
Copy link
Author

p5pRT commented Oct 4, 2018

From @eserte

Dana Wed, 03 Oct 2018 07​:21​:15 -0700, jkeenan reče​:

On Tue, 02 Oct 2018 13​:43​:10 GMT, slaven@​rezic.de wrote​:

Dana Thu, 20 Sep 2018 07​:10​:47 -0700, slaven@​rezic.de reče​:

This is a bug report for perl from slaven@​rezic.de,
generated with the help of perlbug 1.40 running under perl 5.20.2.

-----------------------------------------------------------------
t/cwd_enoent.t fails if run in a docker container​:

...
# Failed test 'perl getcwd errno on non-existent directory'
# at t/cwd_enoent.t line 39.
# got​: '116'
# expected​: '2'

# Failed test 'perl abs_path errno on non-existent directory'
# at t/cwd_enoent.t line 44.
# got​: '116'
# expected​: '2'
# Looks like you failed 2 tests of 8.
t/cwd_enoent.t .....
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/8 subtests
...

It seems to fail also in other environments --- see
http​://www.cpantesters.org/cpan/report/eeab8488-ac6c-11e8-8fb1-
ef5133556b3f
which looks like a NFS setup (but better ask Nigel Horne).

In both cases stat(.) returns ESTALE instead of the expected
ENOENT.
Reproducible in an oneliner which has to be run in a docker
container​:

$ docker run -it ubuntu​:bionic bash
$ apt-get update && apt-get install -y libautodie-perl
$ perl -Mautodie -e '$d = "/tmp/bla"; mkdir $d; chdir $d; rmdir $d;
stat(".") or warn $!'
Stale file handle at -e line 1.

Maybe the test only needs slight adaption to accept both errno
codes.

A possible patch is attached.

I had to manually apply the patch because it was created against
./dist/PathTools rather than against . (the top of the core
distribution).

Actually I did not report against perl5, but against the CPAN distribution PathTools, and did also the patch against the cpan dist. Unfortunately the issue tracker is the same for both.

Please check. It's now available for smoking in this
branch​:

smoke-me/jkeenan/slaven/133534-path-tools

Anyone who can test the branch inside a docker container, please do
so.

Here's a Dockerfile to test this. You can swap the git-clone commands to verify that blead fails on this test file.

# docker build -t perl-test . && docker run perl-test
FROM debian​:stretch
RUN echo "cache invalidation #1"
RUN apt-get -y update
RUN apt-get -y install build-essential git
RUN echo "cache invalidation #1"
WORKDIR /tmp
RUN git clone --depth=1 --branch=smoke-me/jkeenan/slaven/133534-path-tools git​://perl5.git.perl.org/perl.git
#RUN git clone --depth=1 --branch=blead git​://perl5.git.perl.org/perl.git
WORKDIR /tmp/perl
RUN ./configure.gnu -Dusedevel --prefix=/opt/perl
RUN make -j4
CMD ./perl -I. -MTestInit dist/PathTools/t/cwd_enoent.t

@p5pRT
Copy link
Author

p5pRT commented Oct 4, 2018

From @jkeenan

On 10/04/2018 05​:25 AM, slaven@​rezic.de via RT wrote​:

Dana Wed, 03 Oct 2018 07​:21​:15 -0700, jkeenan reče​:

On Tue, 02 Oct 2018 13​:43​:10 GMT, slaven@​rezic.de wrote​:

Dana Thu, 20 Sep 2018 07​:10​:47 -0700, slaven@​rezic.de reče​:

This is a bug report for perl from slaven@​rezic.de,
generated with the help of perlbug 1.40 running under perl 5.20.2.

-----------------------------------------------------------------
t/cwd_enoent.t fails if run in a docker container​:

...
# Failed test 'perl getcwd errno on non-existent directory'
# at t/cwd_enoent.t line 39.
# got​: '116'
# expected​: '2'

# Failed test 'perl abs_path errno on non-existent directory'
# at t/cwd_enoent.t line 44.
# got​: '116'
# expected​: '2'
# Looks like you failed 2 tests of 8.
t/cwd_enoent.t .....
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/8 subtests
...

It seems to fail also in other environments --- see
http​://www.cpantesters.org/cpan/report/eeab8488-ac6c-11e8-8fb1-
ef5133556b3f
which looks like a NFS setup (but better ask Nigel Horne).

In both cases stat(.) returns ESTALE instead of the expected
ENOENT.
Reproducible in an oneliner which has to be run in a docker
container​:

$ docker run -it ubuntu​:bionic bash
$ apt-get update && apt-get install -y libautodie-perl
$ perl -Mautodie -e '$d = "/tmp/bla"; mkdir $d; chdir $d; rmdir $d;
stat(".") or warn $!'
Stale file handle at -e line 1.

Maybe the test only needs slight adaption to accept both errno
codes.

A possible patch is attached.

I had to manually apply the patch because it was created against
./dist/PathTools rather than against . (the top of the core
distribution).

Actually I did not report against perl5, but against the CPAN distribution PathTools, and did also the patch against the cpan dist. Unfortunately the issue tracker is the same for both.

Please check. It's now available for smoking in this
branch​:

smoke-me/jkeenan/slaven/133534-path-tools

Anyone who can test the branch inside a docker container, please do
so.

Here's a Dockerfile to test this. You can swap the git-clone commands to verify that blead fails on this test file.

# docker build -t perl-test . && docker run perl-test
FROM debian​:stretch
RUN echo "cache invalidation #1"
RUN apt-get -y update
RUN apt-get -y install build-essential git
RUN echo "cache invalidation #1"
WORKDIR /tmp
RUN git clone --depth=1 --branch=smoke-me/jkeenan/slaven/133534-path-tools git​://perl5.git.perl.org/perl.git
#RUN git clone --depth=1 --branch=blead git​://perl5.git.perl.org/perl.git
WORKDIR /tmp/perl
RUN ./configure.gnu -Dusedevel --prefix=/opt/perl
RUN make -j4
CMD ./perl -I. -MTestInit dist/PathTools/t/cwd_enoent.t

---
via perlbug​: queue​: perl5 status​: open
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133534

Is there anyone with both docker and a git checkout of blead who could
test the above?

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

p5pRT commented Oct 4, 2018

From @eserte

Dana Thu, 04 Oct 2018 11​:57​:43 -0700, jkeenan@​pobox.com reče​:

On 10/04/2018 05​:25 AM, slaven@​rezic.de via RT wrote​:

Dana Wed, 03 Oct 2018 07​:21​:15 -0700, jkeenan reče​:

On Tue, 02 Oct 2018 13​:43​:10 GMT, slaven@​rezic.de wrote​:

Dana Thu, 20 Sep 2018 07​:10​:47 -0700, slaven@​rezic.de reče​:

This is a bug report for perl from slaven@​rezic.de,
generated with the help of perlbug 1.40 running under perl 5.20.2.

-----------------------------------------------------------------
t/cwd_enoent.t fails if run in a docker container​:

...
# Failed test 'perl getcwd errno on non-existent directory'
# at t/cwd_enoent.t line 39.
# got​: '116'
# expected​: '2'

# Failed test 'perl abs_path errno on non-existent directory'
# at t/cwd_enoent.t line 44.
# got​: '116'
# expected​: '2'
# Looks like you failed 2 tests of 8.
t/cwd_enoent.t .....
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/8 subtests
...

It seems to fail also in other environments --- see
http​://www.cpantesters.org/cpan/report/eeab8488-ac6c-11e8-8fb1-
ef5133556b3f
which looks like a NFS setup (but better ask Nigel Horne).

In both cases stat(.) returns ESTALE instead of the expected
ENOENT.
Reproducible in an oneliner which has to be run in a docker
container​:

$ docker run -it ubuntu​:bionic bash
$ apt-get update && apt-get install -y libautodie-perl
$ perl -Mautodie -e '$d = "/tmp/bla"; mkdir $d; chdir $d; rmdir
$d;
stat(".") or warn $!'
Stale file handle at -e line 1.

Maybe the test only needs slight adaption to accept both errno
codes.

A possible patch is attached.

I had to manually apply the patch because it was created against
./dist/PathTools rather than against . (the top of the core
distribution).

Actually I did not report against perl5, but against the CPAN
distribution PathTools, and did also the patch against the cpan dist.
Unfortunately the issue tracker is the same for both.

Please check. It's now available for smoking in this
branch​:

smoke-me/jkeenan/slaven/133534-path-tools

Anyone who can test the branch inside a docker container, please do
so.

Here's a Dockerfile to test this. You can swap the git-clone commands
to verify that blead fails on this test file.

# docker build -t perl-test . && docker run perl-test
FROM debian​:stretch
RUN echo "cache invalidation #1"
RUN apt-get -y update
RUN apt-get -y install build-essential git
RUN echo "cache invalidation #1"
WORKDIR /tmp
RUN git clone --depth=1 --branch=smoke-me/jkeenan/slaven/133534-path-
tools git​://perl5.git.perl.org/perl.git
#RUN git clone --depth=1 --branch=blead
git​://perl5.git.perl.org/perl.git
WORKDIR /tmp/perl
RUN ./configure.gnu -Dusedevel --prefix=/opt/perl
RUN make -j4
CMD ./perl -I. -MTestInit dist/PathTools/t/cwd_enoent.t

---
via perlbug​: queue​: perl5 status​: open
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133534

Is there anyone with both docker and a git checkout of blead who could
test the above?

Only docker needed. The Dockerfile cares for the git checkout itself.

@p5pRT
Copy link
Author

p5pRT commented Oct 4, 2018

From @jkeenan

On Thu, 04 Oct 2018 19​:28​:02 GMT, slaven@​rezic.de wrote​:

Dana Thu, 04 Oct 2018 11​:57​:43 -0700, jkeenan@​pobox.com reče​:

On 10/04/2018 05​:25 AM, slaven@​rezic.de via RT wrote​:

Dana Wed, 03 Oct 2018 07​:21​:15 -0700, jkeenan reče​:

On Tue, 02 Oct 2018 13​:43​:10 GMT, slaven@​rezic.de wrote​:

Dana Thu, 20 Sep 2018 07​:10​:47 -0700, slaven@​rezic.de reče​:

This is a bug report for perl from slaven@​rezic.de,
generated with the help of perlbug 1.40 running under perl 5.20.2.

-----------------------------------------------------------------
t/cwd_enoent.t fails if run in a docker container​:

...
# Failed test 'perl getcwd errno on non-existent directory'
# at t/cwd_enoent.t line 39.
# got​: '116'
# expected​: '2'

# Failed test 'perl abs_path errno on non-existent directory'
# at t/cwd_enoent.t line 44.
# got​: '116'
# expected​: '2'
# Looks like you failed 2 tests of 8.
t/cwd_enoent.t .....
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/8 subtests
...

It seems to fail also in other environments --- see
http​://www.cpantesters.org/cpan/report/eeab8488-ac6c-11e8-8fb1-
ef5133556b3f
which looks like a NFS setup (but better ask Nigel Horne).

In both cases stat(.) returns ESTALE instead of the expected
ENOENT.
Reproducible in an oneliner which has to be run in a docker
container​:

$ docker run -it ubuntu​:bionic bash
$ apt-get update && apt-get install -y libautodie-perl
$ perl -Mautodie -e '$d = "/tmp/bla"; mkdir $d; chdir $d; rmdir
$d;
stat(".") or warn $!'
Stale file handle at -e line 1.

Maybe the test only needs slight adaption to accept both errno
codes.

A possible patch is attached.

I had to manually apply the patch because it was created against
./dist/PathTools rather than against . (the top of the core
distribution).

Actually I did not report against perl5, but against the CPAN
distribution PathTools, and did also the patch against the cpan dist.
Unfortunately the issue tracker is the same for both.

Please check. It's now available for smoking in this
branch​:

smoke-me/jkeenan/slaven/133534-path-tools

Anyone who can test the branch inside a docker container, please do
so.

Here's a Dockerfile to test this. You can swap the git-clone commands
to verify that blead fails on this test file.

# docker build -t perl-test . && docker run perl-test
FROM debian​:stretch
RUN echo "cache invalidation #1"
RUN apt-get -y update
RUN apt-get -y install build-essential git
RUN echo "cache invalidation #1"
WORKDIR /tmp
RUN git clone --depth=1 --branch=smoke-me/jkeenan/slaven/133534-path-
tools git​://perl5.git.perl.org/perl.git
#RUN git clone --depth=1 --branch=blead
git​://perl5.git.perl.org/perl.git
WORKDIR /tmp/perl
RUN ./configure.gnu -Dusedevel --prefix=/opt/perl
RUN make -j4
CMD ./perl -I. -MTestInit dist/PathTools/t/cwd_enoent.t

---
via perlbug​: queue​: perl5 status​: open
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133534

Is there anyone with both docker and a git checkout of blead who could
test the above?

Only docker needed. The Dockerfile cares for the git checkout itself.

1. General​: Would it be possible to set up a reusable smoke-testing rig for Docker?

2. Specific​: I placed the text you posted in a file called Dockerfile and then issued this command​:

#####
sudo docker build -t perl-test . && docker run perl-test
#####

It appears to have built a container, built perl, but quit before 'make test'.

#####
  Everything is up to date. Type 'make test' to run test suite.
Removing intermediate container 61fe4c1b8442
---> 95eef459ead1
Step 11/11 : CMD ./perl -I. -MTestInit dist/PathTools/t/cwd_enoent.t
---> Running in 3ab0b204f6de
Removing intermediate container 3ab0b204f6de
---> c72bf919b01d
Successfully built c72bf919b01d
Successfully tagged perl-test​:latest
docker​: Got permission denied while trying to connect to the Docker daemon socket at unix​:///var/run/docker.sock​: Post http​://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create​: dial unix /var/run/docker.sock​: connect​: permission denied.
See 'docker run --help'.
#####

What went wrong? What do I do here?

--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

p5pRT commented Oct 4, 2018

From @eserte

"James E Keenan via RT" <perlbug-followup@​perl.org> writes​:

On Thu, 04 Oct 2018 19​:28​:02 GMT, slaven@​rezic.de wrote​:

Dana Thu, 04 Oct 2018 11​:57​:43 -0700, jkeenan@​pobox.com reče​:

On 10/04/2018 05​:25 AM, slaven@​rezic.de via RT wrote​:

Dana Wed, 03 Oct 2018 07​:21​:15 -0700, jkeenan reče​:

On Tue, 02 Oct 2018 13​:43​:10 GMT, slaven@​rezic.de wrote​:

Dana Thu, 20 Sep 2018 07​:10​:47 -0700, slaven@​rezic.de reče​:

This is a bug report for perl from slaven@​rezic.de,
generated with the help of perlbug 1.40 running under perl 5.20.2.

-----------------------------------------------------------------
t/cwd_enoent.t fails if run in a docker container​:

...
# Failed test 'perl getcwd errno on non-existent directory'
# at t/cwd_enoent.t line 39.
# got​: '116'
# expected​: '2'

# Failed test 'perl abs_path errno on non-existent directory'
# at t/cwd_enoent.t line 44.
# got​: '116'
# expected​: '2'
# Looks like you failed 2 tests of 8.
t/cwd_enoent.t .....
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/8 subtests
...

It seems to fail also in other environments --- see
http​://www.cpantesters.org/cpan/report/eeab8488-ac6c-11e8-8fb1-
ef5133556b3f
which looks like a NFS setup (but better ask Nigel Horne).

In both cases stat(.) returns ESTALE instead of the expected
ENOENT.
Reproducible in an oneliner which has to be run in a docker
container​:

$ docker run -it ubuntu​:bionic bash
$ apt-get update && apt-get install -y libautodie-perl
$ perl -Mautodie -e '$d = "/tmp/bla"; mkdir $d; chdir $d; rmdir
$d;
stat(".") or warn $!'
Stale file handle at -e line 1.

Maybe the test only needs slight adaption to accept both errno
codes.

A possible patch is attached.

I had to manually apply the patch because it was created against
./dist/PathTools rather than against . (the top of the core
distribution).

Actually I did not report against perl5, but against the CPAN
distribution PathTools, and did also the patch against the cpan dist.
Unfortunately the issue tracker is the same for both.

Please check. It's now available for smoking in this
branch​:

smoke-me/jkeenan/slaven/133534-path-tools

Anyone who can test the branch inside a docker container, please do
so.

Here's a Dockerfile to test this. You can swap the git-clone commands
to verify that blead fails on this test file.

# docker build -t perl-test . && docker run perl-test
FROM debian​:stretch
RUN echo "cache invalidation #1"
RUN apt-get -y update
RUN apt-get -y install build-essential git
RUN echo "cache invalidation #1"
WORKDIR /tmp
RUN git clone --depth=1 --branch=smoke-me/jkeenan/slaven/133534-path-
tools git​://perl5.git.perl.org/perl.git
#RUN git clone --depth=1 --branch=blead
git​://perl5.git.perl.org/perl.git
WORKDIR /tmp/perl
RUN ./configure.gnu -Dusedevel --prefix=/opt/perl
RUN make -j4
CMD ./perl -I. -MTestInit dist/PathTools/t/cwd_enoent.t

---
via perlbug​: queue​: perl5 status​: open
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133534

Is there anyone with both docker and a git checkout of blead who could
test the above?

Only docker needed. The Dockerfile cares for the git checkout itself.

1. General​: Would it be possible to set up a reusable smoke-testing rig for Docker?

Probably. You just have to take care of docker's caching --- use it if
it helps (e.g. when writing Dockerfiles from scratch) and invalidate it
if it's needed (in the case above, the outcome of "git clone" would be
cached which is probably not useful in a regular smoker setup).

2. Specific​: I placed the text you posted in a file called Dockerfile and then issued this command​:

#####
sudo docker build -t perl-test . && docker run perl-test
#####

It appears to have built a container, built perl, but quit before 'make test'.

#####
Everything is up to date. Type 'make test' to run test suite.
Removing intermediate container 61fe4c1b8442
---> 95eef459ead1
Step 11/11 : CMD ./perl -I. -MTestInit dist/PathTools/t/cwd_enoent.t
---> Running in 3ab0b204f6de
Removing intermediate container 3ab0b204f6de
---> c72bf919b01d
Successfully built c72bf919b01d
Successfully tagged perl-test​:latest
docker​: Got permission denied while trying to connect to the Docker daemon socket at unix​:///var/run/docker.sock​: Post http​://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create​: dial unix /var/run/docker.sock​: connect​: permission denied.
See 'docker run --help'.
#####

What went wrong? What do I do here?

The "docker run" command also needs sudo.

Or, for more convenience, you can add your unix user to the "docker"
group, then calling sudo is not needed anymore.

Regards,
  Slaven

--
Slaven Rezic - slaven <at> rezic <dot> de

  Berlin Perl Mongers - http​://berlin.pm.org

@p5pRT
Copy link
Author

p5pRT commented Oct 11, 2018

From @jkeenan

On Thu, 04 Oct 2018 21​:10​:43 GMT, slaven@​rezic.de wrote​:

"James E Keenan via RT" <perlbug-followup@​perl.org> writes​:

On Thu, 04 Oct 2018 19​:28​:02 GMT, slaven@​rezic.de wrote​:

Dana Thu, 04 Oct 2018 11​:57​:43 -0700, jkeenan@​pobox.com reče​:

On 10/04/2018 05​:25 AM, slaven@​rezic.de via RT wrote​:

Dana Wed, 03 Oct 2018 07​:21​:15 -0700, jkeenan reče​:

On Tue, 02 Oct 2018 13​:43​:10 GMT, slaven@​rezic.de wrote​:

Dana Thu, 20 Sep 2018 07​:10​:47 -0700, slaven@​rezic.de reče​:

This is a bug report for perl from slaven@​rezic.de,
generated with the help of perlbug 1.40 running under perl
5.20.2.

-----------------------------------------------------------------
t/cwd_enoent.t fails if run in a docker container​:

...
# Failed test 'perl getcwd errno on non-existent directory'
# at t/cwd_enoent.t line 39.
# got​: '116'
# expected​: '2'

# Failed test 'perl abs_path errno on non-existent
directory'
# at t/cwd_enoent.t line 44.
# got​: '116'
# expected​: '2'
# Looks like you failed 2 tests of 8.
t/cwd_enoent.t .....
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/8 subtests
...

It seems to fail also in other environments --- see
http​://www.cpantesters.org/cpan/report/eeab8488-ac6c-11e8-
8fb1-
ef5133556b3f
which looks like a NFS setup (but better ask Nigel Horne).

In both cases stat(.) returns ESTALE instead of the expected
ENOENT.
Reproducible in an oneliner which has to be run in a docker
container​:

$ docker run -it ubuntu​:bionic bash
$ apt-get update && apt-get install -y libautodie-perl
$ perl -Mautodie -e '$d = "/tmp/bla"; mkdir $d; chdir $d;
rmdir
$d;
stat(".") or warn $!'
Stale file handle at -e line 1.

Maybe the test only needs slight adaption to accept both
errno
codes.

A possible patch is attached.

I had to manually apply the patch because it was created
against
./dist/PathTools rather than against . (the top of the core
distribution).

Actually I did not report against perl5, but against the CPAN
distribution PathTools, and did also the patch against the cpan
dist.
Unfortunately the issue tracker is the same for both.

Please check. It's now available for smoking in this
branch​:

smoke-me/jkeenan/slaven/133534-path-tools

Anyone who can test the branch inside a docker container,
please do
so.

Here's a Dockerfile to test this. You can swap the git-clone
commands
to verify that blead fails on this test file.

# docker build -t perl-test . && docker run perl-test
FROM debian​:stretch
RUN echo "cache invalidation #1"
RUN apt-get -y update
RUN apt-get -y install build-essential git
RUN echo "cache invalidation #1"
WORKDIR /tmp
RUN git clone --depth=1 --branch=smoke-me/jkeenan/slaven/133534-
path-
tools git​://perl5.git.perl.org/perl.git
#RUN git clone --depth=1 --branch=blead
git​://perl5.git.perl.org/perl.git
WORKDIR /tmp/perl
RUN ./configure.gnu -Dusedevel --prefix=/opt/perl
RUN make -j4
CMD ./perl -I. -MTestInit dist/PathTools/t/cwd_enoent.t

---
via perlbug​: queue​: perl5 status​: open
https://rt-archive.perl.org/perl5/Ticket/Display.html?id=133534

Is there anyone with both docker and a git checkout of blead who
could
test the above?

Only docker needed. The Dockerfile cares for the git checkout
itself.

1. General​: Would it be possible to set up a reusable smoke-testing
rig for Docker?

Probably. You just have to take care of docker's caching --- use it if
it helps (e.g. when writing Dockerfiles from scratch) and invalidate
it
if it's needed (in the case above, the outcome of "git clone" would be
cached which is probably not useful in a regular smoker setup).

2. Specific​: I placed the text you posted in a file called Dockerfile
and then issued this command​:

#####
sudo docker build -t perl-test . && docker run perl-test
#####

It appears to have built a container, built perl, but quit before
'make test'.

#####
Everything is up to date. Type 'make test' to run test suite.
Removing intermediate container 61fe4c1b8442
---> 95eef459ead1
Step 11/11 : CMD ./perl -I. -MTestInit dist/PathTools/t/cwd_enoent.t
---> Running in 3ab0b204f6de
Removing intermediate container 3ab0b204f6de
---> c72bf919b01d
Successfully built c72bf919b01d
Successfully tagged perl-test​:latest
docker​: Got permission denied while trying to connect to the Docker
daemon socket at unix​:///var/run/docker.sock​: Post
http​://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create​: dial unix
/var/run/docker.sock​: connect​: permission denied.
See 'docker run --help'.
#####

What went wrong? What do I do here?

The "docker run" command also needs sudo.

Or, for more convenience, you can add your unix user to the "docker"
group, then calling sudo is not needed anymore.

Regards,
Slaven

Pushed to blead in commit commit 8508806. Thanks to Mithaldu_ and Getty on #toolchain for getting this tested in a Docker environment.

--
James E Keenan (jkeenan@​cpan.org)

@p5pRT
Copy link
Author

p5pRT commented Oct 11, 2018

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant