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

segfault on long regex #1953

Closed
p5pRT opened this issue May 9, 2000 · 6 comments
Closed

segfault on long regex #1953

p5pRT opened this issue May 9, 2000 · 6 comments

Comments

@p5pRT
Copy link

p5pRT commented May 9, 2000

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

Searchable as RT3225$

@p5pRT
Copy link
Author

p5pRT commented May 9, 2000

From daveb@idealab.com

Created by daveb@idealab.com

The following three lines of perl cause it to segfault​:

  $_ = "15930 \"q qq\" \"q q q q\" \"<q>q q</q>\r\n";
  $_ .= ("q"x30000);
  m{^(\d+) \t"([^"]+)" \t"((?​:[^"]|"")+)" \t"((?​:[^"]|"")+)" \t"(\d+)" }xs;

Workaround​:
If you change the last line to
  m{^(\d+) \t"([^"]+)" \t"((?​:[^"]+|"")+)" \t"((?​:[^"]+|"")+)" \t"(\d+)" }xs;
(two added + characters), it does not segfault.

[I am running Debian/GNU Linux]

Perl Info


Site configuration information for perl 5.00503:

Configured by darren at Thu Aug 19 01:13:41 PDT 1999.

Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration:
  Platform:
    osname=linux, osvers=2.0.36, archname=i386-linux
    uname='linux broca 2.0.36 #2 sun nov 29 02:38:59 pst 1998 i686 unknown '
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=undef useperlio=undef d_sfio=undef
  Compiler:
    cc='cc', optimize='-O2', gccversion=2.95.1 19990809 (prerelease)
    cppflags='-Dbool=char -DHAS_BOOL -D_REENTRANT -DDEBIAN -I/usr/local/include'
    ccflags ='-Dbool=char -DHAS_BOOL -D_REENTRANT -DDEBIAN -I/usr/local/include'
    stdchar='char', d_stdstdio=undef, usevfork=false
    intsize=4, longsize=4, ptrsize=4, doublesize=8
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    alignbytes=4, usemymalloc=n, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib
    libs=-lnsl -lndbm -lgdbm -ldbm -ldb -ldl -lm -lc -lposix -lcrypt
    libc=, so=so, useshrplib=false, libperl=libperl.a
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic'
    cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib'

Locally applied patches:
    


@INC for perl 5.00503:
    /usr/lib/perl5/5.005/i386-linux
    /usr/lib/perl5/5.005
    /usr/local/lib/site_perl/i386-linux
    /usr/local/lib/site_perl
    /usr/lib/perl5
    .


Environment for perl 5.00503:
    HOME=/home/daveb
    LANG (unset)
    LANGUAGE (unset)
    LD_LIBRARY_PATH=/home/daveb/progs/gdam/lib
    LOGDIR (unset)
    PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/usr/X11/bin:.:./bin:/mnt/share/bin:/home/daveb/bin:/home/daveb/ibm-java/bin
    PERL_BADLANG (unset)
    SHELL=/bin/zsh



@p5pRT
Copy link
Author

p5pRT commented May 9, 2000

From [Unknown Contact. See original ticket]

David Benson writes​:

The following three lines of perl cause it to segfault​:

$_ = "15930 \"q qq\" \"q q q q\" \"<q>q q</q>\r\n";
$_ .= ("q"x30000);
m{^(\d+) \t"([^"]+)" \t"((?​:[^"]|"")+)" \t"((?​:[^"]|"")+)" \t"(\d+)" }xs;

What happens if you increase your stack 10x? (setlimits or somesuch)

Ilya

@p5pRT
Copy link
Author

p5pRT commented May 9, 2000

From [Unknown Contact. See original ticket]

The segfault goes away...

btw, there were TAB characters in the original; you can
make the first line​:

$_ = "15930\t\"q qq\"\t\"q q q q\"\t\"<q>q q</q>\r\n";

..

On Tue, 9 May 2000, Ilya Zakharevich wrote​:

David Benson writes​:

The following three lines of perl cause it to segfault​:

$_ = "15930 \"q qq\" \"q q q q\" \"<q>q q</q>\r\n";
$_ .= ("q"x30000);
m{^(\d+) \t"([^"]+)" \t"((?​:[^"]|"")+)" \t"((?​:[^"]|"")+)" \t"(\d+)" }xs;

What happens if you increase your stack 10x? (setlimits or somesuch)

Ilya

@p5pRT
Copy link
Author

p5pRT commented May 9, 2000

From [Unknown Contact. See original ticket]

On Tue, May 09, 2000 at 04​:07​:21PM -0700, David Benson wrote​:

The segfault goes away...

[This list uses reply-after-question (surprise-surpise) style]

What happens if you increase your stack 10x? (setlimits or somesuch)

Then this is a known (non-)problem.

Ilya

@p5pRT
Copy link
Author

p5pRT commented May 10, 2000

From [Unknown Contact. See original ticket]

At 19​:44 -0400 2000-05-09, Ilya Zakharevich wrote​:

On Tue, May 09, 2000 at 04​:07​:21PM -0700, David Benson wrote​:

What happens if you increase your stack 10x? (setlimits or somesuch)
The segfault goes away...

Then this is a known (non-)problem.

Bzzzt! Bug! May I refer you to the current Todo file​:

Bugs
  remove recursion in regular expression engine

(Sorry. No patch.)

PS​: I suspect this problem is the same as that reported in under ID
19991026.001 by Larry W Virden​: see
http​://bugs.perl.org/perlbug.cgi?req=tid&tid=19991026.001&range=20437&format=H

@p5pRT
Copy link
Author

p5pRT commented Jul 7, 2003

ziggy@panix.com - Status changed from 'open' 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