r-lib / revdepcheck

R package reverse dependency checking
https://revdepcheck.r-lib.org
Other
101 stars 32 forks source link

error in untar2: incomplete block on file #370

Closed bbolker closed 10 months ago

bbolker commented 10 months ago

I'm getting frequent messages of the form:

Error in untar2(tarfile, files, list, exdir, restore_times) : incomplete block on file

has anyone seen this/solved this?

Running with revdep_check("gtools", timeout=45*60, num_workers = 28), so maybe it's some kind of race condition/file-system interference?

According to this Stack Overflow question this could be an issue with corrupted tarballs on the mirror, but that seems slightly unlikely since I'm using https://cloud.r-project.org ... ??

R Under development (unstable) (2023-10-09 r85295)
Platform: x86_64-pc-linux-gnu
Running under: Pop!_OS 22.04 LTS

Matrix products: default
BLAS/LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.20.so;  LAPACK version 3.10.0

locale:
 [1] LC_CTYPE=en_CA.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_CA.UTF-8        LC_COLLATE=en_CA.UTF-8    
 [5] LC_MONETARY=en_CA.UTF-8    LC_MESSAGES=en_CA.UTF-8   
 [7] LC_PAPER=en_CA.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_CA.UTF-8 LC_IDENTIFICATION=C       

time zone: America/Toronto
tzcode source: system (glibc)

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] revdepcheck_1.0.0.9001

loaded via a namespace (and not attached):
 [1] rappdirs_0.3.3       utf8_1.2.4           RSQLite_2.3.3       
 [4] hms_1.1.3            digest_0.6.33        magrittr_2.0.3      
 [7] fastmap_1.1.1        blob_1.2.4           jsonlite_1.8.7      
[10] rprojroot_2.0.4      processx_3.8.2       parsedate_1.3.1     
[13] progress_1.2.2       sessioninfo_1.2.2    pkgbuild_1.4.2      
[16] whoami_1.3.0         DBI_1.1.3            rcmdcheck_1.4.0     
[19] rematch2_2.1.2       ps_1.7.5             httr_1.4.7          
[22] fansi_1.0.5          cli_3.6.1            rlang_1.1.2         
[25] crayon_1.5.2         cranlike_1.0.2       bit64_4.0.5         
[28] yaml_2.3.7           remotes_2.4.2.1      base64enc_0.1-3     
[31] withr_2.5.2          cachem_1.0.8         crancache_0.0.0.9001
[34] tools_4.4.0          gargle_1.5.2         debugme_1.1.0       
[37] memoise_2.0.1        gmailr_2.0.0         curl_5.1.0          
[40] assertthat_0.2.1     vctrs_0.6.4          R6_2.5.1            
[43] lifecycle_1.0.4      fs_1.6.3             bit_4.0.5           
[46] xopen_1.0.0          clisymbols_1.2.0     pkgconfig_2.0.3     
[49] desc_1.4.2           callr_3.7.3          pillar_1.9.0        
[52] glue_1.6.2           xfun_0.41            tibble_3.2.1        
[55] knitr_1.45           compiler_4.4.0       prettyunits_1.2.0 

traceback:

> traceback()
23: stop("incomplete block on file")
22: untar2(tarfile, files, list, exdir, restore_times)
21: untar(con <- gzfile(archive, open = "rb"), files = filename, 
        exdir = tmp)
20: withCallingHandlers(expr, warning = function(w) if (inherits(w, 
        classes)) tryInvokeRestart("muffleWarning"))
19: suppressWarnings(untar(con <- gzfile(archive, open = "rb"), files = filename, 
        exdir = tmp))
18: uncompress(file, package_name)
17: get_description_from_package(file)
16: idesc_create_file(self, private, file)
15: idesc_create(self, private, cmd, file, text, package)
14: initialize(...)
13: description$new(cmd, file, text, package)
12: desc(path)
11: rcc_init(self, private, super, path, args, build_args, check_dir, 
        libpath, repos, env)
10: initialize(...)
9: rcmdcheck_process$new(path = tarball, libpath = lib, args = c("--no-manual", 
       "--no-build-vignettes", "-o", out))
8: force(code)
7: with_envvar(c(R_ENVIRON_USER = tempdir(), R_LIBS = "", NO_COLOR = "true", 
       env), rcmdcheck_process$new(path = tarball, libpath = lib, 
       args = c("--no-manual", "--no-build-vignettes", "-o", out)))
6: check_proc(pkgdir, pkgname, version = version, env = state$options$env)
5: check_task(state, task)
4: do_task(state, task)
3: run_event_loop(state)
2: revdep_run(pkg, quiet = quiet, timeout = timeout, num_workers = num_workers, 
       env = env)
1: revdep_check("gtools", timeout = 45 * 60, num_workers = 10)
gaborcsardi commented 10 months ago

Yes, that does seem like a corrupt file, which does happen on cloud.r-project.org or any other mirror. You can try finding the corrupt file, or clear the cache and run the check again.

bbolker commented 10 months ago

Thanks. Running again, we'll see what happens ...

It looks like the problem was a Bioconductor package, Hiiragi2013 https://bioconductor.org/packages/release/data/experiment/html/Hiiragi2013.html.

Diagnosis/solution: