Skip to content
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

[PATCH] regen/regcomp.pl: close FH before unlink #16445

Closed
p5pRT opened this issue Mar 1, 2018 · 7 comments
Closed

[PATCH] regen/regcomp.pl: close FH before unlink #16445

p5pRT opened this issue Mar 1, 2018 · 7 comments

Comments

@p5pRT
Copy link

p5pRT commented Mar 1, 2018

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

Searchable as RT132924$

@p5pRT
Copy link
Author

p5pRT commented Mar 1, 2018

From @bulk88

Created by @bulk88

See attached patch.

Perl Info

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)





@p5pRT
Copy link
Author

p5pRT commented Mar 1, 2018

From @bulk88

0001-regen-regcomp.pl-close-FH-before-unlink.patch
From 1d745974e0566d9c8e5d7dd3936e3585940d8e64 Mon Sep 17 00:00:00 2001
From: Daniel Dragan <bulk88@hotmail.com>
Date: Wed, 28 Feb 2018 19:42:19 -0500
Subject: [PATCH] regen/regcomp.pl: close FH before unlink

On Win32, regen.pl failed if something caused different checksum for
perldebguts.pod and the old file was attempted to be unlinked/renamed, but
that was failing because the FH is still open (Win32 specific thing).
So close the FH before renaming the file instead of having scope exit close
the FH after close_and_rename() executes.

the fixed error console log:

changed 'pod/perldebguts.pod-new' to 'pod/perldebguts.pod'
Couldn't unlink pod/perldebguts.pod: Permission denied
renaming pod/perldebguts.pod-new to pod/perldebguts.pod: Permission denied at ./
regen/regen_lib.pl line 120, <$oldguts> line 1046.
Changed: pod/perldebguts.pod
C:\perl\bin\perl.exe -I. regen/regcomp.pl -v failed: 3328 at regen.pl line 20, <
DATA> line 8.
---
 regen/regcomp.pl |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/regen/regcomp.pl b/regen/regcomp.pl
index 88c0ac9..ffb7d7a 100644
--- a/regen/regcomp.pl
+++ b/regen/regcomp.pl
@@ -649,7 +649,8 @@ END_OF_DESCR
     while (<$oldguts>) {
         last if /=for regcomp.pl end/;
     }
-    do { print } while <$oldguts>;
+    do { print } while <$oldguts>; #win32 can't unlink an open FH
+    close $oldguts or die "Error closing pod/perldebguts.pod: $!";
     select $old_fh;
     close_and_rename($guts);
 }
-- 
1.7.9.msysgit.0

@p5pRT
Copy link
Author

p5pRT commented Mar 1, 2018

From @tonycoz

On Wed, 28 Feb 2018 18​:18​:25 -0800, bulk88 wrote​:

See attached patch.

Thanks, applied as 4ac5f10.

Tony

@p5pRT
Copy link
Author

p5pRT commented Mar 1, 2018

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

@p5pRT
Copy link
Author

p5pRT commented Mar 1, 2018

@tonycoz - Status changed from 'open' to 'pending release'

@p5pRT
Copy link
Author

p5pRT commented Jun 23, 2018

From @khwilliamson

Thank you for filing this report. You have helped make Perl better.

With the release yesterday of Perl 5.28.0, this and 185 other issues have been
resolved.

Perl 5.28.0 may be downloaded via​:
https://metacpan.org/release/XSAWYERX/perl-5.28.0

If you find that the problem persists, feel free to reopen this ticket.

@p5pRT
Copy link
Author

p5pRT commented Jun 23, 2018

@khwilliamson - Status changed from 'pending release' 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