r-lib / zip

Platform independent zip compression via miniz
https://r-lib.github.io/zip/
Other
83 stars 19 forks source link

Segmentation fault when attempting to zip on a non-existent directory #96

Closed stefanoborini closed 1 year ago

stefanoborini commented 1 year ago
> filename <- "/foo/bar"
> zip::zip(                                                                               
+     filename,                                                                             
+     dir(".", all.files = TRUE, no.. = TRUE),                                              
+     recurse = TRUE,                                                                       
+     include_directories = FALSE,                                                          
+     mode = "cherry-pick"                                                                  
+   ) 

 *** caught segfault ***
address 0x68, cause 'memory not mapped'

Traceback:
 1: zip_internal(zipfile, files, recurse, compression_level, append = FALSE,     root = root, keep_path = (mode == "mirror"), include_directories = include_directories)
 2: zip::zip(filename, dir(".", all.files = TRUE, no.. = TRUE), recurse = TRUE,     include_directories = FALSE, mode = "cherry-pick")

Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
Selection: 
> packageVersion("zip")
[1] ‘2.2.2’
> R.Version()$version.string
[1] "R version 4.0.4 (2021-02-15)"

Seen on all platforms.

gaborcsardi commented 1 year ago

Seems like this has been fixed in the main branch:

❯ zip::zip(
+     filename,
+     dir(".", all.files = TRUE, no.. = TRUE),
+     recurse = TRUE,
+     include_directories = FALSE,
+     mode = "cherry-pick"
+   )
Error in zip_internal(zipfile, files, recurse, compression_level, append = FALSE,  :
  zip error: Cannot open zip file `/foo/bar` for writing in file zip.c:309