Perl / perl5

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

passing '-I' flag to embedded interpreter causes core dump #836

Closed p5pRT closed 20 years ago

p5pRT commented 24 years ago

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

Searchable as RT1764$

p5pRT commented 24 years ago

From mitchell_morris@bscc.bls.com

+Mitchell

P.S. I've tried to submit this previously\, but couldn't find it in the database so I'm resubmitting. If this is a duplicate\, I apologize in advance.

###################################################################### # file​: arrrrgh.C ###################################################################### #include \<iostream.h> #include \<unistd.h> #include \<stdlib.h> #include \<string.h>

extern "C" { #include "EXTERN.h" #include "perl.h" #include "XSUB.h" }

//====================================================================== struct node_t { //======================================================================   struct node_t* next;   long magic; };

//====================================================================== // Module statics //====================================================================== struct node_t* root;

//====================================================================== void add_node() //====================================================================== {   node_t* p = new node_t;   p->next = root;   p->magic = 0xA5A5A5A5;   root = p; }

//====================================================================== int verify() //====================================================================== {   int rc = 1;   for(node_t* p = root; p; p = p->next) {   if(p->magic != 0xA5A5A5A5) {   rc = 0;   break;   }   }   return rc; }

//====================================================================== void cleanup() //====================================================================== {   node_t* p;   node_t* q;   for(p = root; p; p = q) {   q = p->next;   delete p;   }   root = 0; }

//====================================================================== static void dirname(char* buf) //====================================================================== {   char* p = strrchr(buf\, '/');   if(p)   *p = 0;   else   strcpy(buf\, "."); }

//====================================================================== int main(int argc\, char** argv\, char**) //====================================================================== {   if(argc != 3) {   cout \<\< "Usage​: " \<\< argv[0] \<\< " script data" \<\< endl;   return 1;   }

  int ac = 0;   char* av[20];   av[ac++] = "";   av[ac++] = "-w";   av[ac++] = "-I/tmp";   av[ac++] = argv[1];   av[ac++] = argv[2];   av[ac] = 0;

  char cmd[1024];   sprintf(cmd\, "/bin/ps auxc %d"\, getpid());   for(int i = 0; i \< 10000; i++) {   if(i % 100 == 0)   cout \<\< i \<\< " iterations" \<\< endl;

  for(int j = 0; j \< 100; j++)   add_node();

  PerlInterpreter* perl = perl_alloc();   perl_construct(perl);   int rc = perl_parse(perl\, NULL\, ac\, av\, NULL);   if(!rc)   rc = perl_run(perl);   PL_perl_destruct_level = 1;   perl_destruct(perl);   perl_free(perl);

  if(!verify()) {   cout \<\< "heap crushed after " \<\< i \<\< " iterations" \<\< endl;   break;   }   if(i % 1000 == 0) {   system(cmd);   // cleanup();   }   }

  return 0; }

###################################################################### # file​: sample.pl ###################################################################### open FILE\, ">>$ARGV[0]" or die "can't append to [$ARGV[0]]​: $!\n"; print FILE "### ARGV=[@​ARGV]\n"; close FILE;

###################################################################### # file​: sample.data ###################################################################### Here is some data Job​: [NOEXEC=1 select * from anpkhsw1​:.sw where mid=4045551212; PRIORITY=1 update anpkhsw1​:.vm set foo=bar where baz=bat;]

###################################################################### # perlbug -d -v output ###################################################################### Site configuration information for perl 5.00503​:

Configured by mgm at Tue Nov 9 09​:37​:51 EST 1999.

Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration​:   Platform​:   osname=aix\, osvers=4.3.2.0\, archname=aix   uname='aix anpkmsw1 3 4 00900241c400 '   hint=recommended\, useposix=true\, d_sigaction=define   usethreads=undef useperlio=undef d_sfio=undef   Compiler​:   cc='cc'\, optimize='-O'\, gccversion=   cppflags='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=8192 -I/usr/local/include'   ccflags ='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=8192 -I/usr/local/include'   stdchar='unsigned char'\, d_stdstdio=define\, usevfork=false   intsize=4\, longsize=4\, ptrsize=4\, doublesize=8   d_longlong=define\, longlongsize=8\, d_longdbl=define\, longdblsize=8   alignbytes=8\, usemymalloc=n\, prototype=define   Linker and Libraries​:   ld='ld'\, ldflags =' -L/usr/local/lib'   libpth=/usr/local/lib /lib /usr/lib /usr/ccs/lib   libs=-lnsl -ldbm -ldl -lld -lm -lc -lcrypt -lbsd -lPW   libc=\, so=a\, useshrplib=false\, libperl=libperl.a   Dynamic Linking​:   dlsrc=dl_aix.xs\, dlext=so\, d_dlsymun=undef\, ccdlflags='-bE​:perl.exp'   cccdlflags=' '\, lddlflags='-bhalt​:4 -bM​:SRE -bI​:$(PERL_INC)/perl.exp -bE​:$(BASEEXT).exp -b noentry -lc -L/usr/local/lib'

Locally applied patches​:  


@​INC for perl 5.00503​:   /usr/local/lib/perl5/5.00503/aix   /usr/local/lib/perl5/5.00503   /usr/local/lib/perl5/site_perl/5.005/aix   /usr/local/lib/perl5/site_perl/5.005   .


Environment for perl 5.00503​:   HOME=/home/mgm   LANG=C   LANGUAGE (unset)   LC_MESSAGES=en_US   LC__FASTMSG=true   LD_LIBRARY_PATH (unset)   LOGDIR (unset)   PATH=/apps/rapid/bin​:/usr/local/bin​:/opt/local/bin​:/home/mgm/bin​:/bin​:/usr/bin​:/etc​:/usr/ucb​:/usr/sbin​::/cbss/bin​:/home/mgm/bin​:/cbss/bin   PERL_BADLANG (unset)   SHELL=/bin/ksh

Complete configuration data for perl 5.00503​:

Author='' CONFIG='true' Date='$Date' Header='' Id='$Id' Locker='' Log='$Log' Mcc='Mcc' PATCHLEVEL='5' RCSfile='$RCSfile' Revision='$Revision' SUBVERSION='3' Source='' State='' _a='.a' _exe='' _o='.o' afs='false' alignbytes='8' ansi2knr='' aphostname='' apiversion='5.005' ar='ar' archlib='/usr/local/lib/perl5/5.00503/aix' archlibexp='/usr/local/lib/perl5/5.00503/aix' archname='aix' archobjs='' awk='awk' baserev='5.0' bash='' bin='/usr/local/bin' binexp='/usr/local/bin' bison='' byacc='byacc' byteorder='4321' c='\c' castflags='1' cat='cat' cc='cc' cccdlflags=' ' ccdlflags='-bE​:perl.exp' ccflags='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=8192 -I/usr/local/include' ccsymbols='_AIX43=1' cf_by='mgm' cf_email='mgm@​anpkmsw1.uucp' cf_time='Tue Nov 9 09​:37​:51 EST 1999' chgrp='' chmod='' chown='' clocktype='clock_t' comm='comm' compress='' config_arg0='./Configure' config_arg1='-ds' config_argc='1' config_args='-ds' contains='grep' cp='cp' cpio='' cpp='cpp' cpp_stuff='42' cppccsymbols='_AIX=1 _AIX32=1 _AIX41=1 _IBMR2=1 _POWER=1' cppflags='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=8192 -I/usr/local/include' cpplast='' cppminus='' cpprun='/usr/lib/cpp' cppstdin='cppstdin' cppsymbols='' cryptlib='' csh='csh' d_Gconvert='gcvt((x)\,(n)\,(b))' d_access='define' d_alarm='define' d_archlib='define' d_attribut='' d_bcmp='define' d_bcopy='define' d_bsd='define' d_bsdgetpgrp='' d_bsdsetpgrp='' d_bzero='define' d_casti32='define' d_castneg='' d_charvspr='' d_chown='define' d_chroot='define' d_chsize='' d_closedir='define' d_const='define' d_crypt='define' d_csh='define' d_cuserid='define' d_dbl_dig='define' d_difftime='define' d_dirnamlen='define' d_dlerror='define' d_dlopen='define' d_dlsymun='' d_dosuid='' d_dup2='define' d_endgrent='define' d_endhent='define' d_endnent='define' d_endpent='define' d_endpwent='define' d_endsent='define' d_eofnblk='define' d_eunice='' d_fchmod='define' d_fchown='define' d_fcntl='define' d_fd_macros='define' d_fd_set='define' d_fds_bits='define' d_fgetpos='define' d_flexfnam='define' d_flock='define' d_fork='define' d_fpathconf='define' d_fsetpos='define' d_fstatfs='define' d_fstatvfs='define' d_ftime='' d_getgrent='define' d_getgrps='define' d_gethbyaddr='define' d_gethbyname='define' d_gethent='define' d_gethname='' d_gethostprotos='define' d_getlogin='define' d_getmntent='' d_getnbyaddr='define' d_getnbyname='define' d_getnent='define' d_getnetprotos='define' d_getpbyname='define' d_getpbynumber='define' d_getpent='define' d_getpgid='define' d_getpgrp='define' d_getpgrp2='' d_getppid='define' d_getprior='define' d_getprotoprotos='define' d_getpwent='define' d_getsbyname='define' d_getsbyport='define' d_getsent='define' d_getservprotos='define' d_gettimeod='define' d_gnulibc='' d_grpasswd='define' d_hasmntopt='' d_htonl='define' d_index='' d_inetaton='define' d_isascii='define' d_killpg='define' d_lchown='define' d_link='define' d_locconv='define' d_lockf='define' d_longdbl='define' d_longlong='define' d_lstat='define' d_mblen='define' d_mbstowcs='define' d_mbtowc='define' d_memcmp='define' d_memcpy='define' d_memmove='define' d_memset='define' d_mkdir='define' d_mkfifo='define' d_mktime='define' d_msg='define' d_msgctl='define' d_msgget='define' d_msgrcv='define' d_msgsnd='define' d_mymalloc='' d_nice='define' d_oldpthreads='' d_oldsock='' d_open3='define' d_pathconf='define' d_pause='define' d_phostname='' d_pipe='define' d_poll='define' d_portable='define' d_pthread_yield='' d_pthreads_created_joinable='' d_pwage='' d_pwchange='' d_pwclass='' d_pwcomment='' d_pwexpire='' d_pwgecos='define' d_pwpasswd='define' d_pwquota='' d_readdir='define' d_readlink='define' d_rename='define' d_rewinddir='define' d_rmdir='define' d_safebcpy='define' d_safemcpy='define' d_sanemcmp='define' d_sched_yield='define' d_seekdir='define' d_select='define' d_sem='define' d_semctl='define' d_semctl_semid_ds='define' d_semctl_semun='define' d_semget='define' d_semop='define' d_setegid='define' d_seteuid='define' d_setgrent='define' d_setgrps='define' d_sethent='define' d_setlinebuf='define' d_setlocale='define' d_setnent='define' d_setpent='define' d_setpgid='define' d_setpgrp='define' d_setpgrp2='' d_setprior='define' d_setpwent='define' d_setregid='' d_setresgid='' d_setresuid='' d_setreuid='' d_setrgid='' d_setruid='' d_setsent='define' d_setsid='define' d_setvbuf='define' d_sfio='' d_shm='define' d_shmat='define' d_shmatprototype='define' d_shmctl='define' d_shmdt='define' d_shmget='define' d_sigaction='define' d_sigsetjmp='define' d_socket='define' d_sockpair='define' d_statblks='define' d_statfsflags='' d_stdio_cnt_lval='define' d_stdio_ptr_lval='define' d_stdiobase='define' d_stdstdio='define' d_strchr='define' d_strcoll='define' d_strctcpy='define' d_strerrm='strerror(e)' d_strerror='define' d_strtod='define' d_strtol='define' d_strtoul='define' d_strxfrm='define' d_suidsafe='' d_symlink='define' d_syscall='' d_sysconf='define' d_sysernlst='' d_syserrlst='define' d_system='define' d_tcgetpgrp='define' d_tcsetpgrp='define' d_telldir='define' d_time='define' d_times='define' d_truncate='define' d_tzname='define' d_umask='define' d_uname='define' d_union_semun='' d_vfork='' d_void_closedir='' d_voidsig='define' d_voidtty='' d_volatile='define' d_vprintf='define' d_wait4='' d_waitpid='define' d_wcstombs='define' d_wctomb='define' d_xenix='' date='date' db_hashtype='u_int32_t' db_prefixtype='size_t' defvoidused='15' direntrytype='struct dirent' dlext='so' dlsrc='dl_aix.xs' doublesize='8' dynamic_ext='B Data/Dumper Fcntl IO IPC/SysV NDBM_File ODBM_File Opcode POSIX SDBM_File Socket attrs re' eagain='EAGAIN' ebcdic='' echo='echo' egrep='egrep' emacs='' eunicefix='​:' exe_ext='' expr='expr' extensions='B Data/Dumper Fcntl IO IPC/SysV NDBM_File ODBM_File Opcode POSIX SDBM_File Socket attrs re Errno' find='find' firstmakefile='makefile' flex='' fpostype='fpos_t' freetype='void' full_ar='/bin/ar' full_csh='/bin/csh' full_sed='/bin/sed' gccversion='' gidtype='gid_t' glibpth='/usr/shlib /shlib /lib/pa1.1 /usr/lib/large /lib /usr/lib /usr/lib/386 /lib/386 /lib/large /usr/lib/small /lib/small /usr/ccs/lib /usr/ucblib /usr/local/lib ' grep='grep' groupcat='cat /etc/group' groupstype='gid_t' gzip='gzip' h_fcntl='false' h_sysfile='true' hint='recommended' hostcat='cat /etc/hosts' huge='' i_arpainet='define' i_bsdioctl='' i_db='' i_dbm='define' i_dirent='define' i_dld='' i_dlfcn='define' i_fcntl='' i_float='define' i_gdbm='' i_grp='define' i_limits='define' i_locale='define' i_machcthreads='' i_malloc='define' i_math='define' i_memory='' i_mntent='' i_ndbm='define' i_netdb='define' i_neterrno='' i_niin='define' i_pthread='define' i_pwd='define' i_rpcsvcdbm='' i_sfio='' i_sgtty='' i_stdarg='define' i_stddef='define' i_stdlib='define' i_string='define' i_sysdir='define' i_sysfile='define' i_sysfilio='' i_sysin='' i_sysioctl='define' i_sysmount='' i_sysndir='' i_sysparam='define' i_sysresrc='define' i_sysselct='define' i_syssockio='' i_sysstat='define' i_sysstatvfs='define' i_systime='define' i_systimek='' i_systimes='define' i_systypes='define' i_sysun='define' i_syswait='define' i_termio='' i_termios='define' i_time='define' i_unistd='define' i_utime='define' i_values='define' i_varargs='' i_varhdr='stdarg.h' i_vfork='' ignore_versioned_solibs='' incpath='' inews='' installarchlib='/usr/local/stow/perl5.005_03/lib/perl5/5.00503/aix' installbin='/usr/local/stow/perl5.005_03/bin' installman1dir='/usr/local/stow/perl5.005_03/man/man1' installman3dir='/usr/local/stow/perl5.005_03/lib/perl5/5.00503/man/man3' installprivlib='/usr/local/stow/perl5.005_03/lib/perl5/5.00503' installscript='/usr/local/stow/perl5.005_03/bin' installsitearch='/usr/local/stow/perl5.005_03/lib/perl5/site_perl/5.005/aix' installsitelib='/usr/local/stow/perl5.005_03/lib/perl5/site_perl/5.005' installusrbinperl='define' intsize='4' known_extensions='B DB_File Data/Dumper Fcntl GDBM_File IO IPC/SysV NDBM_File ODBM_File Opcode POSIX SDBM_File Socket Thread attrs re' ksh='' large='' ld='ld' lddlflags='-bhalt​:4 -bM​:SRE -bI​:$(PERL_INC)/perl.exp -bE​:$(BASEEXT).exp -b noentry -lc -L/usr/local/lib' ldflags=' -L/usr/local/lib' less='less' lib_ext='.a' libc='' libperl='libperl.a' libpth='/usr/local/lib /lib /usr/lib /usr/ccs/lib' libs='-lnsl -ldbm -ldl -lld -lm -lc -lcrypt -lbsd -lPW' libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun m c cposix posix ndir dir crypt ucb bsd BSD PW x' line='line' lint='' lkflags='' ln='ln' lns='/bin/ln -s' locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include' loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib' longdblsize='8' longlongsize='8' longsize='4' lp='' lpr='' ls='ls' lseektype='off_t' mail='' mailx='' make='make' make_set_make='#' mallocobj='' mallocsrc='' malloctype='void *' man1dir='/usr/local/man/man1' man1direxp='/usr/local/man/man1' man1ext='1' man3dir='/usr/local/lib/perl5/5.00503/man/man3' man3direxp='/usr/local/lib/perl5/5.00503/man/man3' man3ext='3' medium='' mips='' mips_type='' mkdir='mkdir' models='none' modetype='mode_t' more='more' mv='' myarchname='00900241C400-aix' mydomain='.uucp' myhostname='anpkmsw1' myuname='aix anpkmsw1 3 4 00900241c400 ' n='' netdb_hlen_type='size_t' netdb_host_type='const void *' netdb_name_type='const char *' netdb_net_type='in_addr_t' nm='nm' nm_opt='-B' nm_so_opt='' nonxs_ext='Errno' nroff='nroff' o_nonblock='O_NONBLOCK' obj_ext='.o' optimize='-O' orderlib='false' osname='aix' osvers='4.3.2.0' package='perl5' pager='/usr/local/bin/less' passcat='cat /etc/passwd' patchlevel='5' path_sep='​:' perl='perl' perladmin='mgm@​anpkmsw1.uucp' perlpath='/usr/local/bin/perl' pg='pg' phostname='hostname' pidtype='pid_t' plibpth='' pmake='' pr='' prefix='/usr/local' prefixexp='/usr/local' privlib='/usr/local/lib/perl5/5.00503' privlibexp='/usr/local/lib/perl5/5.00503' prototype='define' ptrsize='4' randbits='15' ranlib='​:' rd_nodata='-1' rm='rm' rmail='' runnm='false' scriptdir='/usr/local/bin' scriptdirexp='/usr/local/bin' sed='sed' selectminbits='1' selecttype='fd_set *' sendmail='sendmail' sh='/bin/sh' shar='' sharpbang='#!' shmattype='void *' shortsize='2' shrpenv='' shsharp='true' sig_name='ZERO HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM IOINT STOP TSTP CONT CHLD TTIN TTOU AIO XCPU XFSZ NUM26 MSG WINCH PWR USR1 USR2 PROF DANGER VTALRM MIGRATE PRE VIRT ALRM1 WAITING NUM40 NUM41 NUM42 NUM43 NUM44 NUM45 NUM46 NUM47 NUM48 NUM49 NUM50 NUM51 NUM52 NUM53 NUM54 NUM55 NUM56 NUM57 NUM58 NUM59 GRANT RETRACT SOUND MAX IOT LOST URG CLD IO POLL PTY KAP SAK ' sig_name_init='"ZERO"\, "HUP"\, "INT"\, "QUIT"\, "ILL"\, "TRAP"\, "ABRT"\, "EMT"\, "FPE"\, "KILL"\, "BUS"\, "SEGV"\, "SYS"\, "PIPE"\, "ALRM"\, "TERM"\, "IOINT"\, "STOP"\, "TSTP"\, "CONT"\, "CHLD"\, "TTIN"\, "TTOU"\, "AIO"\, "XCPU"\, "XFSZ"\, "NUM26"\, "MSG"\, "WINCH"\, "PWR"\, "USR1"\, "USR2"\, "PROF"\, "DANGER"\, "VTALRM"\, "MIGRATE"\, "PRE"\, "VIRT"\, "ALRM1"\, "WAITING"\, "NUM40"\, "NUM41"\, "NUM42"\, "NUM43"\, "NUM44"\, "NUM45"\, "NUM46"\, "NUM47"\, "NUM48"\, "NUM49"\, "NUM50"\, "NUM51"\, "NUM52"\, "NUM53"\, "NUM54"\, "NUM55"\, "NUM56"\, "NUM57"\, "NUM58"\, "NUM59"\, "GRANT"\, "RETRACT"\, "SOUND"\, "MAX"\, "IOT"\, "LOST"\, "URG"\, "CLD"\, "IO"\, "POLL"\, "PTY"\, "KAP"\, "SAK"\, 0' sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 6 6 16 20 23 23 23 60 63 ' sig_num_init='0\, 1\, 2\, 3\, 4\, 5\, 6\, 7\, 8\, 9\, 10\, 11\, 12\, 13\, 14\, 15\, 16\, 17\, 18\, 19\, 20\, 21\, 22\, 23\, 24\, 25\, 26\, 27\, 28\, 29\, 30\, 31\, 32\, 33\, 34\, 35\, 36\, 37\, 38\, 39\, 40\, 41\, 42\, 43\, 44\, 45\, 46\, 47\, 48\, 49\, 50\, 51\, 52\, 53\, 54\, 55\, 56\, 57\, 58\, 59\, 60\, 61\, 62\, 63\, 6\, 6\, 16\, 20\, 23\, 23\, 23\, 60\, 63\, 0' signal_t='void' sitearch='/usr/local/lib/perl5/site_perl/5.005/aix' sitearchexp='/usr/local/lib/perl5/site_perl/5.005/aix' sitelib='/usr/local/lib/perl5/site_perl/5.005' sitelibexp='/usr/local/lib/perl5/site_perl/5.005' sizetype='size_t' sleep='' smail='' small='' so='a' sockethdr='' socketlib='' sort='sort' spackage='Perl5' spitshell='cat' split='' src='.' ssizetype='ssize_t' startperl='#!/usr/local/bin/perl' startsh='#!/bin/sh' static_ext=' ' stdchar='unsigned char' stdio_base='((fp)->_base)' stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)' stdio_cnt='((fp)->_cnt)' stdio_filbuf='' stdio_ptr='((fp)->_ptr)' strings='/usr/include/string.h' submit='' subversion='3' sysman='/usr/man/man1' tail='' tar='' tbl='' tee='tee' test='test' timeincl='/usr/include/sys/time.h /usr/include/time.h ' timetype='time_t' touch='touch' tr='tr' trnl='\n' troff='' uidtype='uid_t' uname='uname' uniq='uniq' usedl='define' usemymalloc='n' usenm='false' useopcode='true' useperlio='' useposix='true' usesfio='false' useshrplib='false' usethreads='' usevfork='false' usrinc='/usr/include' uuname='' version='5.00503' vi='' voidflags='15' xlibpth='/usr/lib/386 /lib/386' zcat='' zip='zip'

-- Mitchell Morris

universe -G 6.672e-11 -e 1.602e-19 -h 6.626e-34 -protonmass 1.673e-27....   -- Neal Stephenson