"Illegal instruction" error

Hello,

I have installed Asterisk certified version (1.8.15) on VM Proxmox (with OS CentOS 6.3) , the problem my asterisk can’t launch the following error is displayed: “instruction not allowed

How can I resolve this problem?

[code]$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 2
model name : QEMU Virtual CPU version 1.2.0
stepping : 3
cpu MHz : 2992.654
cache size : 4096 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 4
wp : yes
flags : fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 ht syscall nx lm unfair_spinlock pni cx16 hypervisor lahf_lm
bogomips : 5985.30
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 2
model name : QEMU Virtual CPU version 1.2.0
stepping : 3
cpu MHz : 2992.654
cache size : 4096 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 1
initial apicid : 1
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 4
wp : yes
flags : fpu de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 ht syscall nx lm unfair_spinlock pni cx16 hypervisor lahf_lm
bogomips : 5985.30
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:[/code]

$ strace /usr/sbin/asterisk -cvvv execve("/usr/sbin/asterisk", ["/usr/sbin/asterisk", "-cvvv"], [/* 21 vars */]) = 0 brk(0) = 0x91ea000 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7774000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=21259, ...}) = 0 mmap2(NULL, 21259, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb776e000 close(3) = 0 open("/usr/lib/libssl.so.10", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\321\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=363200, ...}) = 0 mmap2(NULL, 362016, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xdee000 mmap2(0xe42000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x54) = 0xe42000 close(3) = 0 open("/usr/lib/libcrypto.so.10", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\177\3\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1608420, ...}) = 0 mmap2(NULL, 1624792, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x67c000 mprotect(0x7f1000, 4096, PROT_NONE) = 0 mmap2(0x7f2000, 81920, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x175) = 0x7f2000 mmap2(0x806000, 10968, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x806000 close(3) = 0 open("/lib/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@n\1\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1902708, ...}) = 0 mmap2(NULL, 1665416, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x1e7000 mprotect(0x377000, 4096, PROT_NONE) = 0 mmap2(0x378000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x190) = 0x378000 mmap2(0x37b000, 10632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x37b000 close(3) = 0 open("/usr/lib/libxml2.so.2", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 \274\1\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=1349132, ...}) = 0 mmap2(NULL, 1355700, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x37e000 mmap2(0x4c3000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x144) = 0x4c3000 close(3) = 0 open("/lib/libz.so.1", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\27\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=75384, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb776d000 mmap2(NULL, 78096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x4c9000 mmap2(0x4db000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x11) = 0x4db000 close(3) = 0 open("/lib/libm.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\3\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p4\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=200024, ...}) = 0 mmap2(NULL, 168064, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x4ea000 mmap2(0x512000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x27) = 0x512000 close(3) = 0 open("/lib/libdl.so.2", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`\n\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=17892, ...}) = 0 mmap2(NULL, 16500, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x4dd000 mmap2(0x4e0000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2) = 0x4e0000 close(3) = 0 open("/lib/libpthread.so.0", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260L\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=131080, ...}) = 0 mmap2(NULL, 106976, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb96000 mmap2(0xbad000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16) = 0xbad000 mmap2(0xbaf000, 4576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xbaf000 close(3) = 0 open("/lib/libtinfo.so.5", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260Z\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=98120, ...}) = 0 mmap2(NULL, 101528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xe85000 mmap2(0xe9b000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15) = 0xe9b000 close(3) = 0 open("/lib/libresolv.so.2", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240&\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=103384, ...}) = 0 mmap2(NULL, 104520, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xf22000 mprotect(0xf37000, 4096, PROT_NONE) = 0 mmap2(0xf38000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15) = 0xf38000 mmap2(0xf3a000, 6216, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xf3a000 close(3) = 0 open("/lib/libgssapi_krb5.so.2", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360m\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=262124, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb776c000 mmap2(NULL, 261128, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x514000 mmap2(0x552000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3e) = 0x552000 close(3) = 0 open("/lib/libkrb5.so.3", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\t\1\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=901552, ...}) = 0 mmap2(NULL, 904716, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x554000 mmap2(0x62a000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd5) = 0x62a000 close(3) = 0 open("/lib/libcom_err.so.2", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P\16\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=13836, ...}) = 0 mmap2(NULL, 16596, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x4e2000 mmap2(0x4e5000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2) = 0x4e5000 close(3) = 0 open("/lib/libk5crypto.so.3", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340*\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=169712, ...}) = 0 mmap2(NULL, 172056, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x631000 mmap2(0x659000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x28) = 0x659000 mmap2(0x65b000, 24, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x65b000 close(3) = 0 open("/lib/libkrb5support.so.0", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\36\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=42716, ...}) = 0 mmap2(NULL, 45592, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x66e000 mmap2(0x678000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9) = 0x678000 close(3) = 0 open("/lib/libkeyutils.so.1", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p\t\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=9536, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb776b000 mmap2(NULL, 12332, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x65c000 mmap2(0x65e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0x65e000 close(3) = 0 open("/lib/libselinux.so.1", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220C\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=120780, ...}) = 0 mmap2(NULL, 125956, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x809000 mmap2(0x826000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1c) = 0x826000 close(3) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb776a000 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7769000 set_thread_area({entry_number:-1 -> 6, base_addr:0xb7769730, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 mprotect(0x826000, 4096, PROT_READ) = 0 mprotect(0x65e000, 4096, PROT_READ) = 0 mprotect(0x678000, 4096, PROT_READ) = 0 mprotect(0x659000, 4096, PROT_READ) = 0 mprotect(0x4e5000, 4096, PROT_READ) = 0 mprotect(0x62a000, 24576, PROT_READ) = 0 mprotect(0x552000, 4096, PROT_READ) = 0 mprotect(0xf38000, 4096, PROT_READ) = 0 mprotect(0xbad000, 4096, PROT_READ) = 0 mprotect(0x4e0000, 4096, PROT_READ) = 0 mprotect(0x512000, 4096, PROT_READ) = 0 mprotect(0x4db000, 4096, PROT_READ) = 0 mprotect(0x378000, 8192, PROT_READ) = 0 mprotect(0x7f2000, 57344, PROT_READ) = 0 mprotect(0xe42000, 8192, PROT_READ) = 0 mprotect(0xb43000, 4096, PROT_READ) = 0 munmap(0xb776e000, 21259) = 0 set_tid_address(0xb7769798) = 17766 set_robust_list(0xb77697a0, 0xc) = 0 futex(0xbfe34200, FUTEX_WAKE_PRIVATE, 1) = 0 futex(0xbfe34200, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, bfe34210) = -1 EAGAIN (Resource temporarily unavailable) rt_sigaction(SIGRTMIN, {0xb9a6e0, [], SA_SIGINFO}, NULL, 8) = 0 rt_sigaction(SIGRT_1, {0xb9ab80, [], SA_RESTART|SA_SIGINFO}, NULL, 8) = 0 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 getrlimit(RLIMIT_STACK, {rlim_cur=10240*1024, rlim_max=RLIM_INFINITY}) = 0 uname({sys="Linux", node="voip.sifast.com", ...}) = 0 statfs64("/selinux", 84, {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=25071988, f_bfree=24250854, f_bavail=22977254, f_files=6373376, f_ffree=6329710, f_fsid={1208561605, 1796098077}, f_namelen=255, f_frsize=4096}) = 0 brk(0) = 0x91ea000 brk(0x920b000) = 0x920b000 open("/proc/filesystems", O_RDONLY|O_LARGEFILE) = 3 fstat64(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7773000 read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tb"..., 1024) = 304 read(3, "", 1024) = 0 close(3) = 0 munmap(0xb7773000, 4096) = 0 geteuid32() = 0 uname({sys="Linux", node="voip.example.com", ...}) = 0 gettimeofday({1370100060, 19454}, NULL) = 0 gettimeofday({1370100060, 19621}, NULL) = 0 open("/dev/urandom", O_RDONLY|O_LARGEFILE) = 3 futex(0x82057f0, FUTEX_WAKE_PRIVATE, 2147483647) = 0 gettimeofday({1370100060, 20481}, NULL) = 0 futex(0x8205900, FUTEX_WAKE_PRIVATE, 2147483647) = 0 access("/etc/localtime", R_OK) = 0 open("/etc/localtime", O_RDONLY|O_LARGEFILE) = 4 mmap2(NULL, 245760, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0xb772d000 mprotect(0xb772d000, 4096, PROT_NONE) = 0 clone(child_stack=0xb7768424, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0xb7768bd8, {entry_number:6, base_addr:0xb7768b70, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}, child_tidptr=0xb7768bd8) = 17767 futex(0x821a2e4, FUTEX_WAIT_PRIVATE, 1, NULL) = 0 futex(0x821a320, FUTEX_WAKE_PRIVATE, 1) = 0 readlink("/etc/localtime", 0xbfe2e938, 4096) = -1 EINVAL (Invalid argument) inotify_add_watch(5, "/etc/localtime", IN_MODIFY|IN_ATTRIB|IN_CLOSE_WRITE|IN_DELETE_SELF|IN_MOVE_SELF|IN_DONT_FOLLOW) = 1 read(4, "TZif2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\5\0\0\0\5\0\0\0\0"..., 29536) = 684 close(4) = 0 --- SIGILL (Illegal instruction) @ 0 (0) --- +++ killed by SIGILL +++ Illegal instruction

Did you install from source or did you install a package you found?

I installed from source code

./configure make menuconfig make && make install && make samples && make config

Well that’s a weird one :smiley:

Looks like you’ve got a thread going already here:
stackoverflow.com/questions/1678 … ot-allowed

with responses. I’ll leave this one alone then.

But I didn’t have a clear response until now.

I have updated my first post with my cpuinfo and the result of strace /usr/sbin/asterisk -cvvv

Illegal instruction is a machine instruction problem not a system call one. gdb should tell you the actual failing instruction (or its address/binary forumat), and will also give a backtrace that will help localise the code that is failing.

An old thread, but I got the same error when installing Asterisk 11.5.1 on a KVM virtualized CentOS 6.4 guest. I tried changing CPU type in KVM from default to Westmere (what I have on the guest), but nothing helped. When I ran “asterisk -c” I got “Illegal instruction”. I found the solution on this page.

The solution is:

Enter in "make menuselect" -> "Compiler flags" and disable "BUILD_NATIVE" option
Then recompile Asterisk

Looks like Asterisk has some issues with compiling on virtualized host. I hope this problem gets adressed over time.

Does anyone know what does “BUILD_NATIVE” option do?

2 Likes

It causes this option “-march=native”, to be pased to the compiler. It causes gcc to generate code using the full capabilities of the machine on which it is being run. I imagine that the VM environment is misrepresenting the machine capabilities, although it is just possible that gcc is misinterpreting what it is being told.

1 Like

Great David, thank you very much for your explanation.

This looks to bi a known issue with Asterisk and VM’s. But it’s an eazy workarround, so I hope it will not cause too much trouble.