nginx -t > Illegal instruction

Maxim Dounin mdounin at mdounin.ru
Tue Oct 15 15:39:00 UTC 2013


Hello!

On Tue, Oct 15, 2013 at 06:14:21PM +0300, Sergey Talchuk wrote:

> Всем привет!
> 
> собрал nginx для своей системы без проблем (собирал на ней же). Только
> похоже при запуске nginx -t не может определить тип процессора. К
> сожалению, система находится на носителе доступном только для чтения.
> Поэтому отдебажить системные библиотеки не представляется возможным.
> Надеюсь на помощь.

[...]

> Program received signal SIGILL, Illegal instruction.
> 0x0805dca5 in ngx_cpuid (i=0, buf=0xbffff950) at src/core/ngx_cpuinfo.c:30
> 30      src/core/ngx_cpuinfo.c: No such file or directory.
>         in src/core/ngx_cpuinfo.c
> (gdb) bt
> #0  0x0805dca5 in ngx_cpuid (i=0, buf=0xbffff950) at
> src/core/ngx_cpuinfo.c:30
> #1  0x0805dbbb in ngx_cpuinfo () at src/core/ngx_cpuinfo.c:84
> #2  0x0806e4f7 in ngx_os_init (log=0x80c27a8) at
> src/os/unix/ngx_posix_init.c:60

[...]

> cat /proc/cpuinfo
> processor       : 0
> vendor_id       : CyrixInstead
> cpu family      : 4
> model           : 1
> model name      : Cx486SLC
> stepping        : unknown
> fdiv_bug        : no
> hlt_bug         : no
> f00f_bug        : no
> coma_bug        : no
> fpu             : no
> fpu_exception   : no
> cpuid level     : -1
> wp              : yes
> flags           :
> bogomips        : 44.33

Ваш процессор настолько старый, что не поддерживает инструкцию 
cpuid.  Quick and dirty workaround - добавить return в самом 
начале функции ngx_cpuinfo() в src/core/ngx_cpuinfo.c:

diff --git a/src/core/ngx_cpuinfo.c b/src/core/ngx_cpuinfo.c
--- a/src/core/ngx_cpuinfo.c
+++ b/src/core/ngx_cpuinfo.c
@@ -75,6 +75,8 @@ ngx_cpuinfo(void)
     u_char    *vendor;
     uint32_t   vbuf[5], cpu[4], model;
 
+    return;
+
     vbuf[0] = 0;
     vbuf[1] = 0;
     vbuf[2] = 0;


-- 
Maxim Dounin
http://nginx.org/en/donation.html



Подробная информация о списке рассылки nginx-ru