Bug 39996 - Illegal instruction on ARM
Summary: Illegal instruction on ARM
Alias: None
Product: Runtime
Classification: Mono
Component: JIT ()
Version: 4.0.0
Hardware: Other Linux
: --- normal
Target Milestone: ---
Assignee: Bugzilla
Depends on:
Reported: 2016-03-30 16:14 UTC by Jordan
Modified: 2016-04-11 20:57 UTC (History)
3 users (show)

Is this bug a regression?: ---
Last known good build:

Core dump for mono with SGen (118.36 KB, application/x-xz)
2016-03-30 16:36 UTC, Jordan
Core dump for mono with Boehm (37.05 KB, application/x-xz)
2016-03-30 16:37 UTC, Jordan

Notice (2018-05-24): bugzilla.xamarin.com is now in read-only mode.

Please join us on Visual Studio Developer Community and in the Xamarin and Mono organizations on GitHub to continue tracking issues. Bugzilla will remain available for reference in read-only mode. We will continue to work on open Bugzilla bugs, copy them to the new locations as needed for follow-up, and add the new items under Related Links.

Our sincere thanks to everyone who has contributed on this bug tracker over the years. Thanks also for your understanding as we make these adjustments and improvements for the future.

Please create a new report on GitHub or Developer Community with your current version information, steps to reproduce, and relevant error messages or log files if you are hitting an issue that looks similar to this resolved bug and you do not yet see a matching new report.

Related Links:

Description Jordan 2016-03-30 16:14:30 UTC
Attempting to run the `mono` compiler on ARM results in an illegal instruction.

Using this code:

    namespace IllegalInstructionTest
        public static class Program
            public static void Main()

With this output from `mono --version`:

    Mono JIT compiler version 4.4.0 (Stable Mon Mar 28 08:07:54 MDT 2016)
    Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
            TLS:           __thread
            SIGSEGV:       normal
            Notifications: epoll
            Architecture:  armel,vfp+hard
            Disabled:      none
            Misc:          softdebug
            LLVM:          supported, not enabled.
            GC:            sgen

This also occurs when selecting the Boehm GC:

    Native stacktrace:

    Debug info from gdb:

    [Thread debugging using libthread_db enabled]
    Using host libthread_db library "/usr/lib/libthread_db.so.1".
    0xb6e0a7cc in waitpid () from /usr/lib/libpthread.so.0
      Id   Target Id         Frame
    * 1    Thread 0xb6f19000 (LWP 6102) "mono-boehm" 0xb6e0a7cc in waitpid () from /usr/lib/libpthread.so.0

    Thread 1 (Thread 0xb6f19000 (LWP 6102)):
    #0  0xb6e0a7cc in waitpid () from /usr/lib/libpthread.so.0
    #1  0x000bc0e0 in ?? ()
    Backtrace stopped: previous frame identical to this frame (corrupt stack?)

    Got a SIGSEGV while executing native code. This usually indicates
    a fatal error in the mono runtime or one of the native libraries
    used by your application.
Comment 1 Jordan 2016-03-30 16:36:41 UTC
Created attachment 15556 [details]
Core dump for mono with SGen
Comment 2 Jordan 2016-03-30 16:37:03 UTC
Created attachment 15557 [details]
Core dump for mono with Boehm
Comment 3 Zoltan Varga 2016-04-01 05:46:41 UTC
This might be caused by using the wrong floating point abi, try compiling with
make ARM_FPU_VFP=1
Comment 4 Jordan 2016-04-11 20:57:51 UTC
Thanks Zoltan! Looks like this is a packaging issue.