[R-SIG-Mac] [External] Rmpfr crashes on Mac

Adrian Dușa du@@@@dr|@n @end|ng |rom un|buc@ro
Mon Nov 29 09:38:45 CET 2021


This works normally on my rather new-ish Mac (2020), Monterey 12.0.1, using:

> R.version
               _
platform       x86_64-apple-darwin17.0
arch           x86_64
os             darwin17.0
system         x86_64, darwin17.0
status
major          4
minor          1.1
year           2021
month          08
day            10
svn rev        80725
language       R
version.string R version 4.1.1 (2021-08-10)
nickname       Kick Things


> sessionInfo()
R version 4.1.1 (2021-08-10)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Monterey 12.0.1

Matrix products: default
BLAS:
/Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRblas.0.dylib
LAPACK:
/Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

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

other attached packages:
[1] Rmpfr_0.8-7 gmp_0.6-2.1 mylocal_1.0

loaded via a namespace (and not attached):
[1] compiler_4.1.1 tools_4.1.1    DBI_1.1.1      RMySQL_0.10.21 askpass_1.1


On Mon, 29 Nov 2021 at 07:43, Kevin Ushey <kevinushey using gmail.com> wrote:

> Okay, I've reproduced the crash on my 2013 Intel MacBook Pro. In this case,
> the issue reproduces more readily because RStudio is calling str() behind
> the scenes (which is the cause of the crash in this case). So, a plain R
> reproducible example:
>
> library(Rmpfr)
> x <- mpfr(-50.1, 200)
> str(x)
>
> and I see:
>
> > str(x)
> Class 'mpfr' [package "Rmpfr"] of length 1 and precision 200
>
>  *** caught illegal operation ***
> address 0x112833ed5, cause 'illegal opcode'
>
> Traceback:
>  1: .mpfr2str(x, digits, maybe.full = maybe.full, base = base)
>  2: formatMpfr(object, digits = digits.d, drop0trailing = drop0trailing,
>   ...)
>  3: str.mpfr(x)
>  4: str(x)
>
> From lldb:
>
> * thread #1, queue = 'com.apple.main-thread', stop reason =
> EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
>     frame #0: 0x0000000107ec7ed5 Rmpfr.so`mpfr_get_str_aux + 165
> Rmpfr.so`mpfr_get_str_aux:
> ->  0x107ec7ed5 <+165>: adcxq  %rsi, %rcx
>     0x107ec7edb <+171>: movq   %r10, %rdi
>     0x107ec7ede <+174>: movq   %r8, %rsi
>     0x107ec7ee1 <+177>: movq   %r10, %rbx
>
> and relevant part of the backtrace:
>
> (lldb) bt
> * thread #1, queue = 'com.apple.main-thread', stop reason =
> EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
>   * frame #0: 0x0000000107ec7ed5 Rmpfr.so`mpfr_get_str_aux + 165
>     frame #1: 0x0000000107ec78da Rmpfr.so`mpfr_get_str + 2890
>     frame #2: 0x0000000107eb9c9e Rmpfr.so`mpfr2str(x=0x00000001053ed768,
> digits=<unavailable>, maybeFull=<unavailable>, base=<unavailable>) at
> convert.c:608:2 [opt]
>     < ... >
>
> If I understand correctly, 'adcx' was introduced with Broadwell CPUs (so,
> October 2014) and so that could explain why I'm seeing this crash. It'd be
> helpful if others could try to verify with newer / older macOS machines,
> though.
>
> > sessionInfo()
> R version 4.1.2 (2021-11-01)
> Platform: x86_64-apple-darwin17.0 (64-bit)
> Running under: macOS Big Sur 10.16
>
> Best,
> Kevin
>
> On Sun, Nov 28, 2021 at 6:22 PM Simon Urbanek <simon.urbanek using r-project.org
> >
> wrote:
>
> > Kevin,
> >
> > that is a different story, yes, Rosetta2 is incomplete - the advice on M1
> > is to use native R.
> >
> > Cheers,
> > Simon
> >
> >
> > > On Nov 29, 2021, at 12:30 PM, Kevin Ushey <kevinushey using gmail.com>
> wrote:
> > >
> > > I can reproduce something similar on my M1 macOS machine, when using
> the
> > > x86_64 build of R. I see:
> > >
> > >> x1 <- mpfr(-50, 200)
> > > *** caught illegal operation ***
> > > address 0x10c5f623b, cause 'illegal opcode'
> > >
> > > This is with the binary of Rmpfr 0.8-7 as from CRAN, with R 4.1.2.
> Here's
> > > what LLDB says:
> > >
> > > * thread #1, queue = 'com.apple.main-thread', stop reason =
> > > EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
> > >    frame #0: 0x000000010f69c23b Rmpfr.so`mpfr_set_d + 43
> > > Rmpfr.so`mpfr_set_d:
> > > ->  0x10f69c23b <+43>: vucomisd %xmm0, %xmm0
> > >    0x10f69c23f <+47>: jp     0x10f69c39a               ; <+394>
> > >    0x10f69c245 <+53>: vpxor  %xmm1, %xmm1, %xmm1
> > >    0x10f69c249 <+57>: vucomisd %xmm1, %xmm0
> > >
> > > And the relevant part of the stack trace:
> > >
> > > (lldb) bt
> > > * thread #1, queue = 'com.apple.main-thread', stop reason =
> > > EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
> > >  * frame #0: 0x000000010f69c23b Rmpfr.so`mpfr_set_d + 43
> > >    frame #1: 0x000000010f6809d3 Rmpfr.so`d2mpfr1_(x=-50,
> > > i_prec=<unavailable>, rnd=MPFR_RNDN) at convert.c:129:5 [opt]
> > >    frame #2: 0x000000010f680eb0 Rmpfr.so`d2mpfr1_list(x=<unavailable>,
> > > prec=<unavailable>, rnd_mode=<unavailable>) at convert.c:186:29 [opt]
> > >
> > > At least for my case, my guess is that the 'vucomisd' instruction isn't
> > > available via Apple's Rosetta emulation. It's possible users with older
> > > macOS machines not supporting AVX instructions could see this, as well?
> > >
> > > Best,
> > > Kevin
> > >
> > > On Sun, Nov 28, 2021 at 9:54 AM Richard M. Heiberger <rmh using temple.edu>
> > wrote:
> > >
> > >> Works normally in R-4.1.2 with Rmpfr_0.8-7 on Macintosh
> > >> aarch64-apple-darwin20
> > >> I am running inside Emacs using ESS
> > >>
> > >>> packageVersion("Rmpfr")
> > >> [1] ‘0.8.7’
> > >>> library(Rmpfr)
> > >> Loading required package: gmp
> > >>
> > >> Attaching package: ‘gmp’
> > >>
> > >> The following objects are masked from ‘package:base’:
> > >>
> > >>    %*%, apply, crossprod, matrix, tcrossprod
> > >>
> > >> C code of R package 'Rmpfr': GMP using 64 bits per limb
> > >>
> > >>
> > >> Attaching package: ‘Rmpfr’
> > >>
> > >> The following object is masked from ‘package:gmp’:
> > >>
> > >>    outer
> > >>
> > >> The following objects are masked from ‘package:stats’:
> > >>
> > >>    dbinom, dgamma, dnbinom, dnorm, dpois, dt, pnorm
> > >>
> > >> The following objects are masked from ‘package:base’:
> > >>
> > >>    cbind, pmax, pmin, rbind
> > >>
> > >>> x1 <- mpfr(-50, 200)
> > >>> x1
> > >> 1 'mpfr' number of precision  200   bits
> > >> [1] -50
> > >>> x2 <- mpfr(-50.1, 200)
> > >>> x2
> > >> 1 'mpfr' number of precision  200   bits
> > >> [1] -50.10000000000000142108547152020037174224853515625
> > >>> version
> > >>               _
> > >> platform       aarch64-apple-darwin20
> > >> arch           aarch64
> > >> os             darwin20
> > >> system         aarch64, darwin20
> > >> status
> > >> major          4
> > >> minor          1.2
> > >> year           2021
> > >> month          11
> > >> day            01
> > >> svn rev        81115
> > >> language       R
> > >> version.string R version 4.1.2 (2021-11-01)
> > >> nickname       Bird Hippie
> > >>>
> > >>
> > >>> On Nov 27, 2021, at 15:46, Dev Chakraborty <dpc10ster using gmail.com>
> > wrote:
> > >>>
> > >>> I used package Rmpfr ca. 2017 and it worked fine. The latest version
> > >>> (0.8-7) causes R (running under RStudio) to crash. A simple example
> is:
> > >>>
> > >>> library(Rmpfr)
> > >>> x1 <- mpfr(-50, 200)
> > >>> x2 <- mpfr(-50.1, 200)
> > >>>
> > >>> Which gives the message:
> > >>>
> > >>> R Session Aborted
> > >>> R encountered a fatal error
> > >>> The session was terminated
> > >>> Start New Session
> > >>>
> > >>> I am using R version 4.1.1 on a Mac running MacOS 12.0.1. and an
> older
> > >> iMac
> > >>> running 10.15.7. The problem occurs with both machines.
> > >>>
> > >>> When I install from the CRAN archive file  Rmpfr_0.6-1.tar.gz (the
> > >> version
> > >>> of the package around 2017, corresponding to the last time I used it)
> > the
> > >>> problem goes away.
> > >>>
> > >>>      [[alternative HTML version deleted]]
> > >>>
> > >>> _______________________________________________
> > >>> R-SIG-Mac mailing list
> > >>> R-SIG-Mac using r-project.org
> > >>>
> > >>
> >
> https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstat.ethz.ch%2Fmailman%2Flistinfo%2Fr-sig-mac&data=04%7C01%7Crmh%40temple.edu%7C3aabc743f322409d6fa308d9b259a7bb%7C716e81efb52244738e3110bd02ccf6e5%7C0%7C0%7C637736920545174898%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=pNPM8x8q1%2BQxq4QevSbfjlcO44vDVEyUvsRlfDBfgBo%3D&reserved=0
> > >>
> > >> _______________________________________________
> > >> R-SIG-Mac mailing list
> > >> R-SIG-Mac using r-project.org
> > >> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
> > >>
> > >
> > >       [[alternative HTML version deleted]]
> > >
> > > _______________________________________________
> > > R-SIG-Mac mailing list
> > > R-SIG-Mac using r-project.org
> > > https://stat.ethz.ch/mailman/listinfo/r-sig-mac
> > >
> >
> >
>
>         [[alternative HTML version deleted]]
>
> _______________________________________________
> R-SIG-Mac mailing list
> R-SIG-Mac using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>


-- 
Adrian Dusa
University of Bucharest
Romanian Social Data Archive
Soseaua Panduri nr. 90-92
050663 Bucharest sector 5
Romania
https://adriandusa.eu

	[[alternative HTML version deleted]]



More information about the R-SIG-Mac mailing list