On Thu, 30 Jan 2014 10:32:26 +0900 Carsten Haitzler (The Rasterman) <ras...@rasterman.com> wrote:
> On Wed, 29 Jan 2014 20:23:46 -0500 Michael Blumenkrantz > <michael.blumenkra...@gmail.com> said: > > > On Wed, 29 Jan 2014 16:01:10 -0800 > > Carsten Haitzler <ras...@rasterman.com> wrote: > > > > > raster pushed a commit to branch master. > > > > > > http://git.enlightenment.org/core/enlightenment.git/commit/?id=83397e1bde51830016e9a0f8e6482fc91bb4c50c > > > > > > commit 83397e1bde51830016e9a0f8e6482fc91bb4c50c > > > Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com> > > > Date: Thu Jan 30 08:55:28 2014 +0900 > > > > > > fix segv where comp_data is null but still accessed > > > > > > it seems i have an override-redirect window just off the bottom-right > > > of my screen - i think its the scim input panel status. what happens > > > is it is "managed" by comp but then deleted (_e_comp_x_hook_client_del > > > called), BUT _e_comp_x_object_add is called with a deferred event for > > > that client to add it again (likely this is a race) which finds he > > > client in a state of not having comp_data as the E_FREE in > > > _e_comp_x_hook_client_del() frees it and sets it to NULL. move the > > > comp_data free to the actual client free (which is the last time a > > > client is valid at all) solves this. > > > --- > > > src/bin/e_client.c | 1 + > > > src/bin/e_comp_x.c | 1 - > > > 2 files changed, 1 insertion(+), 1 deletion(-) > > > > > > > I guess I'll have to take a look at this. Freeing comp_data in > > _e_client_free > > () is wrong in all cases since it's compositor-specific and guarantees that > > data will leak. > > eh? how does it guarantee it will leak? a client free frees the comp_data - > you'd otherwise have to never free a client to never free the comp data set ON > the client itself. so yes - it's a leak if clients are never freed... whic is > a > leak in and of itself. > > simply - it's not a leak now. sure - it's not freed int he same domain where > it's allocated - that is true, but the problem is that if that is left there > it > is ACCESSED in the same domain after being freed - the client is still > attached > to an object, but the comp data has been freed for the client. so the logical > options are to enusre the objects are deleted at the point the comp data is > freed OR defer the comp data free until the client is actually freed/cleaned > up. i chose option 2 since it had no leaks and was the least amount of > changes. > I think you are misunderstanding what I'm saying. The comp_data struct itself won't leak, but everything in it will leak since this is opaque. Freeing it there is a poor workaround to fixing the underlying bug. I just hit this crash myself, and I'm testing a fix for it currently. So far it seems to be functioning well, so I'll likely have it up soon. ------------------------------------------------------------------------------ WatchGuard Dimension instantly turns raw network data into actionable security intelligence. It gives you real-time visual feedback on key security issues and trends. Skip the complicated setup - simply import a virtual appliance and go from zero to informed in seconds. http://pubads.g.doubleclick.net/gampad/clk?id=123612991&iu=/4140/ostg.clktrk _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel