viernes, 12 de junio de 2009

News: Bug en VirtualBox 2.2.X Resuelto.

vbox_logo2_gradientMuchos de los usuarios de ReactOS usan VirtualBox como virtualizador. Al actualizar a la version 2.2.0 de VirtualBox empezamos a recibir notificaciones  por el cual no lograban conectarse a Internet con ReactOS.

Por lo visto VBOX había modificado ligeramente el modo de emular la tarjeta de red, y esto destapó un Bug en nuestro Network. Ahora  el Bug ya está resuelto.Para ello solo tenéis que bajaros una de nuestras revisiones o esperar a la 0.3.10 que está a la vuelta de la esquina ;)


Nuestros desarrolladores dejaron pasar cierto tiempo, pues muchos usuarios de VirtualBox reportaron problemas con el network en modo Bridge y Nat usando Windows XP o Ubuntu como GUESTS,lo que podría descartar que fuera un bug de ReactOS y que fuera un fallo del nuevo modo de virtualización. Sin embargo se descubrió que solo afectaba a los usuarios que tenian Vista x64 como HOST.Aquí se puede ver el reporte del Bug. Y aquí el changelog con los problemas de NAT y Networking que presentaba Vbox en las versiones 2.2.X.

Esto provocó que VirtualBox lanzara rápidamente una versión nueva(la 2.2.4)que funcionaba perfectamente con todas las combinaciones de Hosts y Guests,salvo con ReactOS. Entonces comenzó la "carrera" para descubrir donde fallaba nuestro Network stack.

Tras un par de semanas siguiendo el Bug por todo nuestro código fuente se encontró el código erróneo.

El código fuente erróneo era:

case DHO_NIS_DOMAIN:
if (!res_hnok(sbuf)) {
warning("Bogus Host Name option %d: %s (%s)", option,sbuf, opbuf);
return (0);
}
return (1);

La solución está en el Commit 41362:

case DHO_NIS_DOMAIN:
if (!res_hnok(sbuf))
warning("Bogus Host Name option %d: %s (%s)", option,sbuf, opbuf);
return (1);

En el código con BUG si NO se recibía el DHCP Hostname, devolvíamos 0 y la función fallaba. Sin embargo no es obligatorio pasar el DHCP Hostname, por lo cual no tenemos que devolver 0 ( y por lo tanto obligar a que falle la función).Nuestro error consistió en pensar que este parámetro era obligatorio.

Una linea de código fue la responsable de todo el Caos.

Ahora el BUG ya está resuelto, y los usuarios de ReactOS en VirtualBox vuelven a tener acceso a Internet.VirtualBoxeros: (ahora sí),nos vemos por el IRC. ;)

0 comentarios:

Publicar un comentario