develooper Front page | perl.perl5.porters | Postings from November 2003

[perl #24395] Eval still leaks in 5.8.1

From:
Ilya Zakharevich
Date:
November 4, 2003 21:20
Subject:
[perl #24395] Eval still leaks in 5.8.1
Message ID:
rt-24395-66991.6.9235575295496@rt.perl.org
# New Ticket Created by  Ilya Zakharevich 
# Please include the string:  [perl #24395]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt2/Ticket/Display.html?id=24395 >


This is a bug report for perl from Ilya Zakharevich,
generated with the help of perlbug 1.34 running under perl v5.8.1.

That's an old stuff, it should be addressed now, when most other reasons for
eval() leaks are fixed.

eval('') which references data in a new package leaks, even if the package
is deleted after eval().  The minimal test case I could create is

 perl -wle "for (1..shift) {eval q(sub {$a::b}); delete $::{'a::'}}" 100

also leak:

 perl -wle "for (1..shift) {eval q(sub a::b {}); delete $::{'a::'}}" 1000
 perl -wle "for (1..shift) {eval q(@a::b = 3);   delete $::{'a::'}}" 1000
 perl -wle "for (1..shift) {eval q($a::b = 3);   delete $::{'a::'}}" 1000

(setenv PERL_DEBUG_MSTATS=2 beforehand, and change 100 to 1000 to see).

---
Flags:
    category=core
    severity=high
---
Site configuration information for perl v5.8.1:

Configured by vera at Thu Sep 25 13:52:17 PDT 2003.

Summary of my perl5 (revision 5.0 version 8 subversion 1 patch 21379) configuration:
  Platform:
    osname=os2, osvers=2.30, archname=os2
    uname='os2 ia-ia 2 2.30 i386 '
    config_args='-des -D prefix=i:/perllib'
    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=undef use64bitall=undef uselongdouble=undef
    usemymalloc=y, bincompat5005=undef
  Compiler:
    cc='gcc', ccflags ='-Zomf -Zmt -DDOSISH -DOS2=2 -DEMBED -I. -D_EMX_CRT_REV_=64 -I/usr/local/include',
    optimize='-O2 -fomit-frame-pointer -malign-loops=2 -malign-jumps=2 -malign-functions=2 -s',
    cppflags='-Zomf -Zmt -DDOSISH -DOS2=2 -DEMBED -I. -D_EMX_CRT_REV_=64 -I/usr/local/include'
    ccversion='', gccversion='2.8.1', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=4
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='gcc', ldflags ='-Zexe -Zomf -Zmt -Zcrtdll -Zstack 32000 -Zlinker /e:2'
    libpth=i:/emx.add/lib i:/emx/lib i:/emx.f77/lib D:/DEVTOOLS/OPENGL/LIB I:/JAVA11/LIB i:/emx/lib/mt
    libs=-lsocket -lm -lbsd -lcrypt
    perllibs=-lsocket -lm -lbsd -lcrypt
    libc=i:/emx/lib/mt/c_import.lib, so=dll, useshrplib=true, libperl=libperl.lib
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
    cccdlflags='-Zdll', lddlflags='-Zdll -Zomf -Zmt -Zcrtdll -Zlinker /e:2'

Locally applied patches:
    

---
@INC for perl v5.8.1:
    i:/perllib/lib/5.8.1/os2
    i:/perllib/lib/5.8.1
    i:/perllib/lib/site_perl/5.8.1/os2
    i:/perllib/lib/site_perl/5.8.1
    i:/perllib/lib/site_perl/5.00553
    i:/perllib/lib/site_perl
    .

---
Environment for perl v5.8.1:
    HOME=j:/home
    LANG=EN_US
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=i:\NETSCAPE\PROGRAM;d:\OPENDOC\EPM;d:\OPENDOC\OREXX;d:\OPENDOC\BIN;i:\DRV;i:\TOOLKIT\BIN\OSARED;i:\TOOLKIT\SOM\COMMON;i:\TOOLKIT\SOM\BIN;i:\TOOLKIT\BIN;D:\OS2;D:\OS2\SYSTEM;i:\VABASIC\SOM\BIN;D:\OS2\INSTALL;D:\;D:\OS2\MDOS;D:\OS2\APPS;i:\BIN;i:\UTILS;i:\EMACS\19.33\BIN;i:\emx.add\BIN;i:\EMX\BIN;i:\emx.f77\BIN;i:\EMTEX\bin;i:\ckermit;I:\PAGETURN;d:\tcpip\bin;D:\TCPIP\UMAIL;D:\VIEWER\BIN;I:\XFree86\bin;i:\VABASIC\BIN;i:\SMART;I:\Java11\rmi-iiop\bin;I:\JAVA11\BIN;d:\JAVAOS2\bin;D:\MMOS2;I:\JAVA11\ICATJAVA\BIN;I:\gs\tools;I:\gs\gs7.00\bin;i:\IBMWORKS;I:\Office51;
    PERLLIB_PREFIX=f:/perllib;i:/perllib
    PERL_BADLANG (unset)
    PERL_SH_DIR=i:/bin
    SHELL (unset)




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