develooper Front page | perl.perl5.porters | Postings from May 2013

[perl #117969] use POSIX emits multiple warnings if used after "Cwd"

Thread Next
From:
Linda Walsh
Date:
May 12, 2013 01:02
Subject:
[perl #117969] use POSIX emits multiple warnings if used after "Cwd"
Message ID:
rt-3.6.HEAD-2650-1368320533-65.117969-75-0@perl.org
# New Ticket Created by  Linda Walsh 
# Please include the string:  [perl #117969]
# in the subject line of all future correspondence about this issue. 
# <URL: https://rt.perl.org:443/rt3/Ticket/Display.html?id=117969 >



This is a bug report for perl from perl-diddler@tlinx.org,
generated with the help of perlbug 1.39 running under perl 5.16.2.


-----------------------------------------------------------------
[Please describe your issue here]

There are sorta 2 problems here with the POSIX module -- they are 
related, so figure 1 bug report is sufficient.

I was trying to "use POSIX" and got multiple warnings in my
program:
Prototype mismatch: sub main::CLOCKS_PER_SEC: none vs () at /usr/lib/perl5/5.16.2/x86_64-linux-thread-multi/POSIX.pm line 30.
        POSIX::import('POSIX') called at ./remove-oldver-rpms-in-dir.pl line 786
        main::BEGIN() called at ./remove-oldver-rpms-in-dir.pl line 786
        eval {...} called at ./remove-oldver-rpms-in-dir.pl line 786
Subroutine main::clock redefined at /usr/lib/perl5/5.16.2/x86_64-linux-thread-multi/POSIX.pm line 30.
        POSIX::import('POSIX') called at ./remove-oldver-rpms-in-dir.pl line 786
        main::BEGIN() called at ./remove-oldver-rpms-in-dir.pl line 786
        eval {...} called at ./remove-oldver-rpms-in-dir.pl line 786
Prototype mismatch: sub main::clock () vs none at /usr/lib/perl5/5.16.2/x86_64-linux-thread-multi/POSIX.pm line 30.
        POSIX::import('POSIX') called at ./remove-oldver-rpms-in-dir.pl line 786
        main::BEGIN() called at ./remove-oldver-rpms-in-dir.pl line 786
        eval {...} called at ./remove-oldver-rpms-in-dir.pl line 786
Subroutine main::getcwd redefined at /usr/lib/perl5/5.16.2/x86_64-linux-thread-multi/POSIX.pm line 30.
        POSIX::import('POSIX') called at ./remove-oldver-rpms-in-dir.pl line 786
        main::BEGIN() called at ./remove-oldver-rpms-in-dir.pl line 786
        eval {...} called at ./remove-oldver-rpms-in-dir.pl line 786

  I spent an a few hours tracking down why.  This
minimal test case shows only 1 warning, but I think it might get the 
principle across (if you want the longer program I'll be happy to supply
it).
----
#!/usr/bin/perl -w
use Cwd qw(getcwd cwd abs_path realpath);
{
	no warnings; use POSIX; #>& /dev/null!
}
---
Gives:
Subroutine main::getcwd redefined at /tmp/postest.pl line 4. 

That's the first problem -- that there are any warnings.


Second -- is it's not easy to shut them off.

For one reason or another, the 
'no warnings'                in front of the
'use POSIX'                  doesn't turn them off.

...(played around some as writing this...)

It seems "-w" on line 1 is overriding  "no warnings in *THIS* program.
I say 'THIS', because I have multiple other programs with the same
construct that work as one would expect: (warnings about something are
silenced in the lexical scope).

I'm not sure why it would be different here but that's 
the 2nd bug 'no warnings' isn't working here.

 


[Please do not change anything below this line]
-----------------------------------------------------------------
---
Flags:
    category=core
    severity=medium
---
This perlbug was built using Perl 5.16.2 - Fri Feb 15 01:17:37 UTC 2013
It is being executed now by  Perl 5.16.2 - Fri Feb 15 01:12:05 UTC 2013.

Site configuration information for perl 5.16.2:

Configured by abuild at Fri Feb 15 01:12:05 UTC 2013.

Summary of my perl5 (revision 5 version 16 subversion 2) configuration:
   
  Platform:
    osname=linux, osvers=3.4.6-2.10-default, archname=x86_64-linux-thread-multi
    uname='linux build34 3.4.6-2.10-default #1 smp thu jul 26 09:36:26 utc 2012 (641c197) x86_64 x86_64 x86_64 gnulinux '
    config_args='-ds -e -Dprefix=/usr -Dvendorprefix=/usr -Dinstallusrbinperl -Dusethreads -Di_db -Di_dbm -Di_ndbm -Di_gdbm -Dd_dbm_open -Duseshrplib=true -Doptimize=-fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -Wall -pipe -Accflags=-DPERL_USE_SAFE_PUTENV -Dotherlibdirs=/usr/lib/perl5/site_perl'
    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 ='-D_REENTRANT -D_GNU_SOURCE -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -pipe -fstack-protector -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -Wall -pipe',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DPERL_USE_SAFE_PUTENV -fno-strict-aliasing -pipe -fstack-protector'
    ccversion='', gccversion='4.7.2 20130108 [gcc-4_7-branch revision 195012]', 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 =' -L/usr/local/lib64 -fstack-protector'
    libpth=/lib64 /usr/lib64 /usr/local/lib64
    libs=-lm -ldl -lcrypt -lpthread
    perllibs=-lm -ldl -lcrypt -lpthread
    libc=/lib64/libc-2.17.so, so=so, useshrplib=true, libperl=libperl.so
    gnulibc_version='2.17'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib/perl5/5.16.2/x86_64-linux-thread-multi/CORE'
    cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib64 -fstack-protector'

Locally applied patches:
    

---
@INC for perl 5.16.2:
    /home/law/bin/lib
    /usr/lib/perl5/site_perl/5.16.2/x86_64-linux-thread-multi
    /usr/lib/perl5/site_perl/5.16.2
    /usr/lib/perl5/vendor_perl/5.16.2/x86_64-linux-thread-multi
    /usr/lib/perl5/vendor_perl/5.16.2
    /usr/lib/perl5/5.16.2/x86_64-linux-thread-multi
    /usr/lib/perl5/5.16.2
    /usr/lib/perl5/site_perl/5.16.2/x86_64-linux-thread-multi
    /usr/lib/perl5/site_perl/5.16.2
    /usr/lib/perl5/site_perl
    .

---
Environment for perl 5.16.2:
    HOME=/home/law
    LANG=en_US.UTF-8
    LANGUAGE (unset)
    LC_COLLATE=C
    LC_CTYPE=en_US.UTF-8
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=.:/home/law/bin/lib:/sbin:/usr/local/sbin:/home/law/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/kde3/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:/usr/lib/qt3/bin:/opt/dell/srvadmin/bin:/usr/sbin:/etc/local/func_lib:/home/law/lib
    PERL5OPT=-CSA -I/home/law/bin/lib
    PERL_BADLANG (unset)
    SHELL=/bin/bash


Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About