[Jde-dev] Fallo de segmentación en opencvdemo (ticket #242)

Eduardo Perdices edupergar en gmail.com
Mie Abr 1 21:52:35 CEST 2009


Ya he cerrado el ticket, en las máquinas mononucleo funcionaba bien
porque realmente sí que controlaba si la imagen se liberaba, es decir,
tenía un IF para solo acceder a la imagen cuando era distinto de NULL,
lo que debía pasar en las de más de un nucleo es:

-Con la imagen aun sin liberar, un hilo miraba el IF, que como no era
null entraba.
-Justo a la vez el otro hilo liberaba la imagen
-El primer hilo intentaba acceder a la imagen (al ya haber pasado el
IF) pero la imagen ya era NULL, con lo cual petaba.

Eso en las máquinas mononucleo no pasaba porque el cambio de contexto
entre un thread y el otro no se desarrollaba de la misma forma, aunque
quizás en algún caso llegase a pasar, vamos que eran problemas de
concurrencia, y con las mononucleo había suerte y no pasaba, pero no
dejaba de estar mal.

Un saludo

2009/3/31 JoseMaria <jmplaza en gsyc.es>:
> Estupendo Eduardo,
>
> he probado las versiones sin y con la solución de tu parche.
> Efectivamente opencvdemo rompía la aplicación cuando se desactivaba la
> captura de imagen. Entiendo que si se liberaba la memoria de la imagen
> al pinchar en el desplegable "Options/Image", la hebra de visualización
> quería seguir accediendo al buffer con los píxeles y de ahí el acceso el
> ilegal. No? No te petaba en tu máquina mononucleo?
>
> Con la solución que has incluido en el parche funciona correctamente. La
> imagen que se muestra se congela (que es lo lógico) pero no se rompe
> nada, y si se vuelve a activar se refresca nuevamente. Tu solución asume
> que varcolorA no cambia de tamaño durante la misma ejecución, lo que es
> razonable.
>
> Si quieres cierra el ticket#242 en el trac incluyendo una descripción
> breve de tu solución, justo como lo que comentabas. Referencia al cambio
> [332] en el svn.
>
> Ánimo,
>
> JoseMaria
> On Sat, 2009-03-28 at 13:02 +0100, Eduardo Perdices wrote:
>> Hola, he creado un ticket nuevo sobre un fallo de segmentación que se
>> produce en ocasiones en opencvdemo, la descripción es esta:
>>
>> "Cuando se desactiva la opción de ver la imagen, en ordenadores con
>> varios núcleos se produce un segmentation fault al liberar la imagen."
>>
>> Mando un parche que en teoría debe arreglar el problema, aunque en mi
>> ordenador no lo he podido comprobar ya que no tengo varios nucleos. Lo
>> que he hecho es que en vez de liberar la imagen y volver a hacer un
>> malloc cada vez que se activa/desactiva la casilla de ver imagen, hago
>> el malloc una sola vez cuando se pide por primera vez la imagen y solo
>> hago el free en el terminate().
>>
>> Saludos.
>> _______________________________________________
>> Jde-developers mailing list
>> Jde-developers en gsyc.es
>> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
> --
> http://gsyc.es/jmplaza
> Universidad Rey Juan Carlos
>
>
>


More information about the Jde-developers mailing list