Re: Accessing previously freed data.

On Thu, 2009-02-26 at 17:59 -0700, Drew Moseley wrote:
> Dan Williams wrote:
> > Is HAL being restarted anywhere in here while NM continues to run?
> Yes it is.  That is where I am looking now.  In the resync_devices()
> routine it seems like the nm_device_finalize is being triggered before
> the udi_removed callback.  I haven't been able to figure out why but
> it looks like the list management may not be correct.  Specifically
> the g_slist_remove_link() calls are passing in the iter pointer rather
> than the iter->data pointer but it looks like it is the iter->data 
> pointer that has been added to the list.  I'm not sure that's relevant
> but that is what I am investigating now.

I looked over the code there again, and it's correct AFAICT.
g_slist_delete_link() in the sync_devices() function should be doing
what its intended to do; it removes one link from the linked list
priv->devices and frees the link.  It doesn't free the data of course,
but that should get correctly unref-ed right below.  And after that, the
device should no longer be in priv->devices at all.  That doesn't mean
there isn't a refcounting bug, but I'm still not quite sure what's
causing the invalid access later on...


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