Skip Menu |
Report information
Id: 132795
Status: pending release
Priority: 0/
Queue: perl5

Owner: jkeenan <jkeenan [at] cpan.org>
Requestors: bulk88 <bulk88 [at] hotmail.com>
Cc:
AdminCc:

Operating System: (no value)
PatchStatus: (no value)
Severity: low
Type: core
Perl Version: 5.27.9
Fixed In: (no value)

Attachments
0001-Ensure-that-we-don-t-pick-up-any-system-perl-librari.patch



From: bulk 88 <bulk88 [...] hotmail.com>
To: "perlbug [...] perl.org" <perlbug [...] perl.org>
Subject: t/porting/bench.t uses system perl's /lib during testing
Date: Thu, 1 Feb 2018 00:13:02 +0000
Download (untitled) / with headers
text/plain 7.1k
This is a bug report for perl from bulk88@hotmail.com, generated with the help of perlbug 1.41 running under perl 5.27.9. ----------------------------------------------------------------- [Please describe your issue here] While upgrading blead perl, I ran into a test failure where t/porting/bench.t (added recently in 5.27.2 in commit 6568b26dddaf1bc89610d859ebe908bebdeb714c ) picked up a /lib in @INC from outside the build directory. ----------------------- C:\p527\srcnew\t>.\perl -I.. -MTestInit porting/bench.t porting/bench.t: Perl lib version (5.23.5) doesn't match executable 'C:\p527\src new\t\perl.exe' version (5.27.9) at ../lib/Config.pm line 62. Compilation failed in require at porting/bench.t line 17. BEGIN failed--compilation aborted at porting/bench.t line 17. C:\p527\srcnew\t> ----------------------- This is the same family of bugs from now closed ticket https://rt.perl.org/Ticket/Display.html?id=116971 . ".\perl -I.. -MTestInit porting/bench.t" with the -I on cmd line is how harness typically runs test scripts. Top of bench.t has ------------------- BEGIN { chdir '..' if -f 'test.pl' && -f 'thread_it.pl'; require './t/test.pl'; push @INC, 'lib'; } ------------------- and that chdir changed cwd up one to src tree root, then combined with harness's -I.. made perl reach outside the source tree. I'll note all the other files in t/porting use assignment to @INC not a push(). changing "push @INC, 'lib';" to "@INC = 'lib';" made the test pass (actually skip) for me. ---------------- C:\p527\srcnew\t>.\perl -I.. -MTestInit porting/bench.t 1..0 # Skip not linux C:\p527\srcnew\t> ---------------- A system call log shows the perl proc reached outside its build dir. ------------------------ 7:06:42.1747735 PM CreateFile 3352 perl.exe SUCCESS C:\p527\srcnew\t\porting\bench.t 7:06:42.1832055 PM CreateFile 3352 perl.exe NAME NOT FOUND C:\p527\srcnew\TestInit.pmc 7:06:42.1843928 PM CreateFile 3352 perl.exe SUCCESS C:\p527\srcnew\TestInit.pm 7:06:42.1879138 PM CreateFile 3352 perl.exe PATH NOT FOUND C:\p527\srcnew\t\t\TEST 7:06:42.1894089 PM CreateFile 3352 perl.exe NAME NOT FOUND C:\p527\srcnew\t\t 7:06:42.1915490 PM CreateFile 3352 perl.exe SUCCESS C:\p527\srcnew\t\test.pl 7:06:42.1941938 PM CreateFile 3352 perl.exe SUCCESS C:\p527\srcnew\t 7:06:42.1957033 PM CreateFile 3352 perl.exe SUCCESS C:\p527\srcnew\t\thread_it.pl 7:06:42.1972779 PM CreateFile 3352 perl.exe SUCCESS C:\p527\srcnew\t 7:06:42.1994306 PM CreateFile 3352 perl.exe SUCCESS C:\p527\srcnew 7:06:42.2010337 PM CreateFile 3352 perl.exe SUCCESS C:\p527\srcnew\t\test.pl 7:06:42.2289290 PM CreateFile 3352 perl.exe IS DIRECTORY C:\p527\srcnew\t 7:06:42.2301291 PM CreateFile 3352 perl.exe SUCCESS C:\p527\srcnew 7:06:42.2339684 PM CreateFile 3352 perl.exe NAME NOT FOUND C:\p527\srcnew\t\tmp3352A 7:06:42.2354930 PM CreateFile 3352 perl.exe NAME NOT FOUND C:\p527\lib\warnings.pmc 7:06:42.2366704 PM CreateFile 3352 perl.exe SUCCESS C:\p527\lib\warnings.pm 7:06:42.2478595 PM CreateFile 3352 perl.exe NAME NOT FOUND C:\p527\lib\strict.pmc 7:06:42.2490689 PM CreateFile 3352 perl.exe SUCCESS C:\p527\lib\strict.pm 7:06:42.2529658 PM CreateFile 3352 perl.exe NAME NOT FOUND C:\p527\lib\Config.pmc 7:06:42.2541375 PM CreateFile 3352 perl.exe SUCCESS C:\p527\lib\Config.pm 7:06:42.2567177 PM CreateFile 3352 perl.exe NAME NOT FOUND C:\p527\lib\vars.pmc 7:06:42.2578865 PM CreateFile 3352 perl.exe SUCCESS C:\p527\lib\vars.pm 7:06:42.2608210 PM CreateFile 3352 perl.exe NAME NOT FOUND C:\p527\lib\warnings\register.pmc 7:06:42.2622383 PM CreateFile 3352 perl.exe SUCCESS C:\p527\lib\warnings\register.pm 7:06:42.2686526 PM CreateFile 3352 perl.exe NAME NOT FOUND C:\p527\srcnew\t\tmp3352A 7:06:42.2700992 PM CreateFile 3352 perl.exe NAME NOT FOUND C:\p527\srcnew\t\tmp3352A ------------------------ [Please do not change anything below this line] ----------------------------------------------------------------- --- Flags: category=core severity=low --- Site configuration information for perl 5.27.9: Configured by Administrator at Tue Jan 30 20:34:30 2018. Summary of my perl5 (revision 5 version 27 subversion 9) configuration: Platform: osname=MSWin32 osvers=5.2.3790 archname=MSWin32-x86-multi-thread uname='' config_args='undef' hint=recommended useposix=true d_sigaction=undef useithreads=define usemultiplicity=define use64bitint=undef use64bitall=undef uselongdouble=undef usemymalloc=n default_inc_excludes_dot=define bincompat5005=undef Compiler: cc='cl' ccflags ='-nologo -GF -W3 -O1 -MD -Zi -DNDEBUG -GL -DWIN32 -D_CONSOLE -DNO_STRICT -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY' optimize='-O1 -MD -Zi -DNDEBUG -GL' cppflags='-DWIN32' ccversion='15.00.30729.01' gccversion='' gccosandvers='' intsize=4 longsize=4 ptrsize=4 doublesize=8 byteorder=1234 doublekind=3 d_longlong=undef longlongsize=8 d_longdbl=define longdblsize=8 longdblkind=0 ivtype='long' ivsize=4 nvtype='double' nvsize=8 Off_t='__int64' lseeksize=8 alignbytes=8 prototype=define Linker and Libraries: ld='link' ldflags ='-nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"c:\perl\lib\CORE" -machine:x86' libpth="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib" libs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib perllibs=oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib libc=msvcrt.lib so=dll useshrplib=true libperl=perl527.lib gnulibc_version='' Dynamic Linking: dlsrc=dl_win32.xs dlext=dll d_dlsymun=undef ccdlflags=' ' cccdlflags=' ' lddlflags='-dll -nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"c:\perl\lib\CORE" -machine:x86' --- @INC for perl 5.27.9: lib C:/p527/srcnew/lib --- Environment for perl 5.27.9: CYGWIN=tty HOME (unset) LANG (unset) LANGUAGE (unset) LD_LIBRARY_PATH=/usr/lib/x86:/usr/X11R6/lib LOGDIR (unset) PATH=C:\WINDOWS\system32;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN;C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin;C:\Perl\bin;C:\WINDOWS;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files (x86)\Git\bin;C:\sp3220\c\bin; PERL_BADLANG (unset) SHELL (unset)
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 4.4k
On Thu, 01 Feb 2018 00:13:16 GMT, bulk88 wrote: Show quoted text
> This is a bug report for perl from bulk88@hotmail.com, > generated with the help of perlbug 1.41 running under perl 5.27.9. > > > ----------------------------------------------------------------- > [Please describe your issue here] > > While upgrading blead perl, I ran into a test failure where > t/porting/bench.t (added recently in 5.27.2 in commit > 6568b26dddaf1bc89610d859ebe908bebdeb714c ) picked up a /lib in @INC from > outside the build directory. > > ----------------------- > C:\p527\srcnew\t>.\perl -I.. -MTestInit porting/bench.t > porting/bench.t: Perl lib version (5.23.5) doesn't match executable > 'C:\p527\src > new\t\perl.exe' version (5.27.9) at ../lib/Config.pm line 62. > Compilation failed in require at porting/bench.t line 17. > BEGIN failed--compilation aborted at porting/bench.t line 17. > > C:\p527\srcnew\t> > ----------------------- > > This is the same family of bugs from now closed ticket > https://rt.perl.org/Ticket/Display.html?id=116971 . ".\perl -I.. > -MTestInit porting/bench.t" with the -I on cmd line is how harness > typically runs test scripts. > > Top of bench.t has > > ------------------- > BEGIN { > chdir '..' if -f 'test.pl' && -f 'thread_it.pl'; > require './t/test.pl'; > push @INC, 'lib'; > } > ------------------- > and that chdir changed cwd up one to src tree root, then combined with > harness's -I.. made perl reach outside the source tree. I'll note all > the other files in t/porting use assignment to @INC not a push(). > changing "push @INC, 'lib';" to "@INC = 'lib';" made the test pass > (actually skip) for me. > ---------------- > C:\p527\srcnew\t>.\perl -I.. -MTestInit porting/bench.t > 1..0 # Skip not linux > > C:\p527\srcnew\t> > ---------------- > > A system call log shows the perl proc reached outside its build dir. > ------------------------ > 7:06:42.1747735 PM CreateFile 3352 perl.exe SUCCESS > C:\p527\srcnew\t\porting\bench.t > 7:06:42.1832055 PM CreateFile 3352 perl.exe NAME NOT > FOUND C:\p527\srcnew\TestInit.pmc > 7:06:42.1843928 PM CreateFile 3352 perl.exe SUCCESS > C:\p527\srcnew\TestInit.pm > 7:06:42.1879138 PM CreateFile 3352 perl.exe PATH NOT > FOUND C:\p527\srcnew\t\t\TEST > 7:06:42.1894089 PM CreateFile 3352 perl.exe NAME NOT > FOUND C:\p527\srcnew\t\t > 7:06:42.1915490 PM CreateFile 3352 perl.exe SUCCESS > C:\p527\srcnew\t\test.pl > 7:06:42.1941938 PM CreateFile 3352 perl.exe SUCCESS > C:\p527\srcnew\t > 7:06:42.1957033 PM CreateFile 3352 perl.exe SUCCESS > C:\p527\srcnew\t\thread_it.pl > 7:06:42.1972779 PM CreateFile 3352 perl.exe SUCCESS > C:\p527\srcnew\t > 7:06:42.1994306 PM CreateFile 3352 perl.exe SUCCESS > C:\p527\srcnew > 7:06:42.2010337 PM CreateFile 3352 perl.exe SUCCESS > C:\p527\srcnew\t\test.pl > 7:06:42.2289290 PM CreateFile 3352 perl.exe IS DIRECTORY > C:\p527\srcnew\t > 7:06:42.2301291 PM CreateFile 3352 perl.exe SUCCESS > C:\p527\srcnew > 7:06:42.2339684 PM CreateFile 3352 perl.exe NAME NOT > FOUND C:\p527\srcnew\t\tmp3352A > 7:06:42.2354930 PM CreateFile 3352 perl.exe NAME NOT > FOUND C:\p527\lib\warnings.pmc > 7:06:42.2366704 PM CreateFile 3352 perl.exe SUCCESS > C:\p527\lib\warnings.pm > 7:06:42.2478595 PM CreateFile 3352 perl.exe NAME NOT > FOUND C:\p527\lib\strict.pmc > 7:06:42.2490689 PM CreateFile 3352 perl.exe SUCCESS > C:\p527\lib\strict.pm > 7:06:42.2529658 PM CreateFile 3352 perl.exe NAME NOT > FOUND C:\p527\lib\Config.pmc > 7:06:42.2541375 PM CreateFile 3352 perl.exe SUCCESS > C:\p527\lib\Config.pm > 7:06:42.2567177 PM CreateFile 3352 perl.exe NAME NOT > FOUND C:\p527\lib\vars.pmc > 7:06:42.2578865 PM CreateFile 3352 perl.exe SUCCESS > C:\p527\lib\vars.pm > 7:06:42.2608210 PM CreateFile 3352 perl.exe NAME NOT > FOUND C:\p527\lib\warnings\register.pmc > 7:06:42.2622383 PM CreateFile 3352 perl.exe SUCCESS > C:\p527\lib\warnings\register.pm > 7:06:42.2686526 PM CreateFile 3352 perl.exe NAME NOT > FOUND C:\p527\srcnew\t\tmp3352A > 7:06:42.2700992 PM CreateFile 3352 perl.exe NAME NOT > FOUND C:\p527\srcnew\t\tmp3352A > ------------------------
Please review the patch attached. Thank you very much. -- James E Keenan (jkeenan@cpan.org)
Subject: 0001-Ensure-that-we-don-t-pick-up-any-system-perl-librari.patch
From 7176369a25e8f19ca42037b34cf29d3ca1c1b533 Mon Sep 17 00:00:00 2001 From: James E Keenan <jkeenan@cpan.org> Date: Wed, 31 Jan 2018 21:59:21 -0500 Subject: [PATCH] Ensure that we don't pick up any "system perl" libraries in @INC. We need a tightly defined @INC which, for this test file, only needs './lib' so that we can locate the two pragmata and Config. For: RT # 132795 --- t/porting/bench.t | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/t/porting/bench.t b/t/porting/bench.t index ee4c1c3..7c137c1 100644 --- a/t/porting/bench.t +++ b/t/porting/bench.t @@ -7,9 +7,9 @@ # See also t/porting/bench_selftest.pl BEGIN { - chdir '..' if -f 'test.pl' && -f 'thread_it.pl'; + chdir '..' if -f 'test.pl'; + @INC = ( './lib' ); require './t/test.pl'; - push @INC, 'lib'; } use warnings; @@ -22,7 +22,7 @@ use Config; # Only test on a platform likely to support forking, pipes, cachegrind # etc. Add other platforms if you think they're safe. -skip_all "not devel" unless -d ".git"; +skip_all "not devel" unless -d "./.git"; skip_all "not linux" unless $^O eq 'linux'; skip_all "no valgrind" unless -x '/bin/valgrind' || -x '/usr/bin/valgrind'; # Address sanitizer clashes horribly with cachegrind -- 2.7.4
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 258b
On Wed, 31 Jan 2018 19:04:02 -0800, jkeenan wrote: Show quoted text
> Please review the patch attached. > > Thank you very much.
Patch works for me. I have no comment on the other changes in that patch other than @INC assignment vs push. -- bulk88 ~ bulk88 at hotmail.com
RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 418b
On Thu, 01 Feb 2018 05:14:35 GMT, bulk88 wrote: Show quoted text
> On Wed, 31 Jan 2018 19:04:02 -0800, jkeenan wrote:
> > Please review the patch attached. > > > > Thank you very much.
> > Patch works for me. I have no comment on the other changes in that > patch other than @INC assignment vs push.
Patch pushed to blead in commit 361b6e563c00feb6d4adf1bd43689c04da3a3673. Thank you very much. -- James E Keenan (jkeenan@cpan.org)


This service is sponsored and maintained by Best Practical Solutions and runs on Perl.org infrastructure.

For issues related to this RT instance (aka "perlbug"), please contact perlbug-admin at perl.org