gdal seems to cause an illegal operation during install.packages("sf") within RStudio-Server on a ArchLinux server

Viewed 66

I have recently starting using an old server.
We have installed AchLinux, and RStudio Server (2022.07.999 build 999) on the device. The server is running dual Xeon E5-2470 with 48GB RAM.

I'm trying to install.packages("sf") and during the installation I get the following:

** testing if installed package can be loaded from temporary location

 *** caught illegal operation ***
address 0x55b94289a1e0, cause 'unknown'

Traceback:
 1: CPL_gdal_init()
 2: load_gdal()
 3: fun(libname, pkgname)
 4: doTryCatch(return(expr), name, parentenv, handler)
 5: tryCatchOne(expr, names, parentenv, handlers[[1L]])
 6: tryCatchList(expr, classes, parentenv, handlers)
 7: tryCatch(fun(libname, pkgname), error = identity)
 8: runHook(".onLoad", env, package.lib, package)
 9: loadNamespace(package, lib.loc)
10: doTryCatch(return(expr), name, parentenv, handler)
11: tryCatchOne(expr, names, parentenv, handlers[[1L]])
12: tryCatchList(expr, classes, parentenv, handlers)
13: tryCatch({    attr(package, "LibPath") <- which.lib.loc    ns <- loadNamespace(package, lib.loc)    env <- attachNamespace(ns, pos = pos, deps, exclude, include.only)}, error = function(e) {    P <- if (!is.null(cc <- conditionCall(e)))         paste(" in", deparse(cc)[1L])    else ""    msg <- gettextf("package or namespace load failed for %s%s:\n %s",         sQuote(package), P, conditionMessage(e))    if (logical.return && !quietly)         message(paste("Error:", msg), domain = NA)    else stop(msg, call. = FALSE, domain = NA)})
14: library(pkg_name, lib.loc = lib, character.only = TRUE, logical.return = TRUE)
15: withCallingHandlers(expr, packageStartupMessage = function(c) tryInvokeRestart("muffleMessage"))
16: suppressPackageStartupMessages(library(pkg_name, lib.loc = lib,     character.only = TRUE, logical.return = TRUE))
17: doTryCatch(return(expr), name, parentenv, handler)
18: tryCatchOne(expr, names, parentenv, handlers[[1L]])
19: tryCatchList(expr, classes, parentenv, handlers)
20: tryCatch(expr, error = function(e) {    call <- conditionCall(e)    if (!is.null(call)) {        if (identical(call[[1L]], quote(doTryCatch)))             call <- sys.call(-4L)        dcall <- deparse(call, nlines = 1L)        prefix <- paste("Error in", dcall, ": ")        LONG <- 75L        sm <- strsplit(conditionMessage(e), "\n")[[1L]]        w <- 14L + nchar(dcall, type = "w") + nchar(sm[1L], type = "w")        if (is.na(w))             w <- 14L + nchar(dcall, type = "b") + nchar(sm[1L],                 type = "b")        if (w > LONG)             prefix <- paste0(prefix, "\n  ")    }    else prefix <- "Error : "    msg <- paste0(prefix, conditionMessage(e), "\n")    .Internal(seterrmessage(msg[1L]))    if (!silent && isTRUE(getOption("show.error.messages"))) {        cat(msg, file = outFile)        .Internal(printDeferredWarnings())    }    invisible(structure(msg, class = "try-error", condition = e))})
21: try(suppressPackageStartupMessages(library(pkg_name, lib.loc = lib,     character.only = TRUE, logical.return = TRUE)))
22: tools:::.test_load_package("sf", "/home/trevor/R/x86_64-pc-linux-gnu-library/4.2/00LOCK-sf/00new")
An irrecoverable exception occurred. R is aborting now ...
ERROR: loading failed
* removing ‘/home/trevor/R/x86_64-pc-linux-gnu-library/4.2/sf’
Warning in install.packages :
  installation of package ‘sf’ had non-zero exit status

A similar error happens if I install.packages("rgdal").

I believe based on the above that there's an issue with the gdal package in ArchLinux, installed using pacman, we've installed all the optional parts of the package, but the errors still occur.

We have installed V3.5.0-4 of gdal as shown below:

pacman -Qi gdal
Name            : gdal
Version         : 3.5.0-4
Description     : A translator library for raster and vector geospatial data formats
Architecture    : x86_64
URL             : https://gdal.org/
Licenses        : custom
Groups          : None
Provides        : None
Depends On      : proj  blosc  crypto++  curl  libdeflate  expat  libfreexl  geos  libgeotiff  giflib  libjpeg-turbo
                  json-c  xz  libxml2  lz4  unixodbc  ocl-icd  openssl  pcre2  libpng  qhull  libspatialite  sqlite
                  libtiff  xerces-c  zlib  zstd
Optional Deps   : arrow: Arrow/Parquet support [installed]
                  cfitsio: FITS support [installed]
                  hdf5: HDF5 support [installed]
                  libheif: HEIF support [installed]
                  mariadb-libs: MySQL support [installed]
                  netcdf: netCDF support [installed]
                  openexr: EXR support [installed]
                  openjpeg2: JP2 support [installed]
                  podofo: PDF support [installed]
                  poppler: PDF support [installed]
                  postgresql-libs: PostgreSQL support [installed]
                  libwebp: WebP support [installed]
Required By     : python-gdal
Optional For    : None
Conflicts With  : None
Replaces        : None
Installed Size  : 27.98 MiB
Packager        : Bruno Pagani <archange@archlinux.org>
Build Date      : Fri Jul 1 21:44:46 2022
Install Date    : Sun Jul 24 16:22:48 2022
Install Reason  : Explicitly installed
Install Script  : No
Validated By    : Signature

Can anyone help with this error?

2 Answers

I have got same issue. And i dont know how to deal with it. After last update, GDAL upgraded to ver. 3.5.1. and started to crash. And it is the reason that gdal-dependent R packages (sf, terra, rgdal, etc) does not work, as well as QGIS.

Some gdal binaries (gdal-config, for an example) still work, but most of them gives an error "Illegal instruction (core dumped)".

My system:

OS: Manjaro 21.3.6 Ruah
 Kernel: x86_64 Linux 5.15.57-2-MANJARO
 Uptime: 26m
 Packages: 1469
 Shell: bash
 Resolution: 1920x1080
 DE: Xfce4
 WM: Xfwm4
 WM Theme: Matcha-sea
 GTK Theme: Matcha-sea [GTK2]
 Icon Theme: Papirus-Maia
 Font: Noto Sans 10
 Disk: 1,5T / 6,8T (23%)
 CPU: AMD FX-8350 Eight-Core @ 8x 4GHz
 GPU: AMD RS780 (DRM 2.50.0 / 5.15.57-2-MANJARO, LLVM 14.0.6)
 RAM: 1829MiB / 19485MiB

coredumpctl info:

    PID: 2333 (gdalinfo)
           UID: 1000 (rstanislav)
           GID: 1000 (rstanislav)
        Signal: 4 (ILL)
     Timestamp: Tue 2022-08-02 13:33:42 MSK (5min ago)
  Command Line: gdalinfo
    Executable: /usr/bin/gdalinfo
 Control Group: /user.slice/user-1000.slice/session-2.scope
          Unit: session-2.scope
         Slice: user-1000.slice
       Session: 2
     Owner UID: 1000 (rstanislav)
       Boot ID: 6b3e5ea1666440239afb43c4a246b953
    Machine ID: 6313df66156547e292fedaf552861e30
      Hostname: rstanislav-ipen
       Storage: /var/lib/systemd/coredump/core.gdalinfo.1000.6b3e5ea1666440239afb43c4a246b953.2333.1659436422>
     Disk Size: 743.6K
       Message: Process 2333 (gdalinfo) of user 1000 dumped core.
                
                Module linux-vdso.so.1 with build-id 125b0285aa529b1b1396ff79a856cc580f53371b
                Module libgflags.so.2.2 with build-id 7f92dc764545b3d8e058f547553713232168c9db
                Module libprotobuf.so.32 with build-id 86a9fa3c8369df69f01ddb2fb38c14307b91773d
                Module libthrift-0.16.0.so with build-id c3b31b7dd733754897f96dc1b0919b8ea6446c

Some google results assume that such an error may be caused by CPU unsupportance, but I dont know how to confirm that. Anyway, my lscpu:

Архитектура:             x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         48 bits physical, 48 bits virtual
  Порядок байт:          Little Endian
CPU(s):                  8
  On-line CPU(s) list:   0-7
ID прроизводителя:       AuthenticAMD
  Имя модели:            AMD FX(tm)-8350 Eight-Core Processor
    Семейство ЦПУ:       21
    Модель:              2
    Thread(s) per core:  2
    Ядер на сокет:       4
    Сокетов:             1
    Степпинг:            0
    Frequency boost:     enabled
    CPU(s) scaling MHz:  37%
    CPU max MHz:         4000,0000
    CPU min MHz:         1400,0000
    BogoMIPS:            8003.18
    Флаги:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx f
                         xsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good no
                         pl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4
                         _1 sse4_2 popcnt aes xsave avx f16c lahf_lm cmp_legacy svm extapic cr8_legacy abm sse
                         4a misalignsse 3dnowprefetch osvw ibs xop skinit wdt lwp fma4 tce nodeid_msr tbm topo
                         ext perfctr_core perfctr_nb cpb hw_pstate ssbd ibpb vmmcall bmi1 arat npt lbrv svm_lo
                         ck nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold
Virtualization features: 
  Виртуализация:         AMD-V
Caches (sum of all):     
  L1d:                   128 KiB (8 instances)
  L1i:                   256 KiB (4 instances)
  L2:                    8 MiB (4 instances)
  L3:                    8 MiB (1 instance)
NUMA:                    
  NUMA node(s):          1
  NUMA node0 CPU(s):     0-7
Vulnerabilities:         
  Itlb multihit:         Not affected
  L1tf:                  Not affected
  Mds:                   Not affected
  Meltdown:              Not affected
  Mmio stale data:       Not affected
  Retbleed:              Mitigation; untrained return thunk; SMT vulnerable
  Spec store bypass:     Mitigation; Speculative Store Bypass disabled via prctl and seccomp
  Spectre v1:            Mitigation; usercopy/swapgs barriers and __user pointer sanitization
  Spectre v2:            Mitigation; Retpolines, IBPB conditional, STIBP disabled, RSB filling
  Srbds:                 Not affected
  Tsx async abort:       Not affected

The problem is the arrow package. https://github.com/apache/arrow/issues/12681

The solution: is to rebuild the arrow package manually with flags -DARROW_SIMD_LEVEL=SSE4_2 or -DARROW_SIMD_LEVEL=NONE, depending on the instructions set supported by your CPU

Related