Illegal instruction, VIA_Nehemiah

Maciej Świniarski maciej w task.gda.pl
Pon, 5 Lut 2007, 09:12:10 CET


Witam,
kilka dni temu zainstalowałem świeże TH na nie standardowej maszynce,
niestety nie wszystko jest ok i nie bardzo mam pomysła za co się łapać,
może ktoś ma jakąś sugestię?

Zaraz po instalacja wylukałem ze `less` oraz `host host.pl` wywalają
się wypisując
"Illegal instruction"
kilka dni później zrobiłem update gdzie był nowy less i nowe bind-utils
no i zaczelo działać :) ..jednak nie wszystko do dziś nie działa mi
perl oraz apache. Oto co zdołalem z nich wydusić.

Wydaje mi się interesujące ze strace zazwyczaj kończy się na uname()
..dodaj ze ze starszymi jajkami dzieje się to samo


# gdb /usr/bin/perl
GNU gdb 6.6
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you
are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for
details.
This GDB was configured as "i686-pld-linux"...
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) run
Starting program: /usr/bin/perl
Failed to read a valid object file image from memory.

Program received signal SIGILL, Illegal instruction.
0xb7f3784a in Perl_cast_iv () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
(gdb) bt
#0  0xb7f3784a in Perl_cast_iv () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#1  0xb7ed3a4a in Perl_sv_2iv () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#2  0xb7e5e17b in perl_construct () from
/usr/lib/perl5/5.8.8/i686-pld-linux-thread-multi/CORE/libperl.so.5.8.0
#3  0x080492ae in main (argc=1, argv=0xbffb6f94, env=0xb7f7af30) at
perlmain.c:93





# strace -f perl
[..]
open("/dev/urandom", O_RDONLY)          = 3
read(3, "\255\212zc", 4)                = 4
close(3)                                = 0
mprotect(0xb7deb000, 4096, PROT_READ)   = 0
munmap(0xb7e0c000, 46794)               = 0
set_tid_address(0xb7c6e708)             = 7187
set_robust_list(0xb7c6e710, 0xc)        = 0
rt_sigaction(SIGRTMIN, {0xb7df543d, [], SA_SIGINFO}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0xb7df5370, [], SA_RESTART|SA_SIGINFO}, NULL, 8)
= 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) =
0
uname({sys="Linux", node="epia", ...})  = 0
rt_sigaction(SIGFPE, {SIG_IGN}, {SIG_DFL}, 8) = 0
brk(0)                                  = 0x804c000
brk(0x806d000)                          = 0x806d000
--- SIGILL (Illegal instruction) @ 0 (0) ---
+++ killed by SIGILL +++
Process 7187 detached

# rpm -qa |egrep "glibc-2|perl-base|binutils-2"
binutils-2.17.50.0.12-1.i686
perl-base-5.8.8-10.i686
glibc-2.5-0.2.i686

# uname -a
Linux epia 2.6.19.2-0.1 #1 Fri Jan 26 22:13:48 CET 2007 i686
VIA_Nehemiah unknown PLD Linux



# strace -f /usr/sbin/httpd.prefork
[..]
rt_sigaction(SIGRTMIN, {0xb7f3d43d, [], SA_SIGINFO}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0xb7f3d370, [], SA_RESTART|SA_SIGINFO}, NULL, 8)
= 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) =
0
uname({sys="Linux", node="epia", ...})  = 0
brk(0)                                  = 0x8096000
brk(0x80b7000)                          = 0x80b7000
--- SIGILL (Illegal instruction) @ 0 (0) ---
+++ killed by SIGILL +++
Process 9296 detached


# uname -a
Linux epia 2.6.19.2-0.1 #1 Fri Jan 26 22:13:48 CET 2007 i686
VIA_Nehemiah unknown PLD Linux


# gdb /usr/sbin/httpd.prefork
(gdb) run
Starting program: /usr/sbin/httpd.prefork
Failed to read a valid object file image from memory.

Program received signal SIGILL, Illegal instruction.
0x0807d61c in trie_node_link (p=<value optimized out>, parent=0x809dab0,
     child=0x809dd58, c=114)
     at /usr/src/debug/httpd-2.2.3/server/util_filter.c:85
85              if (c == parent->children[i].c) {
(gdb) bt
#0  0x0807d61c in trie_node_link (p=<value optimized out>,
parent=0x809dab0,
     child=0x809dd58, c=114)
     at /usr/src/debug/httpd-2.2.3/server/util_filter.c:85
#1  0x0807d72d in trie_node_alloc (p=0x809c0a8, parent=0x809dab0,
     c=<value optimized out>)
     at /usr/src/debug/httpd-2.2.3/server/util_filter.c:122
#2  0x0807d7f5 in register_filter (name=0x809dab0 "", filter_func=
       {out_func = 0x807221f <ap_core_output_filter>, in_func =
0x807221f <ap_core_output_filter>}, filter_init=0,
ftype=AP_FTYPE_NETWORK, reg_filter_set=0x8093af4)
     at /usr/src/debug/httpd-2.2.3/server/util_filter.c:217
#3  0x0807d8e1 in ap_register_output_filter_protocol (name=0x8088c9f
"CORE",
     filter_func=0x807221f <ap_core_output_filter>, filter_init=0,
     ftype=AP_FTYPE_NETWORK, proto_flags=0)
     at /usr/src/debug/httpd-2.2.3/server/util_filter.c:270
#4  0x0807d917 in ap_register_output_filter (name=0x8088c9f "CORE",
     filter_func=0x807221f <ap_core_output_filter>, filter_init=0,
     ftype=AP_FTYPE_NETWORK)
     at /usr/src/debug/httpd-2.2.3/server/util_filter.c:257
#5  0x0806c932 in register_hooks (p=0x809c0a8)
     at /usr/src/debug/httpd-2.2.3/server/core.c:3998
#6  0x0807649c in ap_add_module (m=0x8092bc0, p=0x809c0a8)
     at /usr/src/debug/httpd-2.2.3/server/config.c:534
---Type <return> to continue, or q <return> to quit---
#7  0x08076598 in ap_setup_prelinked_modules (process=0x809a120)
     at /usr/src/debug/httpd-2.2.3/server/config.c:679
#8  0x08061bd4 in main (argc=134848672, argv=0x8096090)
     at /usr/src/debug/httpd-2.2.3/server/main.c:464


# rpm -q apache-base
apache-base-2.2.3-4.i686


Więcej informacji o liście dyskusyjnej pld-users-pl