On Tue, 22 Sep 2015 10:08:46 -0700 Mike Blumenkrantz <[email protected]> said:
the crash is back again now. same backtraces, same issue. not fixed. please put back my refcounting as it fixes things to not crash. until you actually find the REAL root cause... as i said before - i identified that mb->m is pointing to junk. it obviously is being freed too soon. refcounting is a standard way to fix things - keep them around as long as they are referenced. i hit this all the time now (the crash). > discomfitor pushed a commit to branch master. > > http://git.enlightenment.org/core/enlightenment.git/commit/?id=2373b69c61d7d6ab74675a4facff54601831ce9a > > commit 2373b69c61d7d6ab74675a4facff54601831ce9a > Author: Mike Blumenkrantz <[email protected]> > Date: Tue Sep 22 12:54:10 2015 -0400 > > Revert "Revert "Revert "deskmirror - fix dangling reference to mirror by > refcounting it""" > This reverts commit 6bef668a8fb37104f1e9e4bb1bb0dd379cb68ef5. > --- > src/bin/e_deskmirror.c | 23 +---------------------- > 1 file changed, 1 insertion(+), 22 deletions(-) > > diff --git a/src/bin/e_deskmirror.c b/src/bin/e_deskmirror.c > index 4abc0b3..3efe066 100644 > --- a/src/bin/e_deskmirror.c > +++ b/src/bin/e_deskmirror.c > @@ -41,7 +41,6 @@ typedef struct Mirror > Evas_Object *comp_object; > Evas_Object *mirror; > int x, y, w, h; > - int ref; > Eina_Bool added : 1; > } Mirror; > > @@ -111,20 +110,6 @@ _mirror_scale_set(Mirror *m, float sc) > } > > static void > -_mirror_ref(Mirror *m) > -{ > - m->ref++; > -} > - > -static void > -_mirror_unref(Mirror *m) > -{ > - m->ref--; > - if (m->ref > 0) return; > - free(m); > -} > - > -static void > _e_deskmirror_smart_reconfigure(E_Smart_Data *sd) > { > e_layout_freeze(sd->layout); > @@ -352,10 +337,7 @@ _mirror_client_smart_del(Evas_Object *obj) > evas_object_smart_callback_del_full(mb->m->ec->frame, > "shadow_change", _mirror_client_shadow_change, mb->frame); } > evas_object_del(mb->frame); > - mb->frame = NULL; > evas_object_del(mb->mirror); > - mb->mirror = NULL; > - _mirror_unref(mb->m); > free(mb); > } > > @@ -492,13 +474,12 @@ _e_deskmirror_mirror_del_hash(Mirror *m) > evas_object_smart_callback_del_full(m->comp_object, "frame_recalc_done", > _e_deskmirror_mirror_frame_recalc_cb, m); evas_object_event_callback_del_full > (m->comp_object, EVAS_CALLBACK_DEL, _e_deskmirror_mirror_del_cb, m); > evas_object_del(m->mirror); > - m->mirror = NULL; > evas_object_event_callback_del_full(m->comp_object, EVAS_CALLBACK_SHOW, > (Evas_Object_Event_Cb)_comp_object_show, m); > evas_object_event_callback_del_full(m->comp_object, EVAS_CALLBACK_HIDE, > (Evas_Object_Event_Cb)_comp_object_hide, m); > evas_object_event_callback_del_full(m->comp_object, EVAS_CALLBACK_RESTACK, > (Evas_Object_Event_Cb)_comp_object_stack, m); > evas_object_event_callback_del_full(m->comp_object, EVAS_CALLBACK_RESIZE, > (Evas_Object_Event_Cb)_comp_object_configure, m); > evas_object_event_callback_del_full(m->comp_object, EVAS_CALLBACK_MOVE, > (Evas_Object_Event_Cb)_comp_object_configure, m); > - _mirror_unref(m); > + free(m); > } > > static Evas_Object * > @@ -511,7 +492,6 @@ _mirror_client_new(Mirror *m) > o = evas_object_smart_add(m->sd->e, _mirror_client_smart); > mb = evas_object_smart_data_get(o); > mb->m = m; > - _mirror_ref(m); > mb->frame = edje_object_add(m->sd->e); > evas_object_name_set(mb->frame, "mirror_border"); > _mirror_client_theme_setup(mb, mb->frame); > @@ -676,7 +656,6 @@ _e_deskmirror_mirror_add(E_Smart_Data *sd, Evas_Object > *obj) m->ec = ec; > m->sd = sd; > m->mirror = o; > - m->ref = 1; > evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW, > (Evas_Object_Event_Cb)_comp_object_show, m); evas_object_event_callback_add > (obj, EVAS_CALLBACK_HIDE, (Evas_Object_Event_Cb)_comp_object_hide, m); > evas_object_event_callback_add(obj, EVAS_CALLBACK_RESTACK, > (Evas_Object_Event_Cb)_comp_object_stack, m); > > -- > > -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) [email protected] ------------------------------------------------------------------------------ Monitor Your Dynamic Infrastructure at Any Scale With Datadog! Get real-time metrics from all of your servers, apps and tools in one place. SourceForge users - Click here to start your Free Trial of Datadog now! http://pubads.g.doubleclick.net/gampad/clk?id=241902991&iu=/4140 _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
