List Info

Thread: possible fd bug in PerlIOStdio_close




possible fd bug in PerlIOStdio_close
user name
2007-10-06 07:12:49
# New Ticket Created by  Marc Lehmann 
# Please include the string:  [perl #46173]
# in the subject line of all future correspondence about
this issue. 
# <URL: h
ttp://rt.perl.org/rt3/Ticket/Display.html?id=46173 >



This is a bug report for perl from rootschmorp.de,
generated with the help of perlbug 1.35 running under perl
v5.8.8.


------------------------------------------------------------
-----
[Please enter your report here]

While reading through perlio.c in current 5.8-devel, I found
these lines
in PerlIOStdio_close:

   int dupfd = 0;
   ...
   dupfd = PerlLIO_dup(fd);
   ...
   if (dupfd) {

The dup won't be executed on any of my systems, but on those
systems
where it is, it seems that if PerlLIO_dup returns 0, the
code leaks a
filedescriptor. (Unless PerlLIO_dup does deep magic, but it
seems to
simply call dup(), which returns 0 if that fd happens to be
free.

just a fyi, really, I don't grok perlio 

[Please do not change anything below this line]
------------------------------------------------------------
-----
---
Flags:
    category=core
    severity=low
---
Site configuration information for perl v5.8.8:

Configured by Marc Lehmann at Sat Jan 20 00:23:48 CET 2007.

Summary of my perl5 (revision 5 version 8 subversion 8)
configuration:
  Platform:
    osname=linux, osvers=2.6.17.6, archname=amd64-linux
    uname='linux cerebro 2.6.17.6 #1 smp fri oct 20 19:28:13
cest 2006 x86_64 gnulinux '
    config_args='-Duselargefiles -Dxxxxuse64bitint
-Uuse64bitall -Dusemymalloc=n -Dcc=gcc
-Dccflags=-DPERL_DONT_CREATE_GVSV_disabled -ggdb
-Dcppflags=-DPERL_DONT_CREATE_GVSV_disabled -D_GNU_SOURCE
-I/opt/include -Doptimize=-O6 -march=opteron -mtune=opteron
-funroll-loops -fno-strict-aliasing -Dcccdlflags=-fPIC
-Dldflags=-L/opt/perl/lib -L/opt/lib -Dlibs=-ldl -lm -lcrypt
-Darchname=amd64-linux -Dprefix=/opt/perl
-Dprivlib=/opt/perl/lib/perl5 -Darchlib=/opt/perl/lib/perl5
-Dvendorprefix=/opt/perl -Dvendorlib=/opt/perl/lib/perl5
-Dvendorarch=/opt/perl/lib/perl5 -Dsiteprefix=/opt/perl
-Dsitelib=/opt/perl/lib/perl5 -Dsitearch=/opt/perl/lib/perl5
-Dsitebin=/opt/perl/bin -Dman1dir=/opt/perl/man/man1
-Dman3dir=/opt/perl/man/man3
-Dsiteman1dir=/opt/perl/man/man1
-Dsiteman3dir=/opt/perl/man/man3 -Dman1ext=1 -Dman3ext=3
-Dpager=/usr/bin/less -Uafs -Uusesfio -Uusenm -Uuseshrplib
-Dd_dosuid -Dusethreads=undef -Duse5005threads=undef
-Duseithreads=undef -Dusemultiplicity=undef -Demail=perl-
 binaryplan9.de -Dcf_email=perl-binaryplan9.de -Dcf_by=Marc
Lehmann -Dlocincpth=/opt/perl/include /opt/include
-Dmyhostname=localhost -Dmultiarch=undef -Dbin=/opt/perl/bin
-Dusedevel -des'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=undef use5005threads=undef useithreads=undef
usemultiplicity=undef
    useperlio=define d_sfio=undef uselargefiles=define
usesocks=undef
    use64bitint=define use64bitall=undef
uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='gcc', ccflags ='-DPERL_DONT_CREATE_GVSV_disabled
-ggdb -fno-strict-aliasing -pipe -I/opt/include
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O6 -march=opteron -mtune=opteron
-funroll-loops -fno-strict-aliasing',
    cppflags='-DPERL_DONT_CREATE_GVSV_disabled -D_GNU_SOURCE
-I/opt/include -DPERL_DONT_CREATE_GVSV_disabled -ggdb
-fno-strict-aliasing -pipe -I/opt/include'
    ccversion='', gccversion='4.1.2 20061115 (prerelease)
(Debian 4.1.1-21)', 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='gcc', ldflags ='-L/opt/perl/lib -L/opt/lib
-L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib
    libs=-ldl -lm -lcrypt
    perllibs=-ldl -lm -lcrypt
    libc=/lib/libc-2.3.6.so, so=so, useshrplib=false,
libperl=libperl.a
    gnulibc_version='2.3.6'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef,
ccdlflags='-Wl,-E'
    cccdlflags='-fPIC', lddlflags='-shared -L/opt/perl/lib
-L/opt/lib -L/usr/local/lib'

Locally applied patches:
    MAINT29832

---
INC
for perl v5.8.8:
    /root/src/sex
    /opt/perl/lib/perl5
    /opt/perl/lib/perl5
    /opt/perl/lib/perl5
    /opt/perl/lib/perl5
    /opt/perl/lib/perl5
    .

---
Environment for perl v5.8.8:
    HOME=/root
    LANG (unset)
    LANGUAGE (unset)
    LC_CTYPE=de_DE.UTF-8
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
   
PATH=/root/s2:/root/s:/opt/bin:/opt/sbin:/bin:/sbin:/usr/bin
:/usr/sbin:/usr/X11/bin:/usr/games:/usr/local/bin:/usr/local
/sbin:/root/src/uunet:.
    PERL5LIB=/root/src/sex
    PERL5_CPANPLUS_CONFIG=/root/.cpanplus/config
    PERLDB_OPTS=ornaments=0
    PERL_BADLANG (unset)
    PERL_UNICODE=EAL
    SHELL=/bin/bash


[1]

about | contact  Other archives ( Real Estate discussion Medical topics )