On Sat, 2009-01-31 at 21:44 -0300, Daniel Serpell wrote:
> El problema es que no resuelve la pregunta original, ya que el parche de
> biblioteca se debe aplicar *antes* de iniciar el programa.

Yep, segun segui buscando y creo que systemtap puede entregar el $pos de
un fd (y eso cumple mis requerimientos), pero no he tenido tiempo de
probar (ademas que systemtap no viene por default AFAIK).

Otra opcion que vi _sin modificar los programas_ seria armar un modulo
del kernel que ponga un archivo especial en /proc, y uno de el PID y
tire un mapa de los archivos. Ej:

# echo $PID > /proc/fdmaps
#fd #pos
0 -1
1 -1
2 -1
3 545345

Internamente deberia encontrar el task dado un pid, iterar sobre
task->files y llamar al llseek interno (vfs_lseek creo que era)...

> Claro, uno podría mediante GDB inyectar código adicional en tiempo de
> ejecución, pero eso es bastante complejo.

Gracias Daniel, estuvo interesante! Pero no me atreveria a pichicatear
un programa ya corriendo con GDB (ni tu solucion ni inyectar codigo).


La solucion de dd y pv estan buenas y no las conocia (en particular la
ultima), el problema es que tienes que reprogramar tus scripts o las
cosas que estan andando... y hay software que no puedes modificar de
esta forma (ej: una base de datos).


Slds,
-- 
Aldrin Martoq <[email protected]>
http://aldrin.martoq.cl/videopodcast/ http://aldrin.martoq.cl/techblog/

Attachment: signature.asc
Description: This is a digitally signed message part

Responder a