From: Cedric B. <ced...@fr...> - 2007-08-02 16:21:32
Attachments:
evas-gl.diff
|
Hi, Caro noticed a bug with gl_common. It segv when doing some gradient stuff. I did some more testing on Linux with valgrind on evas_gl_test. It did some wrong write before having malloc going crazy. Here is the call stack : ==30483== Invalid write of size 4 ==30483== at 0x4E7218B: evas_common_gradient_fill_angle_set (evas_gradient_main.c:366) ==30483== by 0x4E3F594: evas_object_gradient_render_pre (evas_object_gradient.c:951) ==30483== by 0x4E5575F: evas_render_updates_internal (evas_render.c:210) ==30483== by 0x40C8C3: main (evas_gl_x11_main.c:135) ==30483== Address 0x9CD98DC is 4 bytes before a block of size 65,536 alloc'd ==30483== at 0x4C20A69: malloc (vg_replace_malloc.c:149) ==30483== by 0x4083F14: (within /usr/lib/libGL.so.1.0.9755) If I remove "gr->fill.angle = angle;" in "evas_common_gradient_fill_angle_set" from "evas_gradient_main.c", it will not crach but I still get sometime a valgrind warning: ==4500== Invalid read of size 4 ==4500== at 0x4E8EB20: evas_common_scale_clip_a8_span (evas_scale_span.c:399) ==4500== by 0x4E70FBA: evas_common_gradient_map (evas_gradient_main.c:707) ==4500== by 0x83B8EA6: evas_gl_common_gradient_render_pre (evas_gl_gradient.c:156) ==4500== by 0x4E3F901: evas_object_gradient_render_pre (evas_object_gradient.c:978) ==4500== by 0x4E55729: evas_render_updates_internal (evas_render.c:175) ==4500== by 0x40C8C3: main (evas_gl_x11_main.c:135) I did test with evas_software_x11_test, and valgrind still complain about the second error, but the first error never show up. Attached a patch from caro that solve some issue with the new cache system that I did miss. Cedric |
From: Cedric B. <ced...@fr...> - 2007-08-03 12:07:14
|
On Thursday 02 August 2007 18:23:00 Cedric BAIL wrote: > Caro noticed a bug with gl_common. It segv when doing some gradient stuff. > I did some more testing on Linux with valgrind on evas_gl_test. It did some > wrong write before having malloc going crazy. Here is the call stack : Ok, I found the source of this error. It's in gl_x11 engine in fact. In evas_engine.c at line 424, evas_common_gradient_fill_angle_set is called instead of evas_gl_common_gradient_fill_angle_set. That's solve the segv. But we have still some issue with gradient and gl. When it is resized, I can see some garbage around. I don't know exactly why, but I suspect the surface is not correctly initialized or copied in the GL texture during the gradient draw. But as I don't really understand the GL code, I don't know how to fix the issue. Cedric |
From: Carsten H. (T. R. <ra...@ra...> - 2007-08-04 07:19:43
|
On Fri, 3 Aug 2007 13:52:22 +0200 Cedric BAIL <ced...@fr...> babbled: > On Thursday 02 August 2007 18:23:00 Cedric BAIL wrote: > > Caro noticed a bug with gl_common. It segv when doing some gradient > > stuff. I did some more testing on Linux with valgrind on evas_gl_test. It > > did some wrong write before having malloc going crazy. Here is the call > > stack : > > Ok, I found the source of this error. It's in gl_x11 engine in fact. In > evas_engine.c at line 424, evas_common_gradient_fill_angle_set is called > instead of evas_gl_common_gradient_fill_angle_set. That's solve the segv. > > But we have still some issue with gradient and gl. When it is > resized, I can see some garbage around. I don't know exactly why, but I > suspect the surface is not correctly initialized or copied in the GL texture > during the gradient draw. But as I don't really understand the GL code, I > don't know how to fix the issue. do you have an example of this i can use to test with? > Cedric > > ------------------------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. > Still grepping through log files to find problems? Stop. > Now Search log events and configuration files using AJAX and a browser. > Download your FREE copy of Splunk now >> http://get.splunk.com/ > _______________________________________________ > enlightenment-devel mailing list > enl...@li... > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) ra...@ra... 裸好多 Tokyo, Japan (東京 日本) |
From: Cedric B. <ced...@fr...> - 2007-08-06 18:34:43
|
On Saturday 04 August 2007 09:03:45 Carsten Haitzler wrote: > On Fri, 3 Aug 2007 13:52:22 +0200 Cedric BAIL <ced...@fr...> babbled: > > On Thursday 02 August 2007 18:23:00 Cedric BAIL wrote: > > > Caro noticed a bug with gl_common. It segv when doing some gradient > > > stuff. I did some more testing on Linux with valgrind on evas_gl_test. > > > It did some wrong write before having malloc going crazy. Here is the > > > call stack : > > Ok, I found the source of this error. It's in gl_x11 engine in fact. In > > evas_engine.c at line 424, evas_common_gradient_fill_angle_set is called > > instead of evas_gl_common_gradient_fill_angle_set. That's solve the > > segv. > > But we have still some issue with gradient and gl. When it is > > resized, I can see some garbage around. I don't know exactly why, but I > > suspect the surface is not correctly initialized or copied in the GL > > texture during the gradient draw. But as I don't really understand the GL > > code, I don't know how to fix the issue. > do you have an example of this i can use to test with? I just came back from the weekend and you already fixed all the bug. All the previous garbage are gone. I only noticed something strange with test 33 of evas_gl_test. When you cover the window, some part of the gradient became black (like on the picture attached). Cedric |
From: Cedric B. <ced...@fr...> - 2007-08-06 18:43:22
|
On Monday 06 August 2007 20:36:34 Cedric BAIL wrote: > On Saturday 04 August 2007 09:03:45 Carsten Haitzler wrote: > > On Fri, 3 Aug 2007 13:52:22 +0200 Cedric BAIL <ced...@fr...> babbled: > > > On Thursday 02 August 2007 18:23:00 Cedric BAIL wrote: > > > > Caro noticed a bug with gl_common. It segv when doing some gradient > > > > stuff. I did some more testing on Linux with valgrind on > > > > evas_gl_test. It did some wrong write before having malloc going > > > > crazy. Here is the call stack : > > > > > > Ok, I found the source of this error. It's in gl_x11 engine in fact. In > > > evas_engine.c at line 424, evas_common_gradient_fill_angle_set is > > > called instead of evas_gl_common_gradient_fill_angle_set. That's solve > > > the segv. > > > > > > But we have still some issue with gradient and gl. When it is > > > resized, I can see some garbage around. I don't know exactly why, but I > > > suspect the surface is not correctly initialized or copied in the GL > > > texture during the gradient draw. But as I don't really understand the > > > GL code, I don't know how to fix the issue. > > > > do you have an example of this i can use to test with? > > I just came back from the weekend and you already fixed all the bug. All > the previous garbage are gone. > I only noticed something strange with test 33 of evas_gl_test. When you > cover the window, some part of the gradient became black (like on the > picture attached). Hum, the picture didn't get to the mailing-list, you can see it at http://chac.le-poulpe.net/~cedric/efl/gradient.png . Cedric |