Perl / perl5

🐪 The Perl programming language
https://dev.perl.org/perl5/
Other
2k stars 559 forks source link

Cygwin32 _62 segfaulting on nasty RE #843

Closed p5pRT closed 21 years ago

p5pRT commented 25 years ago

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

Searchable as RT1771$

p5pRT commented 25 years ago

From scozens@pwj.co.jp

Yes\, I *know* the regexp is incorrect. (at least\, for what I wanted it to do - brainfart.) But it shouldn't lead to a segfault - or should it?

bash-2.03$ perl -lne 'print if /\b(\w+)\s+$1\b/' files.tex *** some lines of text here ***

[main] D​:\usr\local\bin\perl.exe 1028 (0) handle_exceptions​: Exception​: STATUS_ACCESS_VIOLATION [main] perl 1028 (0) handle_exceptions​: Dumping stack trace to perl.exe.core

Things to note​:   Different files die on different lines\, but I cannot see anything in common with the lines it barfs on.   Further investigation shows that changing the line it blows up on and the line above makes no difference - it seems to be based on the line number in a file\, but then on one file it dies on line 28\, on another\, line 19\, on another\, line 68.   `Simple' files\, like `foo bar\nbaz bar\nfoo quux\n...\<repeat for 50 lines>' work fine.   There's no commonality about what's in $1 either. Real hair-tearing-out stuff.   No attempt yet to verify on other platforms - sorry\, I'm trapped at work.

  For those of you who like that sort of thing\, here's the stack trace​: [main] perl 1074 (0) exception​: trapped! [main] perl 1074 (0) exception​: code 0xC0000005 at 0x61053637 [main] perl 1074 (0) exception​: ax 0x43 bx 0xA037110 cx 0x42 dx 0x0 [main] perl 1074 (0) exception​: si 0xA037110 di 0x1 bp 0x248FBC0 sp 0x248FBB8 [main] perl 1074 (0) exception​: exception is​: STATUS_ACCESS_VIOLATION [main] perl 1074 (0) stack​: Stack trace​: [main] perl 1074 (0) stack​: frame 0​: sp = 0x248F9CC\, pc = 0x6100A2C3 [main] perl 1074 (0) stack​: frame 1​: sp = 0x248FA08\, pc = 0x77F84C92 [main] perl 1074 (0) stack​: frame 2​: sp = 0x248FA2C\, pc = 0x77F7967F [main] perl 1074 (0) stack​: frame 3​: sp = 0x248FAB8\, pc = 0x77F6626E [main] perl 1074 (0) stack​: frame 4​: sp = 0x248FBC0\, pc = 0x61A0A924 [main] perl 1074 (0) stack​: frame 5​: sp = 0x248FBE0\, pc = 0x619FA516 [main] perl 1074 (0) stack​: frame 6​: sp = 0x248FC10\, pc = 0x619F9A2F [main] perl 1074 (0) stack​: frame 7​: sp = 0x248FC3C\, pc = 0x61A09303 [main] perl 1074 (0) stack​: frame 8​: sp = 0x248FD44\, pc = 0x61A015AB [main] perl 1074 (0) stack​: frame 9​: sp = 0x248FD70\, pc = 0x61A00F6D [main] perl 1074 (0) stack​: frame 10​: sp = 0x248FD78\, pc = 0x619C2BFF [main] perl 1074 (0) stack​: frame 11​: sp = 0x248FD84\, pc = 0x61A1C433 [main] perl 1074 (0) stack​: frame 12​: sp = 0x248FD94\, pc = 0x61A1C383 [main] perl 1074 (0) stack​: frame 13​: sp = 0x248FDC4\, pc = 0x619C292D [main] perl 1074 (0) stack​: frame 14​: sp = 0x248FEF8\, pc = 0x4010BC [main] perl 1074 (0) stack​: frame 15​: sp = 0x248FF08\, pc = 0x61004402 [main] perl 1074 (0) stack​: End of stack trace (more stack frames may be present)

Enjoy\, Simon

Perl Info ``` Site configuration information for perl 5.00562: Configured by 02552 at Fri Oct 22 17:31:02 1999. Summary of my perl5 (revision 5.0 version 5 subversion 62) configuration: Platform: osname=cygwin_nt-4.0, osvers=20.1, archname=cygwin uname='cygwin_nt-4.0 scozens 20.1 (0.311) 1998-12-3 20:39:18 i586 unknown ' config_args='-der' hint=previous, useposix=true, d_sigaction=define usethreads=undef useperlio=undef d_sfio=undef use64bits=undef usemultiplicity=undef Compiler: cc='gcc', optimize='-O', gccversion=egcs-2.91.57 19980901 (egcs-1.1 release) cppflags='-DCYGWIN -I/cygnus/cygwin-b20/H-586-cygwin32/i586-cygwin32/include -I/usr/local/include -fno-strict-aliasing' ccflags ='-DCYGWIN -I/cygnus/cygwin-b20/H-586-cygwin32/i586-cygwin32/include -I/usr/local/include -fno-strict-aliasing' 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=8, usemymalloc=n, prototype=define Linker and Libraries: ld='ld2', ldflags =' -L/usr/local/lib' libpth=/cygnus/cygwin-b20/H-i586-cygwin32/i586-cygwin32/lib /usr/local/lib libs=-lcygwin -lm -lkernel32 libc=/usr/lib/libc.a, so=dll, useshrplib=true, libperl=libperl.a Dynamic Linking: dlsrc=dl_cygwin.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' ' cccdlflags=' ', lddlflags=' -L/usr/local/lib' Locally applied patches: @INC for perl 5.00562: /usr/local/lib/perl5/5.00562/cygwin /usr/local/lib/perl5/5.00562 /usr/local/lib/site_perl/5.00562/cygwin /usr/local/lib/site_perl . Environment for perl 5.00562: HOME=/WINNT/Profiles/02552/\xE3\x83\x87\xE3\x82$B9c(B\x82$(D??(B\x83\x88\xE3\x83\x83\xE3\x83\x97 LANG (unset) LANGUAGE (unset) LD_LIBRARY_PATH (unset) LOGDIR (unset) PATH=/usr/local/bin:/usr/bin:/miktex/miktex/bin:/cygnus/CYGWIN~1/H-I586~1/b in:/PROGRA~1/ORACLE/bin:/WINNT/SYSTEM32:/WINNT:/abas/teamasset://c/bin/lanm an.dos/netprog://c/dos PERL_BADLANG (unset) SHELL=/bin/sh ```
p5pRT commented 25 years ago

From [Unknown Contact. See original ticket]

scozens@​pwj.co.jp writes​:

bash-2.03$ perl -lne 'print if /\b(\w+)\s+$1\b/' files.tex

What is "wrong" about this REx?

 Different files die on different lines\, but I cannot see anything

in common with the lines it barfs on. Further investigation shows that changing the line it blows up on and the line above makes no difference - it seems to be based on the line number in a file\, but then on one file it dies on line 28\, on another\, line 19\, on another\, line 68.

This looks pretty similar to a bug Larry found\, but cannot be the same bug. However\, without a test file this report is useless.

Hope this helps\, Ilya

p5pRT commented 25 years ago

From [Unknown Contact. See original ticket]

scozens@​pwj.co.jp writes​:

bash-2.03$ perl -lne 'print if /\b(\w+)\s+$1\b/' files.tex

I see​: you used $1 instead of \1. Then it is the same bug as one which Larry reported. You may want to apply the patch I sent a week ago nevertheless.

http​://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/1999-11/msg00025.html

Ilya