OVH Cloud OVH Cloud

[FreeBSD] csh et "Text file busy"

6 réponses
Avatar
Paul Gaborit
Je viens de constater un comportement étonnant de csh sur FreeBSD.

Un petit ECM (sous root) :

# echo "#! /bin/sh" > foobar
# echo "echo foobar" >> foobar
# chmod a+x foobar
# ./foobar
./foobar: Text file busy.
#

Effectivement, lsof (je n'ai pas retrouvé la commande *BSD
équivalente) m'indique :

# lsof foobar
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
csh 80592 root 5w VREG 4,16 23 8340 foobar
#

À partir de là, je suis obligé de quitter le 'csh' en cours pour
pouvoir exécuter le script.

Est-ce le comportement "normal" de (t)csh ? (Ça vient bien de csh
puisqu'en utilisant /bin/echo, je n'ai pas le problème.)

PS: je suis en FreeBSD 5-stable à jour.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>

6 réponses

Avatar
Alain
On Mon, 25 Jul 2005 11:44:10 +0200
Paul Gaborit [Paul] wrote:

[...]
Paul> # echo "#! /bin/sh" > foobar

cette partie la suffit. Il semble y avoir une fuite de descripteur
uniquement avec les builtins + '>' ou '<'

en effet, pas de probleme avec:
$ echo toto | cat > /dev/null

mais la ca se gate:
$ jobs < /dev/null > /dev/null

je n'ai pas le probleme en 4.4, mais en 5.3 si ;-)

--
Alain

NB: l'equivalent de lsof c'est fstat
Avatar
Paul Gaborit
À (at) Tue, 26 Jul 2005 21:15:26 +0200,
Alain écrivait (wrote):
cette partie la suffit. Il semble y avoir une fuite de descripteur
uniquement avec les builtins + '>' ou '<'

en effet, pas de probleme avec:
$ echo toto | cat > /dev/null


Ce n'est donc pas que 'echo' qui est en cause mais toutes les builtins
commands avec redirection... Ok.

mais la ca se gate:
$ jobs < /dev/null > /dev/null


Pourquoi, ça se gâte ? En quoi est-ce plus gênant ?

je n'ai pas le probleme en 4.4, mais en 5.3 si ;-)


Je n'avais pas testé en 4.x. Au fait, pourquoi le smiley ?

Je vais essayer de voir si ce bug a déjà été signalé et sinon, je vais
le faire.

NB: l'equivalent de lsof c'est fstat


Merci pour cette info (en plus, j'aurais du m'en douter : c'est la
même commande sur MacOS X.).

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>

Avatar
Matthieu Clavier
On 2005-07-25, Paul Gaborit wrote:

Effectivement, lsof (je n'ai pas retrouvé la commande *BSD
équivalente) m'indique :


fstat(1)

Avatar
Alain
On Wed, 27 Jul 2005 10:25:31 +0200
Paul Gaborit [Paul] wrote:

[...]
Paul> > mais la ca se gate:
Paul> > $ jobs < /dev/null > /dev/null
Paul>
Paul> Pourquoi, ça se gâte ? En quoi est-ce plus gênant ?

ce n'est pas "plus génant", on perd juste 2 fds.

--
Alain
Avatar
Paul Gaborit
À (at) Wed, 27 Jul 2005 19:55:37 +0200,
Alain écrivait (wrote):
ce n'est pas "plus génant", on perd juste 2 fds.


Ok. J'ai finalement signalé le bug (bin/84162). À suivre...

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>

Avatar
Paul Gaborit
À (at) Sat, 30 Jul 2005 10:31:40 +0200,
Patrick Lamaizière écrivait (wrote):
Paul Gaborit écrivait :

Ok. J'ai finalement signalé le bug (bin/84162). À suivre...


Il y a eu un courrier sur freebsd-current là dessus :
http://lists.freebsd.org/pipermail/freebsd-current/2005-July/052784.html


D'après la mailinglist de développement de tcsh, le bug semble corrigé
dans la version 6.14 de tcsh. Mais FreeBSD (en tous cas la version
5-stable) utilise encore la version 6.13.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>