[Buoh-dev] Parche para evitar crash

Carlos Garcia Campos carlosgc at gnome.org
Thu Aug 4 10:19:59 MDT 2005


El jue, 04-08-2005 a las 18:07 +0200, Esteban Sánchez escribió:
> Este parche soluciona un crash en el buoh. El crash ocurre el 100% de
> las veces que se hace lo siguiente:
> 
> 1) Abrir el buoh
> 2) Pinchar en un comic
> 3) Cerrar el buoh:
>  a) Antes de que comience a cargar nada
>  b) Mientras va apareciendo el comic
> 4) CRASH!

cierto, esta es una de las situaciones que no había tenido en cuenta :-P

> 
> La solución es poco ortodoxa, pero parece que funciona. 
> 
> 
> ¿Podeis comprobarlo antes de que haga commit? Por supuesto, cualquier
> sugerencia es bien admitida :)

Te comento:

        if (loader->thread_mutex) {
+               if (!g_mutex_trylock (loader->thread_mutex)) {
+                        g_mutex_unlock (loader->thread_mutex);
+                } else {
+                       g_mutex_unlock (loader->thread_mutex);
+               }
                g_mutex_free (loader->thread_mutex);
                loader->thread_mutex = NULL;
        }

El thread_mutex tiene como único objetivo evitar el que pueda haber mas
de un hilo al mismo tiempo. Efectivamente, si tratas de coger el lock y
lo tiene otro hilo es porque no ha terminado. g_mutex_trylock devuelve
FALSE si el lock lo tiene otro hilo, en ese caso estas quitando tu el
lock, en caso contrario devuelve TRUE y libera el lock y después lo
vuelves a liberar tu. Si te fijas las dos ramas del if son exactamente
iguales!!! No parece muy lógico. 

Creo que hay otra solución un poco mas fácil de entender. El objeto
loader tiene un campo status que indica en cada momento el estado del
hilo. Si al llegar al finalize hay un hilo corriendo la variable status
estará a RUNNING o a STOPPING. En el primer caso debes mandar para al
proceso y esperar a que termine; en el segundo caso tan solo tienes que
esperar a que termine, ya que está parando. 

Creo que está solución es un poco mas comprensible.

> Gracias

Salu2
-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 Carlos Garcia Campos a.k.a. KaL
   elkalmail at yahoo.es
   carlosgc at gnome.org
   http://carlosgc.linups.org
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=             
PGP key: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x523E6462
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://forge.novell.com/pipermail/buoh-dev/attachments/20050804/d3e6b8e3/attachment.pgp


More information about the Buoh-dev mailing list