Uno de los usuarios deja colgada la pantalla al deslogarse

Hace poco me ocurrió una cosa curiosa, supongo que a raiz de uno de los numerosos cortes de luz que que están produciendo en la zona las obras de construcción del nuevo HUCA (me tienen frito con las subidas de tensión de las narices). Por cierto que cosas como ésta me han llevado a comprar un SAI para el ordenador con el que estoy bastante contento, pero esa es otra historia que tal vez te cuente en otro momento. ;-).

El caso es que, sin motivo aparente, uno de los usuarios del ordenador (concretamente el usuario "maria"), no podía deslogarse limpiamente. Cuando intentaba cerrar la sesión KDE, el ordenador terminaba todos los programas correctamente pero luego la pantalla se quedaba en negro y con un cursor parpadeando, con lo que no regresaba al cuadro de GDM para ofrecer otro login.

Como se supone que el usuario "maria" ya no está logado, lo que podemos hacer es salir a consola pulsando <Ctrl><Alt>F1. Una vez en consola nos logamos como root y hacemos un "ps -aux | grep maria", con lo que deberíamos ver exactamente qué programas del usuario deslogado siguen abiertos (se supone que no debería haber ninguno).

En mi caso, la salida de "ps -aux | grep maria" mostraba varios programas abiertos, la mayoría de ellos diferentes instancias de artsd, el servidor de sonido de KDE, y otras tantas instancias de "artsshell -q terminate", que asumo que son intentos fallidos de cerrarlo. Además, observé que quedaba abierto también "/usr/kde/3.5/bin/startkde", que es el script que arranca y termina KDE.

El siguiente paso es evidente: "kill -9 (numero)", siendo número el PID del script startkde. La respuesta del sistema fue reiniciar el sistema gráfico inmediatamente y mostrar de nuevo la pantalla de login GDM. Et voilá. :-)

Solo que cuando el usuario "maria" vuelve a logarse y deslogarse, vuelve a ocurrir. Una y otra vez. En cambio no ocurre nunca cuando me logo yo o root.

Vale. Algo sigue ahí tocando las narices. Pero solo al usuario maria, no a mí. Unas pocas pruebas más durante los cuelgues y observo que el sistema termina el cierre no solo matando startkde, sino también cualquiera de los procesos de artsd. Basta con matar uno cualquiera de esos programas para que el logout termine correctamente. Pero no soluciona el problema: la pantalla volverá a colgarse en cuanto maria vuelva a deslogarse.

¿Que puede estar tocando las narices solo a un usuario concreto?. Quizás un fichero temporal que no se borra y que crea alguna información contradictoria que el sistema no sabe interpretar. Quizás cree que hay más instancias abiertas de artsd de las que realmente hay, y se queda esperando como un idiota a que cierren.

No se lo que es, pero solo hay una forma de comprobarlo. Así que con el usuario maria deslogado entro en consola y me logo como lacofi. Miro dentro del directorio "/tmp/" y observo que hay varios subdirectorios que pertenecen a maria. Pero Maria no está logada, así que esos ficheros temporales no deberían estar ahí. Pueeees...

 

Bienvenido a jeanette
Login: lacofi
Contraseña: contraseña

Last login: Tue Jun 15 19:04:08 2008 from tty1
[lacofi@jeanne]$ su
Password: contraseña
[root@jeanne]# su maria
[maria@jeanne]$ ls /tmp/*
total 2,5M
drwx------ 2 lacofi personal 4,0K jun 17 16:12 gconfd-lacofi/
drwx------ 3 maria  users    4,0K jun 17 18:24 gconfd-maria/
drwxrwxrwt 3 lacofi personal 4,0K jun 17 01:46 gdl/
-rw------- 1 maria  users    850K jun 17 18:39 gdlinux-mso-tLE9yDP0
drwx------ 2 lacofi personal 4,0K jun 17 16:12 kde-lacofi/
drwx------ 3 lacofi personal 4,0K jun 17 16:12 ksocket-lacofi/
drwx------ 3 maria  users    4,0K jun 17 19:25 ksocket-maria/
drwx------ 2 lacofi personal 4,0K jun 17 16:12 orbit-lacofi/
drwx------ 2 maria  users    4,0K jun 17 18:26 orbit-maria/
drwx------ 2 maria  users    4,0K jun 17 18:24 ssh-tnVGJ22197/
drwx------ 2 lacofi personal 4,0K jun 17 19:32 v745199/
drwxrwxrwt 2 root   root     4,0K jun 17 00:59 VMwareDnD/
-rw------- 1 maria  users       0 jun 17 18:37 wv-lkOAiS
-rw------- 1 p2p    users    267K jun 17 03:26 arch_09773c.tmp
-rw------- 1 p2p    users    289K jun 17 00:59 arch_4d0d3e.tmp
-rw------- 1 p2p    users    276K jun 17 03:25 arch_b62c62.tmp
-rw------- 1 p2p    users    276K jun 17 00:59 arch_c9f86a.tmp
[maria@jeanne]$ rm -Rf /tmp/*
[maria@jeanne]$ exit
[root@jeanne]# exit
[lacofi@jeanne]$ ls /tmp/*
drwx------ 2 lacofi personal 4,0K jun 17 16:12 gconfd-lacofi/
drwxrwxrwt 3 lacofi personal 4,0K jun 17 01:46 gdl/
drwx------ 2 lacofi personal 4,0K jun 17 16:12 kde-lacofi/
drwx------ 3 lacofi personal 4,0K jun 17 16:12 ksocket-lacofi/
drwx------ 2 lacofi personal 4,0K jun 17 16:12 orbit-lacofi/
drwx------ 2 lacofi personal 4,0K jun 17 19:32 v745199/
drwxrwxrwt 2 root   root     4,0K jun 17 00:59 VMwareDnD/
-rw------- 1 p2p    users    267K jun 17 03:26 arch_09773c.tmp
-rw------- 1 p2p    users    289K jun 17 00:59 arch_4d0d3e.tmp
-rw------- 1 p2p    users    276K jun 17 03:25 arch_b62c62.tmp
-rw------- 1 p2p    users    276K jun 17 00:59 arch_c9f86a.tmp

Y con esto desaparecieron todos esos cuelgues misteriosos. Así que si te ocurre a tí, ya lo sabes. Échale un vistazo a tus ficheros temporales, no vaya a ser...

Por cierto, observa bien el detalle: la orden "rm -Rf /tmp/*" la doy como usuario maria (como el cambio lo hace root, no pide la contraseña). Lo hago así porque estoy usando a mi favor el sistema de permisos de linux, de tal forma que se borrarán única y exclusivamente los ficheros temporales que le pertenezcan al usuario maria. Los demás, continuarán intactos. Nunca, ¡NUNCA! des una orden de ese calibre como root, o sabe Dios lo que acabarás borrando. Hazme caso, por una vez. ;-)

Be Sociable, Share!

Puedes seguir cualquier respuesta a esta entrada mediante el canal RSS 2.0. Puedes dejar un comentario o enviar un trackback desde tu propio sitio.

Deja un comentario

Disculpa, debes iniciar sesión para escribir un comentario.