[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [E-devel] segv in e_app.c

Aleksej Struk wrote:
On Sun, Jun 11, 2006 at 09:12:55AM +0200, Morten Nilsen wrote:
David Stevenson wrote:

I had a segv when dragging an Eterm from one desk to another - not sure
exactly how to reproduce it, but the bt shows that the e_app "win_name" got
a bogus value from somewhere. There were some changes in the source here a
few days back.

#8  0x080ab892 in e_util_glob_match (str=0x822deb0 "Eterm",
   glob=0x1d <Address 0x1d out of bounds>) at e_utils.c:135
#9  0x080a7eb4 in e_app_window_name_class_title_role_find (
   name=0x822deb0 "Eterm", class=0x81bffc0 "Eterm",
   title=0x82347a8 "Eterm-0.9.2:", role=0x0) at e_apps.c:909
909                       if ((e_util_glob_match(name, a->win_name)) &&
seems quite clear that something is polluting the win_name property of the e_app, which through a grep appears to only be set using evas_stringshare_add..

I've check the source for this property, and found that it is set via
evas_stringshare_add and removed via evas_stringshare_del. But
in function _e_app_copy, these properties are copied via simple =.
So, maybe here is the problem ?

The reference should be correct. A copy should reference as much mem as it can from it's parent, and an owner should newer be freed before its copy. But there might be something wrong there.

But this code has worked for _ages_ so I don't think it's the culprit.