mensaje *** glibc detected *** malloc(): memory corruption: 0x081a2f80 *** sale al editar archivos con vi.
Era uno de esos días en que pienso "pa'qué diablos me levanté hoy" (en realidad no pensé eso de "diablos", sino otra cosa, pero mejor ahí la dejamos). Me disponía a generar unos scripts de ldap y me conecté a nuestro servidor linux SUSE9, con el usuario "oracle", e intenté abrir un archivo nuevo con el vi, cuando de pronto, ¡oh, sorpresa! Que sale el siguiente mensaje:
*** glibc detected *** malloc(): memory corruption: 0x081a2f80 ***
y pa'colmo de males, se quedó congelado el asunto, es decir, no volvió el "prompt". Guardé la calma y tranquilamente le di un "Cltr-C" para ver si volvía, y... ¡nada! Abrí otra sesión y le tuve que dar "kill -9" a mi proceso de vi. (Después descubrí que con Ctrl-Z me podía salir y luego ejecutar el kill desde esa misma sesión)
Fue un largo día, sin nada bueno qué recordar. Terminó al fin, y me fui a dormir.
En otro día menos nefasto, buscando en internet me encontré con un sitio donde recomendaban definir una variable de ambiente llamada MALLOC_CHECK_. Así procedí, pués:
export MALLOC_CHECK_=1
y volví a abrir el vi, el cual ya abrió y pude ver un archivo de prueba. Entonces, al cerrar el vi, salió el siguiente mensaje:
E138: Can't write viminfo file
el cual busqué de nuevo en internet, y me encontré con lo siguiente:
When you get error "E138: Can't write viminfo file"
check that no old temp files were left behind (e.g.
~/.viminf*) and that you can write in the directory of
the .viminfo file.
(http://www.mydatabasesupport.com/forums/shell/176820-vi-error.html)
Así que busqué en el home del usuario oracle los dichosos archivos .viminf*:
ls -ltra
y los borré todos (excepto .viminfo, si mal no recuerdo... o quizá ese también... mmm, pos mejor respáldenlo, por si acaso). Hecho esto, volví a abrir el vi y voilà!! Ya no hubo errores. Luego de terminada la misión, quité la variable MALLOC_CHECK_ (unset MALLOCK_CHECK_).
Listones.
Let's vi the world!