Skip Menu |
Report information
Id: 132548
Status: resolved
Priority: 0/
Queue: perl5

Owner: khw <khw [at] cpan.org>
Requestors: pipcet [at] gmail.com
Cc:
AdminCc:

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



Date: Fri, 8 Dec 2017 11:51:18 +0000
To: perlbug [...] perl.org
From: Pip Cet <pipcet [...] gmail.com>
Subject: Possible memory leak in S_regclass
Download (untitled) / with headers
text/plain 4.2k
This is a bug report for perl from pipcet@gmail.com, generated with the help of perlbug 1.41 running under perl 5.27.7. ----------------------------------------------------------------- [Please describe your issue here] I believe the variable only_non_utf8_list in regcomp.c should be mortalized or destroyed after use, but currently isn't. I don't know the regexp code, so I'm not sure whether I'm missing something, but my test code reports that this variable is leaked. diff --git a/regcomp.c b/regcomp.c index 29af44c7a0..3ba091af8f 100644 --- a/regcomp.c +++ b/regcomp.c @@ -17721,6 +17721,8 @@ S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth, if (_invlist_len(only_non_utf8_list) != 0) { ANYOF_FLAGS(ret) |= ANYOF_SHARED_d_MATCHES_ALL_NON_UTF8_NON_ASCII_non_d_WARN_SUPER; } + + SvREFCNT_dec_NN(only_non_utf8_list); } else { [Please do not change anything below this line] ----------------------------------------------------------------- --- Flags: category=core severity=low --- Site configuration information for perl 5.27.7: Configured by pip at Mon Dec 4 13:27:33 UTC 2017. Summary of my perl5 (revision 5 version 27 subversion 7) configuration: Platform: osname=linux osvers=4.13.0-1-amd64 archname=x86_64-linux uname='linux amygdala 4.13.0-1-amd64 #1 smp debian 4.13.10-1 (2017-10-30) x86_64 gnulinux ' config_args='' hint=recommended useposix=true d_sigaction=define useithreads=undef usemultiplicity=undef use64bitint=define use64bitall=define uselongdouble=undef usemymalloc=n default_inc_excludes_dot=define bincompat5005=undef Compiler: cc='g++' ccflags ='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/home/pip/git/emacs-c++/js/dist/include -pthread -g3 -ggdb' optimize='-O2' cppflags='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -pthread' ccversion='' gccversion='8.0.0 20171124 (experimental)' gccosandvers='' intsize=4 longsize=8 ptrsize=8 doublesize=8 byteorder=12345678 doublekind=3 d_longlong=define longlongsize=8 d_longdbl=define longdblsize=16 longdblkind=3 ivtype='long' ivsize=8 nvtype='double' nvsize=8 Off_t='off_t' lseeksize=8 alignbytes=8 prototype=define Linker and Libraries: ld='ld' ldflags =' -fstack-protector-strong -g3 -ggdb -L/usr/local/lib' libpth=/usr/local/lib/gcc/x86_64-pc-linux-gnu/8.0.0/../../../../include/c++/8.0.0 /usr/local/lib/gcc/x86_64-pc-linux-gnu/8.0.0/../../../../include/c++/8.0.0/x86_64-pc-linux-gnu /usr/local/lib/gcc/x86_64-pc-linux-gnu/8.0.0/../../../../include/c++/8.0.0/backward /usr/local/lib /usr/local/lib/gcc/x86_64-pc-linux-gnu/8.0.0/include-fixed /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib /lib64 /usr/lib64 /usr/local/lib64 libs=-lpthread -pthread -lnsl -ldl -lm -lcrypt -lutil -lc -lmozjs-58a1 -Wl,--whole-archive mozglue.a -Wl,--no-whole-archive perllibs=-lpthread -pthread -lnsl -ldl -lm -lcrypt -lutil -lc -L /home/pip/git/emacs-c++/js/dist/bin -lmozjs-58a1 -Wl,--whole-archive /home/pip/git/emacs-c++/js/mozglue/build/libmozglue.a -Wl,--no-whole-archive libc=libc-2.25.so so=so useshrplib=false libperl=libperl.a gnulibc_version='2.25' Dynamic Linking: dlsrc=dl_none.xs dlext=none d_dlsymun=undef ccdlflags='' cccdlflags='' lddlflags='' --- @INC for perl 5.27.7: lib /usr/local/lib/perl5/site_perl/5.27.7/x86_64-linux /usr/local/lib/perl5/site_perl/5.27.7 /usr/local/lib/perl5/5.27.7/x86_64-linux /usr/local/lib/perl5/5.27.7 --- Environment for perl 5.27.7: HOME=/home/pip LANG=en_US.UTF-8 LANGUAGE (unset) LD_LIBRARY_PATH=/home/pip/git/emacs-c++/js/dist/bin:/home/pip/.cargo/bin:/home/pip/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/sbin:/usr/sbin LOGDIR (unset) PATH=/home/pip/.cargo/bin:/home/pip/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/sbin:/usr/sbin PERL_BADLANG (unset) SHELL=/bin/bash
Download perl-bug-008.diff
text/plain 550b

Message body is not shown because sender requested not to inline it.

RT-Send-CC: perl5-porters [...] perl.org
Thanks for reporting this. Fixed by 4ee748a5cc45fab2bd55de5258176a0cdf99bc96 -- Karl Williamson
Download (untitled) / with headers
text/plain 317b
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.


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