On Tue, Feb 18, 2014 at 05:50:19PM +0100, Francisco Jerez wrote: > Tom Stellard <t...@stellard.net> writes: > > > From: Tom Stellard <thomas.stell...@amd.com> > > > > After pipe_loader_release() is called, if any of the pipe_* objects > > try to call into the gallium API the application will segfault. > > > > The only time devices are deleted is when the global _clover_platform > > object is deleted by the static destructor. However, since application > > objects that are deleted by the static destructor *after* > > _clover_platform might try to make a CL API calls from their destructor, > > it is never safe to call pipe_loader_release(). > > Please have a look at the clover-internal-ref-counting branch [1] of my > mesa tree, it should fix a number of memory management-related bugs, > possibly the one you've encountered too, without the negative side > effects of dropping the call to pipe_loader_release(). >
I came across one regression, but I'm still looking into whether or not it is a bug in clover or an application bug. -Tom > Thanks. > > [1] > http://cgit.freedesktop.org/~currojerez/mesa/log/?h=clover-internal-ref-counting > > > --- > > src/gallium/state_trackers/clover/core/device.cpp | 2 -- > > 1 file changed, 2 deletions(-) > > > > diff --git a/src/gallium/state_trackers/clover/core/device.cpp > > b/src/gallium/state_trackers/clover/core/device.cpp > > index 76a49d0..2290366 100644 > > --- a/src/gallium/state_trackers/clover/core/device.cpp > > +++ b/src/gallium/state_trackers/clover/core/device.cpp > > @@ -48,8 +48,6 @@ device::device(clover::platform &platform, > > pipe_loader_device *ldev) : > > device::~device() { > > if (pipe) > > pipe->destroy(pipe); > > - if (ldev) > > - pipe_loader_release(&ldev, 1); > > } > > > > bool > > -- > > 1.8.1.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev