Preguntas frecuentes sobre ZIVIS (Blog de Zivis)

cazando el bug de validacion

El crash de esta madrugada ha sido un asunto interno nuestro, tan solo agravado un poco por la velocidad de respuesta. El validador nuevo se quedaba calado y aunque el cron lo relanza cada cinco minutos eso solo servia para revisar unas pocas workunits antes de cascar de nuevo. El motivo: un acceso a puntero nulo.

Fragmento de codigo:

retval = get_output_file_paths(result, output_file_names);
int noutputs = output_file_names.size();
fprintf(stderr, "Hay %d outputsn",noutputs);

fprintf(stderr, "Accedo al primer fichero---------------------------n");
if (retval) return retval;
fprintf(stderr, "Accediendo al fichero %sn",output_file_names[0].c_str());
... = try_fopen(output_file_names[0].c_str(), f, "r");

¿Lo veis? cuando no hay ficheros en el resultado, retval no devuelve error, y simplemente noutputs vale 0. Pero claro, como solo nos preocupamos de retval nos vamos a la lineas siguientes y voila, intentamos leer un campo de output_file_names[0], que por supuesto no existe. De hecho, el sistema se queda colgado antes de try_fopen, en el fprintf del log.

Luego un poco mas adelante el problema se repite, cuando analizamos el siquiente fichero de la respuesta sin asegurarnos de que noutputs > 1:

fprintf(stderr, "Accediendo al fichero %sn",output_file_names[1].c_str());
retval = try_fopen(output_file_names[1].c_str(), f2, "r");

El problema de fondo ha sido que en el diseño de este nuevo validator ya nos conociamos BOINC lo suficiente, creiamos, para estar seguros de que si todos los ficheros obligatorios no estaban presentes el resultado nunca seria "Success" y por tanto no entraria ni siquiera a validacion. Y hemos visto ahora que no, que en algunos casos (un centenar teniamos ahora en la base de datos) se nos entrega solo un fichero o ninguno, con los datos incompletos, y que a pesar de eso el client state afirma ser "Success". Por cierto que estos casos tienen una pequeña interseccion con otros de los que se quejaba J, aquellos de CPU cero o muy corta. Asi que en quitando el bug y verificando no solo la existencia del primer fichero sino tambien de los restantes es bastante posible que estemos matando dos pajaros de un tiro.


27/04/2007 18:29 #.

Comentarios » Ir a formulario

gravatar.com
Autor: Fran

Enhorabuena, me alegro de que lo hayais conseguido solucionar.

Ahora ya funciona todo correctamente.

Fecha: 27/04/2007 20:58.



Autor: cherinolero

Pues a mi me siguen saliendo varias WU que han sido aceptadas y que realmente estan devolviendo error y que se han ejecutado en muy poco tiempo. Animo con ello

Fecha: 29/04/2007 18:25.


gravatar.com
Autor: Razorblade

Correctamente nunca se va a lograr que funcione todo. La casuística es muy variada.

Alejandro, las nuevas unidades 'lgv3t_conTr_C1_cortas' me dan todas error de Windows. Las C0 no.

Fecha: 30/04/2007 00:19.


Añadir un comentario




No será mostrado.




BIFI - CIEMAT - Ay. de Zaragoza / © Ayuntamiento de Zaragoza / webmunicipal@zaragoza.es / Mapa Web / Miembro W3c / XHTML 1.0 / CSS 2.0 / Accesibilidad