[R-SIG-Mac] Problem with gfortran 4.8.2

Simon Urbanek simon.urbanek at r-project.org
Tue May 27 04:29:22 CEST 2014


Berend,

yes, your CPU is too old and thus doesn't work with the binary due to lack of support for some newer instructions. I suspect gmp/mpfr may be using some simd instructions that your CPU doesn't support.

Cheers,
Simon


On May 24, 2014, at 3:23 AM, Berend Hasselman <bhh at xs4all.nl> wrote:

> 
> I am experiencing a problem with gfortran 4.8.2 obtained from r.research.att.com (http://r.research.att.com/libs/gfortran-4.8.2-darwin13.tar.bz2).
> 
> Compiling a simple program (in fixed format)
> 
>      program test2
>          double precision a
>          a = 12.438739
>          print *, a      
>     stop     
>     end
> 
> on a Mac Mini with the following hardware review
> 
>  Model Name:	Mac mini
>  Model Identifier:	Macmini4,1
>  Processor Name:	Intel Core 2 Duo
>  Processor Speed:	2.66 GHz
>  Number of Processors:	1
>  Total Number of Cores:	2
>  L2 Cache:	3 MB
>  Memory:	8 GB
>  Bus Speed:	1.07 GHz
>  Boot ROM Version:	MM41.0042.B03
>  SMC Version (system):	1.65f2
> 
> running with OS X Mavericks 10.9.3 (13D65) leads to a crash of f951.
> This is what appears in Terminal:
> 
> [.../test2]: gfortran test2.f
> f951: internal compiler error: Illegal instruction: 4
> 
> f951: internal compiler error: Abort trap: 6
> gfortran: internal compiler error: Abort trap: 6 (program f951)
> Abort trap: 6
> 
> Following a discussion in http://trac.macports.org/ticket/41364 I ran the debugger lldb.
> With this as result
> 
> [.../test2]: lldb -- /usr/local/libexec/gcc/x86_64-apple-darwin13.0.0/4.8.2/f951 test2.f
> Current executable set to '/usr/local/libexec/gcc/x86_64-apple-darwin13.0.0/4.8.2/f951' (x86_64).
> (lldb) run
> Process 1755 launched: '/usr/local/libexec/gcc/x86_64-apple-darwin13.0.0/4.8.2/f951' (x86_64)
> Process 1755 stopped
> * thread #1: tid = 0x6bb2, 0x0000000100914486 f951`__gmpn_popcount + 134, queue = 'com.apple.main-thread', stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
>    frame #0: 0x0000000100914486 f951`__gmpn_popcount + 134
> f951`__gmpn_popcount + 134:
> -> 0x100914486:  popcntq 0x38(%rdi,%rsi,8), %r9
>   0x10091448d:  addq   %r9, %rax
>   0x100914490:  addq   $0x8, %rsi
>   0x100914494:  js     0x100914440               ; __gmpn_popcount + 64
> (lldb) bt
> * thread #1: tid = 0x6bb2, 0x0000000100914486 f951`__gmpn_popcount + 134, queue = 'com.apple.main-thread', stop reason = EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
>  * frame #0: 0x0000000100914486 f951`__gmpn_popcount + 134
>    frame #1: 0x00000001008fac03 f951`parsed_string_to_mpfr + 2595
>    frame #2: 0x00000001008fa0ee f951`mpfr_strtofr + 1870
>    frame #3: 0x00000001008e3520 f951`mpfr_set_str + 32
>    frame #4: 0x00000001000043cc f951`gfc_convert_real(char const*, int, locus*) + 44
>    frame #5: 0x0000000100078fce f951`match_real_constant(gfc_expr**, int) + 798
>    frame #6: 0x000000010007a50c f951`gfc_match_literal_constant(gfc_expr**, int) + 1404
>    frame #7: 0x0000000100061097 f951`match_mult_operand(gfc_expr**) + 87
>    frame #8: 0x000000010006137d f951`match_add_operand(gfc_expr**) + 29
>    frame #9: 0x00000001000616c5 f951`match_level_2(gfc_expr**) + 261
>    frame #10: 0x0000000100061785 f951`match_level_3(gfc_expr**) + 21
>    frame #11: 0x00000001000618b6 f951`match_and_operand(gfc_expr**) + 54
>    frame #12: 0x0000000100061ab5 f951`match_or_operand(gfc_expr**) + 21
>    frame #13: 0x0000000100061bc5 f951`match_equiv_operand(gfc_expr**) + 21
>    frame #14: 0x0000000100061cd7 f951`match_level_5(gfc_expr**) + 23
>    frame #15: 0x0000000100060f47 f951`gfc_match_expr(gfc_expr**) + 23
>    frame #16: 0x000000010005a48a f951`gfc_match(char const*, ...) + 842
>    frame #17: 0x000000010005baec f951`gfc_match_assignment() + 124
>    frame #18: 0x000000010007102a f951`match_word(char const*, match (*)(), locus*) (.part.3) + 10
>    frame #19: 0x00000001000726d5 f951`decode_statement() + 229
>    frame #20: 0x0000000100073f6a f951`next_statement() + 810
>    frame #21: 0x0000000100074b2d f951`parse_spec(gfc_statement) + 1325
>    frame #22: 0x0000000100076fb9 f951`parse_progunit(gfc_statement) + 9
>    frame #23: 0x00000001000782e7 f951`gfc_parse_file() + 1127
>    frame #24: 0x00000001000b7f46 f951`gfc_be_parse_file() + 38
>    frame #25: 0x000000010063d774 f951`compile_file() + 52
>    frame #26: 0x000000010063f519 f951`toplev_main(int, char**) + 2825
> (lldb) 
> 
> 
> Compiling the exact same program on a Macbook Air 11-inch with an Intel Core i5 as processor  and the exact same OS X 10.9.3 does not give an internal compiler error at all. The program compiles and runs.
> 
> It seems the crash in connected to the Intel Core 2 Duo processor in this case.
> gfortran-4.2.3 obtained from CRAN compiles the program without any problems.
> 
> Since I maintain packages using Fortran I can’t switch to the Mavericks distribution of R and use gfortran 4.8.2.
> Using the Snow Leopard  version of R together with gfortran 4.2.3 from CRAN works perfectly.
> 
> Maybe someone can throw some light on this and hopefully the problem can be fixed.
> 
> Berend
> 
> _______________________________________________
> R-SIG-Mac mailing list
> R-SIG-Mac at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
> 



More information about the R-SIG-Mac mailing list