Full_Name: Henrik Bengtsson
Version: R v1.7.0
OS: WinXP Pro
Submission from: (NULL) (130.235.2.229)
There seems to be an upper limit of the number of files (approx 1000 files) a
zip-file can contain when unpacking it with zip.unpack(). This results in an R
crash. This bug is urgent since install.packages() relies on zip.unpack() and
too big packages/bundles won't install with the current R v1.7.0 for
Windows.
The following R script creates a directory with N files and zips it and tries to
unpack it again. Try with a large number on N (N=1003 is probably enough) and R
will crash. The traceback from Dr. Mingw is pasted at the end.
# 1. Running the script several times with N = 900 crashes R or generates 
# the error:
# Error in zip.unpack("dir.zip", "c:/tmp") :
#        can not set length of non-vector
# 2. Running the script twice with N = 1002 crashes R
# 3. Running the script twice with N = 1003 crashes R (every time?)
# 4. Running the script twice with N = 2000 crashes R (every time!)
N <- 1003
# Create an directory with N files
dest <- "dir"
dir.create(dest)
files <- list.files(dest)
nMissing <- (N - length(files))
if (nMissing > 0) {
  idx <- (length(files)+1):N
  filename <- sapply(as.integer(idx), FUN=sprintf,
fmt="file%05d.txt")
  pathname <- paste(dest, filename, sep="/")
  for (k in seq(pathname))
    cat(file=pathname[k], 0)
}
# Create a zip archive of the directory
zipper <- "C:/cygwin/bin/jar -cfM"
cmd <- paste(zipper, " ", dest, ".zip", " ",
dest, sep="")
system(cmd)
# Unse zip.unpack(), which is used by install.packages(), to unpack it.
zip.unpack("dir.zip", "c:/tmp")
# From Dr. Mingw:
# Rterm.exe caused an Access Violation at location 004d2a04 in module R.dll
Writing to location 0235f4cc.
# 
# Registers:
# eax=0235f4c8 ebx=0235e508 ecx=0235a511 edx=00000fc0 esi=00637b90 edi=80000000
# eip=004d2a04 esp=0022c840 ebp=0022c868 iopl=0         nv up ei pl nz na po nc
# cs=001b  ss=0023  ds=0023  es=0023  fs=0038  gs=0000             efl=00000206
# 
# Call stack:
# 004D2A04  R.dll:004D2A04  malloc
# 0054FEFA  R.dll:0054FEFA  Rf_allocVector
# 0051AA10  R.dll:0051AA10  call_S
# 0051ABB7  R.dll:0051ABB7  call_S
# 0051AF18  R.dll:0051AF18  do_int_unzip
# 00559594  R.dll:00559594  do_internal
# 0052A3C8  R.dll:0052A3C8  Rf_eval
# 0052BA52  R.dll:0052BA52  do_begin
# 0052A3C8  R.dll:0052A3C8  Rf_eval
# 0052A3C8  R.dll:0052A3C8  Rf_eval
# 0052BA52  R.dll:0052BA52  do_begin
# 0052A3C8  R.dll:0052A3C8  Rf_eval
# 0052A3C8  R.dll:0052A3C8  Rf_eval
# 0052BA52  R.dll:0052BA52  do_begin
# 0052A3C8  R.dll:0052A3C8  Rf_eval
# 0052A6B5  R.dll:0052A6B5  Rf_applyClosure
# 0052A1D7  R.dll:0052A1D7  Rf_eval
# 0052CCE6  R.dll:0052CCE6  do_eval
# 00559594  R.dll:00559594  do_internal
# 0052A3C8  R.dll:0052A3C8  Rf_eval
# 0052A6B5  R.dll:0052A6B5  Rf_applyClosure
# 0052A1D7  R.dll:0052A1D7  Rf_eval
# 0052C2D5  R.dll:0052C2D5  do_set
# 0052A3C8  R.dll:0052A3C8  Rf_eval
# 0052BA52  R.dll:0052BA52  do_begin
# 0052A3C8  R.dll:0052A3C8  Rf_eval
# 0052B427  R.dll:0052B427  do_for
# 0052A3C8  R.dll:0052A3C8  Rf_eval
# 0052BA52  R.dll:0052BA52  do_begin
# 0052A3C8  R.dll:0052A3C8  Rf_eval
# 0052A6B5  R.dll:0052A6B5  Rf_applyClosure
# 0052A1D7  R.dll:0052A1D7  Rf_eval
# 0054996E  R.dll:0054996E  Rf_ReplIteration
# 00549F72  R.dll:00549F72  Rf_ReplIteration
# 0054AA76  R.dll:0054AA76  run_Rmainloop
# 00401571  Rterm.exe:00401571
# 0040141E  Rterm.exe:0040141E
# 004017B3  Rterm.exe:004017B3
# 00401165  Rterm.exe:00401165
# 00401013  Rterm.exe:00401013
# 77E814C7  kernel32.dll:77E814C7  GetCurrentDirectoryW
# Platform (a fresh R installation):
#  > R.version
#  	    _
#  platform i386-pc-mingw32
#  arch     i386
#  os       mingw32
#  system   i386, mingw32
#  status
#  major    1
#  minor    7.0
#  year     2003
#  month    04
#  day      16
#  language R
Sorry for the reposting of PR #2818 (PR #2820 and PR #2821). It's because I did reload in my browser after posting the bug report. In other words, PR #2818 == PR #2820 == PR #2821. /Henrik> -----Original Message----- > From: r-devel-bounces@stat.math.ethz.ch > [mailto:r-devel-bounces@stat.math.ethz.ch] On Behalf Of > hb@maths.lth.se > Sent: den 22 april 2003 17:23 > To: r-devel@stat.math.ethz.ch > Cc: R-bugs@biostat.ku.dk > Subject: [Rd] zip.unpack() crashes R (PR#2818) > > > Full_Name: Henrik Bengtsson > Version: R v1.7.0 > OS: WinXP Pro > Submission from: (NULL) (130.235.2.229) > > > There seems to be an upper limit of the number of files > (approx 1000 files) a zip-file can contain when unpacking it > with zip.unpack(). This results in an R crash. This bug is > urgent since install.packages() relies on zip.unpack() and > too big packages/bundles won't install with the current R > v1.7.0 for Windows. > > The following R script creates a directory with N files and > zips it and tries to unpack it again. Try with a large number > on N (N=1003 is probably enough) and R will crash. The > traceback from Dr. Mingw is pasted at the end. > > # 1. Running the script several times with N = 900 crashes R > or generates > # the error: > # Error in zip.unpack("dir.zip", "c:/tmp") : > # can not set length of non-vector > # 2. Running the script twice with N = 1002 crashes R > # 3. Running the script twice with N = 1003 crashes R (every > time?) # 4. Running the script twice with N = 2000 crashes R > (every time!) N <- 1003 > > # Create an directory with N files > dest <- "dir" > dir.create(dest) > files <- list.files(dest) > nMissing <- (N - length(files)) > if (nMissing > 0) { > idx <- (length(files)+1):N > filename <- sapply(as.integer(idx), FUN=sprintf, fmt="file%05d.txt") > pathname <- paste(dest, filename, sep="/") > for (k in seq(pathname)) > cat(file=pathname[k], 0) > } > > # Create a zip archive of the directory > zipper <- "C:/cygwin/bin/jar -cfM" > cmd <- paste(zipper, " ", dest, ".zip", " ", dest, sep="") > system(cmd) > > # Unse zip.unpack(), which is used by install.packages(), to > unpack it. zip.unpack("dir.zip", "c:/tmp") > > > # From Dr. Mingw: > # Rterm.exe caused an Access Violation at location 004d2a04 > in module R.dll Writing to location 0235f4cc. # > # Registers: > # eax=0235f4c8 ebx=0235e508 ecx=0235a511 edx=00000fc0 > esi=00637b90 edi=80000000 > # eip=004d2a04 esp=0022c840 ebp=0022c868 iopl=0 nv up > ei pl nz na po nc > # cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 > efl=00000206 > # > # Call stack: > # 004D2A04 R.dll:004D2A04 malloc > # 0054FEFA R.dll:0054FEFA Rf_allocVector > # 0051AA10 R.dll:0051AA10 call_S > # 0051ABB7 R.dll:0051ABB7 call_S > # 0051AF18 R.dll:0051AF18 do_int_unzip > # 00559594 R.dll:00559594 do_internal > # 0052A3C8 R.dll:0052A3C8 Rf_eval > # 0052BA52 R.dll:0052BA52 do_begin > # 0052A3C8 R.dll:0052A3C8 Rf_eval > # 0052A3C8 R.dll:0052A3C8 Rf_eval > # 0052BA52 R.dll:0052BA52 do_begin > # 0052A3C8 R.dll:0052A3C8 Rf_eval > # 0052A3C8 R.dll:0052A3C8 Rf_eval > # 0052BA52 R.dll:0052BA52 do_begin > # 0052A3C8 R.dll:0052A3C8 Rf_eval > # 0052A6B5 R.dll:0052A6B5 Rf_applyClosure > # 0052A1D7 R.dll:0052A1D7 Rf_eval > # 0052CCE6 R.dll:0052CCE6 do_eval > # 00559594 R.dll:00559594 do_internal > # 0052A3C8 R.dll:0052A3C8 Rf_eval > # 0052A6B5 R.dll:0052A6B5 Rf_applyClosure > # 0052A1D7 R.dll:0052A1D7 Rf_eval > # 0052C2D5 R.dll:0052C2D5 do_set > # 0052A3C8 R.dll:0052A3C8 Rf_eval > # 0052BA52 R.dll:0052BA52 do_begin > # 0052A3C8 R.dll:0052A3C8 Rf_eval > # 0052B427 R.dll:0052B427 do_for > # 0052A3C8 R.dll:0052A3C8 Rf_eval > # 0052BA52 R.dll:0052BA52 do_begin > # 0052A3C8 R.dll:0052A3C8 Rf_eval > # 0052A6B5 R.dll:0052A6B5 Rf_applyClosure > # 0052A1D7 R.dll:0052A1D7 Rf_eval > # 0054996E R.dll:0054996E Rf_ReplIteration > # 00549F72 R.dll:00549F72 Rf_ReplIteration > # 0054AA76 R.dll:0054AA76 run_Rmainloop > # 00401571 Rterm.exe:00401571 > # 0040141E Rterm.exe:0040141E > # 004017B3 Rterm.exe:004017B3 > # 00401165 Rterm.exe:00401165 > # 00401013 Rterm.exe:00401013 > # 77E814C7 kernel32.dll:77E814C7 GetCurrentDirectoryW > > > # Platform (a fresh R installation): > # > R.version > # _ > # platform i386-pc-mingw32 > # arch i386 > # os mingw32 > # system i386, mingw32 > # status > # major 1 > # minor 7.0 > # year 2003 > # month 04 > # day 16 > # language R > > ______________________________________________ > R-devel@stat.math.ethz.ch mailing list > https://www.stat.math.ethz.ch/mailman/listinfo> /r-devel > >
hb@maths.lth.se writes:> # 1. Running the script several times with N = 900 crashes R or generates > # the error: > # Error in zip.unpack("dir.zip", "c:/tmp") : > # can not set length of non-vector > # 2. Running the script twice with N = 1002 crashes R > # 3. Running the script twice with N = 1003 crashes R (every time?) > # 4. Running the script twice with N = 2000 crashes R (every time!) > N <- 1003....> # Unse zip.unpack(), which is used by install.packages(), to unpack it. > zip.unpack("dir.zip", "c:/tmp")Reproducible on Linux with .Internal(int.unzip("dir.zip",NULL, "/tmp")) instead of zip.unpack. -- O__ ---- Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk) FAX: (+45) 35327907
On Tue, 22 Apr 2003 hb@maths.lth.se wrote:> Full_Name: Henrik Bengtsson > Version: R v1.7.0 > OS: WinXP Pro > Submission from: (NULL) (130.235.2.229) > > > There seems to be an upper limit of the number of files (approx 1000 files) aYes, 500 topics.> zip-file can contain when unpacking it with zip.unpack(). This results in an R > crash. This bug is urgent since install.packages() relies on zip.unpack() and > too big packages/bundles won't install with the current R v1.7.0 for Windows.Whyever should a R package have over 1000 files? I think you are not understanding how to use the --use-zip options. Also, look at options("unzip"). Why is this bug `urgent': it has been around for 14 months, and no one else has encountered a problem? -- Brian D. Ripley, ripley@stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595