Closed p5pRT closed 20 years ago
+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
Migrated from rt.perl.org#1764 (status was 'resolved')
Searchable as RT1764$