Skip to content

Creating a random array results in a segfault in LLVM on A64FX with 512-bit vectors #44263

@giordano

Description

@giordano
$ JULIA_LLVM_ARGS="-aarch64-sve-vector-bits-min=512" gdb ./julia-7889b2a6a2/bin/julia 
GNU gdb (GDB) Red Hat Enterprise Linux 8.2-11.el8
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "aarch64-redhat-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./julia-7889b2a6a2/bin/julia...done.
(gdb) run
Starting program: /snx11273/home/ri-mgiordano/nightly/julia-7889b2a6a2/bin/julia 
Missing separate debuginfos, use: yum debuginfo-install glibc-2.28-101.el8.aarch64
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0xffffa7e3f1d0 (LWP 657038)]
[many more threads...]
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.8.0-DEV.1572 (2022-02-16)
 _/ |\__'_|_|_|\__'_|  |  Commit 7889b2a6a2 (2 days old master)
|__/                   |

julia> rand()
0.6032305895028276

julia> rand(1)

Thread 1 "julia" received signal SIGSEGV, Segmentation fault.
0x0000ffffac923fb8 in __memcpy_generic () from /lib64/libc.so.6
(gdb) where 
#0  0x0000ffffac923fb8 in __memcpy_generic () from /lib64/libc.so.6
#1  0x0000ffffa89aa260 in computeForAddCarry(llvm::KnownBits const&, llvm::KnownBits const&, bool, bool) () from /snx11273/home/ri-mgiordano/nightly/julia-7889b2a6a2/bin/../lib/julia/libLLVM-13jl.so
#2  0x00000000006e8090 in ?? ()
Backtrace stopped: not enough registers or memory available to unwind further

The segfaults seems to be in code generation, because also @code_llvm rand(1) crashes.

Note: this happens only in master, but not julia v1.7.2. Might be related to the upgrade of LLVM to v13.0.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    randomnessRandom number generation and the Random stdlibsystem:armARMv7 and AArch64

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions