ping


ping lauschb.hu
Segmentation fault


host lauschb.hu
Host lauschb.hu not found: 3(NXDOMAIN)


rpm -qf `which ping`
iputils-20161105-1.fc25.x86_64

Jeleztem a fejlesztőknek.

Hozzászólások


[hron@darkstar hron ] $ ping lauschb.hu                                                                                              (rvm:ruby-2.3.0)
Segmentation fault
[hron@darkstar hron ] $ host lauschb.hu                                                                                              (rvm:ruby-2.3.0)
Host lauschb.hu not found: 3(NXDOMAIN)
[hron@darkstar hron ] $ dpkg -S `which ping`                                                                                         (rvm:ruby-2.3.0)
iputils-ping: /bin/ping
[hron@darkstar hron ] $ apt-cache showpkg iputils-ping                                                                               (rvm:ruby-2.3.0)
Package: iputils-ping
Versions: 
3:20121221-5ubuntu2 (/var/lib/apt/lists/de.archive.ubuntu.com_ubuntu_dists_xenial_main_binary-amd64_Packages) (/var/lib/dpkg/status)

--
Blog | @hron84
Üzemeltető macik

Az a domain nem létezik, csak belecsaptam a billentyűzetbe. Persze, hogy nem működik, már a névfeloldás sem sikerülhet. A gond nem ez, hanem az, hogy segmentation fault-tal száll el, s a kernel beszántja, sóval hinti be hűlt helyét. Szóval nem visszatér normálisan, hanem megdöglik.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Nem voltam benne teljesen biztos, hogy áprilisi tréfa-e. Bocsi. :)

Ubuntu 16.04.2 alatt nálam jó egyébként:


ping lauschb.hu
ping: unknown host lauschb.hu

host lauschb.hu
Host lauschb.hu not found: 3(NXDOMAIN)

dpkg -S `which ping`
iputils-ping: /bin/ping

apt-cache showpkg iputils-ping
3:20121221-5ubuntu2 - ping (= )

"nem Fedora specifikus ez"

Hát akkor mi?


trey@alderaan:~$ uname -a
Linux alderaan 4.8.0-45-generic #48-Ubuntu SMP Fri Mar 24 11:46:39 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
trey@alderaan:~$ ping lauschb.hu
ping: lauschb.hu: Name or service not known
trey@alderaan:~$ 
trey@alderaan:~$ dpkg -l | grep iputils-ping
ii  iputils-ping                                         3:20150815-2ubuntu3                         amd64        Tools to test the reachability of network hosts

--
trey @ gépház

Nem sikerült reprodukálnom a problémát egy Debian8-on. Most ráküldök egy 'apt-get upgrade'-et, talán az segít.

Szerk: Sajnos nem segített, továbbra is jó:


$ ping lauschb.hu
ping: unknown host lauschb.hu
$ ping6 lauschb.hu
unknown host

Ha tippelnem kellene, azt mondanám, hogy a systemd még nem tudta egészen integrálni a ping-et.


ironcat@desktop: ~$ ping lauschb.hu
ping: lauschb.hu: Name or service not known
ironcat@desktop: ~$ apt-cache showpkg iputils-ping 
Package: iputils-ping
Versions: 
3:20150815-2ubuntu3 (/var/lib/apt/lists/hu.archive.ubuntu.com_ubuntu_dists_yakkety_main_binary-amd64_Packages) (/var/lib/dpkg/status)

Nem SELinux-al korlátoztál valamit a Fedorádon? strace vége mit mutat?

Furcsa, mert olyan, mintha az strace hatására megjavulna. Nyilván egy memóriaszemét pointer, egy máshova allokált kód vagy adat okozhat ilyet. 2-es hibakóddal tér vissza, ha strace-elem, 139-cel, ha segfault-ol. Viszont gondolom, ezt a 139-et a shell generálja, hiszen valójában nem tér az vissza már sehogy.

capget({version=_LINUX_CAPABILITY_VERSION_3, pid=0}, NULL) = 0
capget({version=_LINUX_CAPABILITY_VERSION_3, pid=0}, {effective=0, permitted=0, inheritable=0}) = 0
socket(AF_INET, SOCK_DGRAM, IPPROTO_ICMP) = -1 EACCES (Permission denied)
socket(AF_INET, SOCK_RAW, IPPROTO_ICMP) = -1 EPERM (Operation not permitted)
socket(AF_INET6, SOCK_DGRAM, IPPROTO_ICMPV6) = -1 EACCES (Permission denied)
socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6) = -1 EPERM (Operation not permitted)
open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=2997, ...}) = 0
read(3, "# Locale name alias data base.\n#"..., 4096) = 2997
read(3, "", 4096)                       = 0
close(3)                                = 0
open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
write(2, "ping: socket: Operation not perm"..., 38ping: socket: Operation not permitted
) = 38
exit_group(2)                           = ?
+++ exited with 2 +++

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Írtál egy rövid sort, aztán máris két különböző probléma állt elő. Az egyik az, hogy nem tűnik setuidosnak, de mégis pirosra színezi az ls -l parancs. Kínomban root-ként:

readlink -f `which ping`
/usr/bin/ping

cd /usr/bin

ls -l ping
-rwxr-xr-x. 1 root root 62088 Nov  8 09:50 ping

stat -c '%A %a %n' ping
-rwxr-xr-x 755 ping

lsattr ping
--------------e---- ping

getfacl ping
# file: ping
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

ls -Z ping
system_u:object_r:ping_exec_t:s0 ping

Egyedül ez utóbbi miatt színezheti szerintem az ls parancs piros alapon sárga betűkkel a pinget.

A másik a root-ként strace, mindjárt megnézem azt is.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

centos:
$ ping lauschb.hu
ping: lauschb.hu: Name or service not known
--
"Sose a gép a hülye."

Esetleg a /etc/nsswitch.conf-ba befúrta magát valaki?


nemjó: hosts:      files wins dns
jó:    hosts:      files dns

$ ping lauschb.hu
ping: unknown host lauschb.hu
$ host lauschb.hu
Host lauschb.hu not found: 3(NXDOMAIN)
$ which ping
/bin/ping
$ equery belongs /bin/ping
net-misc/iputils-20151218 (/bin/ping)

net-misc/iputils csomagra vonatkozó érdekes bejegyzés:
Releases are not from original upstream but from a fork. Masked as requested by vapier.
Affected packages
~net-misc/iputils-20160308

Üdv:
Dw.

"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."

A lauschb.hu számít? Teszem azt, más, nem létező hostra is segfaultol?

Vagy esetleg csak ezen a napon nem működik? :D

van értelme ennek?
A lauschb.hu domain név még nincs regisztrálva. :)

A LEDE router-emen az alábbit csináltam:

export PS1='$(RET=$?; COLOR="\[\e[m\]"; [ $EUID = 0 ] && COLOR="\[\e[32;1m\]"; echo -n "${COLOR}["; [ $RET -ne 0 ] && echo -n "\[\e[33;1m\]$RET$COLOR ")\u@\h \w]\$ \[\e[m\]'

Ettől a root prompt zöld lesz, a sima user normál fehér, a 0-tól különböző exit kód benne lesz a promptban sárgával. Mind root, mind normál user esetén. Értelemszerűen a promptot megelőző végrehajtás exit kódja. Az egész egyetlen sor, csak hosszú, töri a böngésző. Tudom, nem engem kérdeztél... :)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Ah, bocs. Csak most vettem észre.
Nem bash-t használok, így nem tudom. (t)csh-ban egyszerűen csak egy set printexitvalue kell - persze csak a nem-nulla visszatérési értékeket írja ki.

Szerk.: esetleg a PROMPT_COMMAND hasznos lehet (If set, the value is executed as a command prior to issuing each primary prompt.)

Azért önálló hozzászólás, hogy a bekezdések miatt ne szűküljön be a hely. Az strace vége root-ként, valódi meghalással:

open("/lib64/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 c\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=153184, ...}) = 0
mmap(NULL, 2253688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x7fded66a6000
mprotect(0x7fded66c9000, 2097152, PROT_NONE) = 0
mmap(0x7fded68c9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x23000) = 0x7fded68c9000
mmap(0x7fded68cb000, 4984, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fded68cb000
close(5)                                = 0
open("/lib64/librt.so.1", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340 \0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=44040, ...}) = 0
mmap(NULL, 2128800, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x7fded649e000
mprotect(0x7fded64a5000, 2093056, PROT_NONE) = 0
mmap(0x7fded66a4000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x6000) = 0x7fded66a4000
close(5)                                = 0
open("/lib64/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240*\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=92872, ...}) = 0
mmap(NULL, 2188336, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x7fded6287000
mprotect(0x7fded629d000, 2093056, PROT_NONE) = 0
mmap(0x7fded649c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x15000) = 0x7fded649c000
close(5)                                = 0
open("/lib64/libpcre.so.1", O_RDONLY|O_CLOEXEC) = 5
read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\25\0\0\0\0\0\0"..., 832) = 832
fstat(5, {st_mode=S_IFREG|0755, st_size=471736, ...}) = 0
mmap(NULL, 2564360, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x7fded6014000
mprotect(0x7fded6086000, 2093056, PROT_NONE) = 0
mmap(0x7fded6285000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x71000) = 0x7fded6285000
close(5)                                = 0
mprotect(0x7fded6285000, 4096, PROT_READ) = 0
mprotect(0x7fded649c000, 4096, PROT_READ) = 0
mprotect(0x7fded66a4000, 4096, PROT_READ) = 0
mprotect(0x7fded68c9000, 4096, PROT_READ) = 0
mprotect(0x7fdedf620000, 8192, PROT_READ) = 0
set_tid_address(0x7fdedf623e10)         = 20046
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x968} ---
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault (core dumped)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Egy régi CentOS.org forumban a PIE/CFLAG fordításnál használt opcióra hivatkoztak ping segfault-nál. Esetleg fordíts egyet PIE kapcsolóval és az nélkül és megnézhetnéd hogy úgyis előjön-e a hiba. A dev csomaggal relatíve egyszerű talán a ping-et lefordítani. Az strace végén lévő memória cím bejegyzés is erre ad gyanút ezek alapján szerintem.

Kíváncsi vagyok mi lesz végül, mert azért nem olyan durva bonyolult egy ping.

root@banan:~# host lauschb.hu
Host lauschb.hu not found: 3(NXDOMAIN)
root@banan:~# ping lauschb.hu
ping: unknown host lauschb.hu
root@banan:~# ping -V
ping utility, iputils-s20121221

--------------
„If there were no hell, we would be like the animals. No hell, no dignity.”

Jan Synacek írta:

The problem is the combination of wins (from samba-winbind-modules) + myhostname (systemd).

This is definitely not a problem in iputils. The gdb shows that the call stack goes through something in nss_myhostname, which I didn't manage to verify, even with a custom built (no optimizations, latest master) systemd and iputils. Even after changing the myhostname code to do nothing else but return NSS_STATUS_NOTFOUND did not help. However, the problem is not reproducible on F26, which means that, very likely, the problem is in either samba-winbind-modules or glibc.

Mivel blognak indítottam, nem írom oda, hogy [MEGOLDVA]. Pedig megoldva. :)

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Nem is kell odaírni, hogy 'megoldva', hiszen nincs megoldva, csak nem minden kontextusban manifesztálódik a hiba.

Ha hármat tippelhetnék, azt mondanám, hogy inicializálatlan változó, buffer-túlírás, vagy interface-hiba.

(Az utóbbira példa ez a függvény: HtmlHelp. Az utolsó paraméter helyesen nem DWORD, hanem UINT_PTR , ugyanis időnként pointert teszünk bele, ami Win64 esetén 64-bites, a DWORD viszont 32-bites.)

Ezt értsem úgy, hogy a fejlesztők a samba frissítésével csak elfedték a hibát? Mindenesetre a ping már nem száll el segfault-tal azonos körülmények között nálam. Na jó, nem hallgatom el, ezt is írta a fejlesztő:

Reproducible on F25 with:
samba-winbind-modules-4.5.8-0.fc25.x86_64
glibc-2.24-4.fc25.x86_64

This is not reproducible on F26 with:
samba-winbind-modules-4.6.2-0.fc26.x86_64
glibc-2.25-4.fc26.x86_64

Switching to glibc first. Maybe the guys know something about this.

Tehát a glibc lenne a bűnös? Azt tudni kell, úgy gondolták, ennek köze van egy másik hibához, s annak megoldásával orvosolták ezt. Azóta tehát van samba-4.5.8-1.fc25.x86_64, azaz új verzió, a changelogban pedig az szerepel, hogy az általam linkelt bugot számolták fel:

resolves: #1364666 - Fix nss_wins crash

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE