Bug 4942 - SIGILL for host, nslookup, named, and the like on i386 NOT i486
SIGILL for host, nslookup, named, and the like on i386 NOT i486
Status: CLOSED DEFERRED
Product: Red Hat Linux
Classification: Retired
Component: bind (Show other bugs)
6.0
i386 Linux
medium Severity medium
: ---
: ---
Assigned To: David Lawrence
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 1999-09-06 17:00 EDT by Marco Colombo
Modified: 2008-05-01 11:37 EDT (History)
0 users

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 1999-09-07 08:58:49 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Marco Colombo 1999-09-06 17:00:18 EDT
I'll provide more detailed info, if necessary, but the
following shuold be enough to reproduce the bug...
I've installed RHL6.0 on a 486 and then moved the disk
(old ~500Mb IDE) to a 386 system (32Mb of RAM). Everything
is ok, except DNS related stuff, named, host, nslookup...
Name resolution for commands like telnet and ping works.
But host terminates with SIGILL even before showing its
usage. A strace shows that it fails before opening and
reading /etc/resolv.conf. Removing it cures the SIGILL
problem, but of course after that, name resolution is gone.
The same is true for nslookup. On a 486 or Pentium (K5)
everything works just fine. I've tried also to reinstall
from scratch (on the 486, as before), and the new system
shows exactly the same bug when moved to the 386. The 386
system is one of our nameserves which is had been
running 5.2 (and 5.1 before that) without problems (it is
running 5.2 right now, BTW). I moved the disk to another
386 (a completely different system), same results. It seems
the there's a piece of code that is not i386 friendly
sitting in glibc-2.1.1-6. I'll try and find if any other
executable is affected...
.TM.
Comment 1 Jeff Johnson 1999-09-07 08:58:59 EDT
bind (and ~8 other packages IIRC) were poisoned by a change in the
definitions generated when invoked with "-m486". The change, defining
__i486__, caused the inline assembly for ntohl/ntohs to use an i486
instruction that is illegal on i386 to be compiled in. The problem is
(or will be) fixed in the compiler. Meanwhile, recompile bind (and
other packages) from src.rpm's making sure that rpm optflags does not
set -m486.

Here's the list of affected packages:
	arpwatch-2.1a4-10
	bind-8.2-6
	bind-utils-8.2-6
	dip-3.3.7o-14
	dosemu-0.99.10-4
	ftp-0.10-22
	guavac-1.2-4
	ipchains-1.3.8-3
	knfsd-1.3.3-1
	knfsd-clients-1.3.3-1
	mars-nwe-0.99pl15-3
	routed-0.10-14
	rpm-3.0.1-12
	rpm2html-1.1-2
	strace-3.99-1
	tcpdump-3.4-10
	xboing-2.4-7
	ytalk-3.1-3


Here's the script (from Alan Cox) that was used to detect "poisoned"
i386 packages:

#!/bin/sh

for i in $*; do
        X=`file $i`
        echo -n $i
        case "$X" in
                *ELF*)
                        (objdump --disassemble $i  2>/dev/null)|grep
bswap >/tmp/x1
                        if [ -s /tmp/x1 ]; then
                                echo " contaminated"
                        else
                                echo " ok"
                        fi
                        ;;
                *)
                        echo " not ELF"
        esac
done

Note You need to log in before you can comment on or make changes to this bug.