This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

ArmIE emulator 21.0 Segfault enabling SVE

Hi,

I am trying to run the ArmIE emulator. I compiled the source file with ARM C Compiler for SVE by using:

armclang -O3 -march=armv8-a+sve -o hello hello.c
armie -msve-vector-bits=512 ./hello

But get an error message:

armie's SVESigHandler caught signal SIGSEGV from the process being emulated, passing it to the default signal handler. Guest process terminated by signal: 9513 Segmentation fault ./hello

What am I doing wrong?

// hello.c
#include <stdio.h>
int main() {
   printf("Hello, World!");
   return 0;
}
Parents
  • Hi,


    This may not be related to ArmIE or SVE: the ./hello program segfaults in the first place. Have you tried to compile and run without it to check if it crashes too?

    armclang -O3 -march=armv8-a -o hello hello.c
    ./hello

    If it does and if you fix the segfault in the application, you should be able to recompile for SVE and use ArmIE without any problem.

    Florent

Reply
  • Hi,


    This may not be related to ArmIE or SVE: the ./hello program segfaults in the first place. Have you tried to compile and run without it to check if it crashes too?

    armclang -O3 -march=armv8-a -o hello hello.c
    ./hello

    If it does and if you fix the segfault in the application, you should be able to recompile for SVE and use ArmIE without any problem.

    Florent

Children
  • The following works fine:

    armclang -O3 -march=armv8-a -o hello hello.c
    ./hello

    When I run it with ArmIE, the same problem occurs.

  • It may be that the segfault only occurs when your application runs with ArmIE. I suggest checking for memory defects with ASAN. You can enable it with the -fsanitize=address option when compiling and a report will be displayed at runtime. You may need asan_symbolize.py to get application symbols, e.g.

    $ armclang -O3 -march=armv8-a -fsanitize=address -o hello hello.c
    $ armie -msve-vector-bits=512 ./hello  2> log
    $ python asan_symbolize.py / < log | c++filt
    AddressSanitizer:DEADLYSIGNAL
    =================================================================
    ==1829733==ERROR: AddressSanitizer: SEGV on unknown address 0x00000028ff44 (pc 0x0000004e8c50 bp 0xffffd551b3c0 sp 0xffffd551b3c0 T0)
    ==1829733==The signal is caused by a UNKNOWN memory access.
    #0 0x4e8c50 in main hello.c:8
    [...]
  • I made these changes but got the exact same error message:

    armie's SVESigHandler caught signal SIGSEGV from the process being emulated, passing it to the default signal handler. Guest process terminated by signal:3954 Segmentation fault ./hello