Newsgroup: it.comp.os.linux.sys
Titolo: error: "inherited fd" e l'applicazione non parte

salve newsgroup,
mi imbatto il seguente problema e, per mia ignoranza, non ne vengo a
capo in nessun modo. Dalla mia ubuntuzza, lancio l'applicazione: 
# lxc-start --name fedora
che mi spara fuori il seguente errore:
lxc-start: inherited fd 5 on socket:[491140]
ed esce irrimediabilmente.
Il workaround è di chiedere alla shell di chiudere quel file
descriptor, così:
# lxc-start --name fedora 5<&-
e in teoria funzionerebbe. Non riesco però ad andare avanti per
investigare il problema. Come faccio a capire quale processo sta
prendendo il file descriptor?
Ho perso ore a guardare:
- la directory /proc
- l'output di "lsof -nPi"
- l'output di "netstat -pln"
- l'output di pstree l'ho imparato quasi a memoria.
Avete qualche dritta?
-- 
Wikipedia Admin: "wikipedia non è un blog"
Iosif Stalin: "i compagni hanno scambiato il partito per un circolo di
discussione"

 - l'output di pstree l'ho imparato quasi a memoria.
Inoltre:
# gdb
GNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2
[....CUT].....]
(gdb) exec-file lxc-start
(gdb) run --name fedora
Starting program: /usr/bin/lxc-start --name fedora
lxc-start: inherited fd 3 on pipe:[519046]
lxc-start: inherited fd 4 on pipe:[519046]
lxc-start: inherited fd 5 on socket:[491140]
Program exited with code 0377.
(gdb) 
e ancora (solo la parte finale di strace):
readlink("/proc/self/fd/5", "socket:[491140]", 4096) = 15
gettimeofday({1303719314, 156586}, NULL) = 0
write(2, "lxc-start: ", 11lxc-start: )             = 11
write(2, "inherited fd 5 on socket:[491140"..., 33inherited fd 5 on socket:[491140]) = 33
write(2, "\n", 1
)                       = 1
getdents(3, /* 0 entries */, 32768)     = 0
close(3)                                = 0
exit_group(-1)                          = ?


 ha scritto:

Wahoo!!! ce l'ho quasi fatta.
root@yasna:/proc/self/fd# ll /proc/self/fd/
totale 0
dr-x------ 2 root root  0 2011-04-25 10:19 .
dr-xr-xr-x 7 root root  0 2011-04-25 10:19 ..
lrwx------ 1 root root 64 2011-04-25 10:19 0 -> /dev/pts/0
lrwx------ 1 root root 64 2011-04-25 10:19 1 -> /dev/pts/0
lrwx------ 1 root root 64 2011-04-25 10:19 2 -> /dev/pts/0
lr-x------ 1 root root 64 2011-04-25 10:19 3 -> /proc/27317/fd
lrwx------ 1 root root 64 2011-04-25 10:19 5 -> socket:[491140]
root@yasna:/proc/self/fd# fuser /proc/self/fd/5
/proc/self/fd/5:     25172
root@yasna:/proc/self/fd# ps -ef |grep 25172
root     25172 25164  0 09:53 pts/0    00:00:02 bash
root     27594 25172  0 10:23 pts/0    00:00:00 ps -ef
root     27595 25172  0 10:23 pts/0    00:00:00 grep 25172
LA BASH.
Ma che cacchio vuol dire???


 
ci siamo quasi....
apt-get install zsh ......
$ sudo zsh
yasna# cd /proc/self/fd
yasna# ls -la
totale 0
dr-x------ 2 root root  0 2011-04-25 10:35 .
dr-xr-xr-x 7 root root  0 2011-04-25 10:35 ..
lrwx------ 1 root root 64 2011-04-25 10:35 0 -> /dev/pts/0
lrwx------ 1 root root 64 2011-04-25 10:35 1 -> /dev/pts/0
lrwx------ 1 root root 64 2011-04-25 10:35 10 -> /dev/pts/0
lrwx------ 1 root root 64 2011-04-25 10:35 11 -> socket:[547225]
lrwx------ 1 root root 64 2011-04-25 10:35 2 -> /dev/pts/0
yasna# lxc-start -n fedora
lxc-start: Device or resource busy - failed to remove previous cgroup '/cgroup/fedora'
lxc-start: failed to spawn 'fedora'
lxc-start: Device or resource busy - failed to remove cgroup '/cgroup/fedora'
yasna# 
E adesso mi da questo errore. Che software di merda!
Ho provato a magheggiare e mi è partito completamente incasinato e
adesso subentrano mille variabili: 
- sotto ci sono dei subvolume btrfs: ho un problema su btrfs? Non mi
  pare.
- ho smontato e rimontato "none /cgroup cgroup defaults 0 0" e non
  cambia niente.
- braso tutto il contenuto di cgroup ?


 ha scritto:
[ CUT ]
C-A-ZZ-O. Sono subentrati dei particolari dai risvolti un po' esoterici.
Il subvolume BTRFS è ovviamente OK, ma avevo tirato giù il server LDAP.
E che c'è di male direte voi? E che c'entra il server LDAP in questo
giro?
Quando facevo "sudo su", ottenevo il warning:
sudo: ldap_sasl_bind_s(): Can't contact LDAP server
(ebbene si, per giocare ho messo sudo su ldap), dopo di che, sudo
continuava il suo giro, si leggeva il sudoers locale e mi faceva
"sudare" tranquillamente.
Peccato che questa volta mi ha fatto sudare freddo.
Peccato che con la bash (ma non è neanche vero) questo causasse il
mancato "close-on-exec" del file descriptor.
Effettivamente il problema non era nemmeno sulla bash, ma il semplice
fatto che con "sudo su -" io NON cambiavo shell (il pid della shell è
sempre quello).
Di fatti, digitando:
$ sudo bash
oppure
$ sudo zsh
il problema non si presenta perché acquisisco una nuova schell.
Il mancato close-on-exec del FD, si verifica solo quando si riusa la
stessa shell.
Il problema non è pertanto nemmeno in LXC (ma anche si, visto che è
l'unico che rompe). Diciamo che il problema è in sudo, che quando non fa
il bind su LDAP e quando riutilizza la stessa shell, ti fa questo
casino.
Io me la sono cantata e io me la sono suonata. Minchia che sudata.


 
Soluzione: riavvio il server ldap, oppure uso "sudo bash".


 fatto che con "sudo su -" 
sudo -s
-- 
Flavio Visentin
Scientists have finally discovered what's wrong with the female brain:
On the left side, there is nothing right, and on the right side, there
is nothing left.