Closed p5pRT closed 20 years ago
I did as much homework as I could\, but I believe this is a bug. I deal with some *very* large files and for some reason Perl stat doesn't seem to handle large files properly on digital unix. Stat appears to return an incorrect value for what appears to be any file over 2GB in size.
Details\, including output from perlbug below unfortunately I didn't find a fix for it yet...
Phil -- Phillip E. Lobbes http://www.finchcomputer.com/ (818)550-9060 phil@finchcomputer.com
Details...
* The system (Digital UNIX 4\, Perl 5.005_03): bambam% uname -a OSF1 bambam V4.0 1091 alpha
* The file (at least a typical one): bambam% ls -l SUBSCR_COMMENTS_DLY1.UNL_SUBR01_19990803\;1 -rw-rw-r-- 1 jyi stmslrpt 25084568025 Aug 4 15:02 SUBSCR_COMMENTS_DLY1.UNL_SUBR01_19990803;1
* The C program (works!): #include \<sys/types.h> #include \<sys/stat.h> main() { struct stat stb; stat("./SUBSCR_COMMENTS_DLY1.UNL_SUBR01_19990803;1"\, &stb); printf("size(%lu)\n"\, stb.st_size); } bambam% ./a.out size(25084568025)
* The Perl program(FAILS\, wrong file size!): #!/opt/dtv/bin/perl -w @st=stat("SUBSCR_COMMENTS_DLY1.UNL_SUBR01_19990803;1"); print "$st[7]\n"; bambam% ./badstat.pl -685235751
* The Perl program through the debugger:
bambam% /opt/dtv/bin/perl -d ~/badstat.pl
Loading DB routines from perl5db.pl version 1.0402
Emacs support available.
Enter h or `h h' for help.
main::(/home/lobbesp/badstat.pl:2):
2: @st=stat("SUBSCR_COMMENTS_DLY1.UNL_SUBR01_19990803;1");
DB\<1> n
main::(/home/lobbesp/badstat.pl:3):
3: print "$st[7]\n";
DB\<1> x @st
0 '-363102389'
1 2057
2 33204
3 1
4 1004
5 303
6 0
7 '-685235751'
8 933879644
9 933804124
10 933807395
11 8192
12 48993312
DB\<2> printf("%li"\, $st[7])
-685235751
DB\<3> l
3==> print "$st[7]\n";
DB\<3> c
-685235751
Debugged program terminated. Use q to quit or R to restart\,
use O inhibit_exit to avoid stopping after program termination\,
h q\, h R or h O to get additional info.
DB\<3>
* bambam% /opt/dtv/perl/5.005_03/bin/perlbug -d -v Site configuration information for perl 5.00503:
Configured by lobbesp at Mon Jul 19 10:56:06 PDT 1999.
Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration: Platform: osname=dec_osf\, osvers=4.0\, archname=alpha-dec_osf uname='osf1 bambam v4.0 1091 alpha ' hint=recommended\, useposix=true\, d_sigaction=define usethreads=undef useperlio=undef d_sfio=undef Compiler: cc='cc'\, optimize='-O4'\, gccversion= cppflags='-std -ieee -D_INTRINSICS -I/usr/local/include -I/opt/local/include -DLANGUAGE_C' ccflags ='-std -fprm d -ieee -D_INTRINSICS -I/usr/local/include -I/opt/local/include -DLANGUAGE_C' stdchar='unsigned char'\, d_stdstdio=define\, usevfork=false intsize=4\, longsize=8\, ptrsize=8\, doublesize=8 d_longlong=define\, longlongsize=8\, d_longdbl=define\, longdblsize=8 alignbytes=8\, usemymalloc=y\, prototype=define Linker and Libraries: ld='ld'\, ldflags =' -L/usr/local/lib -L/opt/local/lib' libpth=/usr/local/lib /opt/local/lib /usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /var/shlib libs=-ldbm -ldb -lm libc=/usr/shlib/libc.so\, so=so\, useshrplib=true\, libperl=libperl.so Dynamic Linking: dlsrc=dl_dlopen.xs\, dlext=so\, d_dlsymun=undef\, ccdlflags=' -Wl\,-rpath\,/opt/dtv/perl/5.005_03/lib/5.00503/alpha-dec_osf/CORE' cccdlflags=' '\, lddlflags='-shared -expect_unresolved "*" -O4 -msym -s -L/usr/local/lib -L/opt/local/lib'
Locally applied patches:
@INC for perl 5.00503: /opt/dtv/perl/5.005_03/lib/5.00503/alpha-dec_osf /opt/dtv/perl/5.005_03/lib/5.00503 /opt/dtv/perl/5.005_03/lib/site_perl/5.005/alpha-dec_osf /opt/dtv/perl/5.005_03/lib/site_perl/5.005 .
Environment for perl 5.00503: HOME=/home/lobbesp LANG (unset) LANGUAGE (unset) LD_LIBRARY_PATH=/oracle/app/oracle/product/8.0.5/lib LOGDIR (unset) PATH=/home/lobbesp/bin:/home/lobbesp/X/bin:/home/lobbesp/scripts:/usr/bin:.:/oracle/app/oracle/product/8.0.5/bin:/oracle/app/oracle/product/8.0.5/obackup/bin:/sbin:/usr/sbin:/usr/bin/X11:/usr/ccs/bin:/home/lobbesp/site/bin:/home/lobbesp/scripts:/usr/local/bin:/opt/dtv/bin:/usr/dt:. PERL_BADLANG (unset) SHELL=/usr/local/bin/tcsh
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='/opt/dtv/perl/5.005_03/lib/5.00503/alpha-dec_osf' archlibexp='/opt/dtv/perl/5.005_03/lib/5.00503/alpha-dec_osf' archname='alpha-dec_osf' archobjs='' awk='awk' baserev='5.0' bash='' bin='/opt/dtv/perl/5.005_03/bin' binexp='/opt/dtv/perl/5.005_03/bin' bison='' byacc='byacc' byteorder='12345678' c='\c' castflags='0' cat='cat' cc='cc' cccdlflags=' ' ccdlflags=' -Wl\,-rpath\,/opt/dtv/perl/5.005_03/lib/5.00503/alpha-dec_osf/CORE' ccflags='-std -fprm d -ieee -D_INTRINSICS -I/usr/local/include -I/opt/local/include -DLANGUAGE_C' ccsymbols='LANGUAGE_C=1 SYSTYPE_BSD=1 _LONGLONG=1 __ALPHA=1 __Alpha_AXP=1 __DATE__="Jul __DECC=1 __DECC_MODE_COMMON=1 __DECC_VER=50890011 __IEEE_FLOAT=1 __INITIAL_POINTER_SIZE=0 __LANGUAGE_C__=1 __PRAGMA_ENVIRONMENT=1 __TIME__="10:57:09" __X_FLOAT=0' cf_by='lobbesp' cf_email='lobbesp@bambam.directv.com' cf_time='Mon Jul 19 10:56:06 PDT 1999' chgrp='' chmod='' chown='' clocktype='clock_t' comm='comm' compress='' config_arg0='Configure' config_arg1='-ds' config_arg2='-e' config_arg3='-Dprefix=/opt/dtv/perl/5.005_03' config_argc='3' config_args='-ds -e -Dprefix=/opt/dtv/perl/5.005_03' contains='grep' cp='cp' cpio='' cpp='cpp' cpp_stuff='42' cppccsymbols='_SYSTYPE_BSD=1 __alpha=1 __osf__=1 __unix__=1 unix=1' cppflags='-std -ieee -D_INTRINSICS -I/usr/local/include -I/opt/local/include -DLANGUAGE_C' cpplast='' cppminus='' cpprun='/usr/bin/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='' d_bsdgetpgrp='' d_bsdsetpgrp='define' d_bzero='define' d_casti32='' d_castneg='define' 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='define' 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='define' d_pwexpire='' d_pwgecos='define' d_pwpasswd='define' d_pwquota='define' 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='define' d_setresgid='' d_setresuid='' d_setreuid='define' d_setrgid='define' d_setruid='define' 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='define' 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='define' 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='define' 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_dlopen.xs' doublesize='8' dynamic_ext='B DB_File 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 DB_File 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='/usr/bin/ar' full_csh='/usr/bin/csh' full_sed='/usr/bin/sed' gccversion='' gidtype='gid_t' glibpth='/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib' grep='grep' groupcat='cat /etc/group' groupstype='gid_t' gzip='gzip' h_fcntl='false' h_sysfile='true' hint='recommended' hostcat='ypcat hosts' huge='' i_arpainet='define' i_bsdioctl='' i_db='define' 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='define' 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='' i_unistd='define' i_utime='define' i_values='define' i_varargs='' i_varhdr='stdarg.h' i_vfork='' ignore_versioned_solibs='' incpath='' inews='' installarchlib='/opt/dtv/perl/5.005_03/lib/5.00503/alpha-dec_osf' installbin='/opt/dtv/perl/5.005_03/bin' installman1dir='/opt/dtv/perl/5.005_03/man/man1' installman3dir='/opt/dtv/perl/5.005_03/man/man3' installprivlib='/opt/dtv/perl/5.005_03/lib/5.00503' installscript='/opt/dtv/perl/5.005_03/bin' installsitearch='/opt/dtv/perl/5.005_03/lib/site_perl/5.005/alpha-dec_osf' installsitelib='/opt/dtv/perl/5.005_03/lib/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='-shared -expect_unresolved "*" -O4 -msym -s -L/usr/local/lib -L/opt/local/lib' ldflags=' -L/usr/local/lib -L/opt/local/lib' less='less' lib_ext='.a' libc='/usr/shlib/libc.so' libperl='libperl.so' libpth='/usr/local/lib /opt/local/lib /usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /var/shlib' libs='-ldbm -ldb -lm' libswanted='sfio socket inet nsl nm gdbm dbm db malloc dld ld sun m cposix posix ndir dir crypt ucb BSD x' line='line' lint='' lkflags='' ln='ln' lns='/usr/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='8' lp='' lpr='' ls='ls' lseektype='off_t' mail='' mailx='' make='make' make_set_make='#' mallocobj='malloc.o' mallocsrc='malloc.c' malloctype='void *' man1dir='/opt/dtv/perl/5.005_03/man/man1' man1direxp='/opt/dtv/perl/5.005_03/man/man1' man1ext='1' man3dir='/opt/dtv/perl/5.005_03/man/man3' man3direxp='/opt/dtv/perl/5.005_03/man/man3' man3ext='3' medium='' mips='' mips_type='' mkdir='mkdir' models='none' modetype='mode_t' more='more' mv='' myarchname='alpha-dec_osf' mydomain='.directv.com' myhostname='bambam' myuname='osf1 bambam v4.0 1091 alpha ' n='' netdb_hlen_type='int' netdb_host_type='const char *' netdb_name_type='const char *' netdb_net_type='int' nm='nm' nm_opt='-p' nm_so_opt='' nonxs_ext='Errno' nroff='nroff' o_nonblock='O_NONBLOCK' obj_ext='.o' optimize='-O4' orderlib='false' osname='dec_osf' osvers='4.0' package='perl5' pager='/usr/bin/more' passcat='cat /etc/passwd' patchlevel='5' path_sep=':' perl='perl' perladmin='lobbesp@bambam.directv.com' perlpath='/opt/dtv/perl/5.005_03/bin/perl' pg='pg' phostname='hostname' pidtype='pid_t' plibpth='' pmake='' pr='' prefix='/opt/dtv/perl/5.005_03' prefixexp='/opt/dtv/perl/5.005_03' privlib='/opt/dtv/perl/5.005_03/lib/5.00503' privlibexp='/opt/dtv/perl/5.005_03/lib/5.00503' prototype='define' ptrsize='8' randbits='15' ranlib=':' rd_nodata='-1' rm='rm' rmail='' runnm='true' scriptdir='/opt/dtv/perl/5.005_03/bin' scriptdirexp='/opt/dtv/perl/5.005_03/bin' sed='sed' selectminbits='32' 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 VTALRM PROF WINCH INFO USR1 USR2 RESV RTMIN NUM34 NUM35 NUM36 NUM37 NUM38 NUM39 NUM40 NUM41 NUM42 NUM43 NUM44 NUM45 NUM46 NUM47 MAX IOT LOST URG CLD IO POLL PTY PWR RTMAX ' 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"\, "VTALRM"\, "PROF"\, "WINCH"\, "INFO"\, "USR1"\, "USR2"\, "RESV"\, "RTMIN"\, "NUM34"\, "NUM35"\, "NUM36"\, "NUM37"\, "NUM38"\, "NUM39"\, "NUM40"\, "NUM41"\, "NUM42"\, "NUM43"\, "NUM44"\, "NUM45"\, "NUM46"\, "NUM47"\, "MAX"\, "IOT"\, "LOST"\, "URG"\, "CLD"\, "IO"\, "POLL"\, "PTY"\, "PWR"\, "RTMAX"\, 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 6 6 16 20 23 23 23 29 48 ' 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\, 6\, 6\, 16\, 20\, 23\, 23\, 23\, 29\, 48\, 0' signal_t='void' sitearch='/opt/dtv/perl/5.005_03/lib/site_perl/5.005/alpha-dec_osf' sitearchexp='/opt/dtv/perl/5.005_03/lib/site_perl/5.005/alpha-dec_osf' sitelib='/opt/dtv/perl/5.005_03/lib/site_perl/5.005' sitelibexp='/opt/dtv/perl/5.005_03/lib/site_perl/5.005' sizetype='size_t' sleep='' smail='' small='' so='so' sockethdr='' socketlib='' sort='sort' spackage='Perl5' spitshell='cat' split='' src='.' ssizetype='ssize_t' startperl='#!/opt/dtv/perl/5.005_03/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 ' timetype='time_t' touch='touch' tr='tr' trnl='\n' troff='' uidtype='uid_t' uname='uname' uniq='uniq' usedl='define' usemymalloc='y' usenm='true' useopcode='true' useperlio='' useposix='true' usesfio='false' useshrplib='true' usethreads='' usevfork='false' usrinc='/usr/include' uuname='' version='5.00503' vi='' voidflags='15' xlibpth='/usr/lib/386 /lib/386' zcat='' zip='zip'
Thanks for your report. Yes\, unfortunately there are still many bugs in Perl related to handling files larger than 2 gigabytes. This is one of them. We will try to enhance these matters for the upcoming Perl 5.6 release (no schedule commitments\, but hopefully this year).
-- $jhi++; # http://www.iki.fi/jhi/ # There is this special biologist word we use for 'stable'. # It is 'dead'. -- Jack Cohen
Migrated from rt.perl.org#1199 (status was 'resolved')
Searchable as RT1199$