[vlc-devel] [PATCH 1/2] libvlc: deactivate the playlist before destroying the preparser
Rémi Denis-Courmont
remi at remlab.net
Wed Aug 24 19:11:10 CEST 2016
Le keskiviikkona 24. elokuuta 2016, 19.01.45 EEST Thomas Guillem a écrit :
> On Tue, Aug 23, 2016, at 11:32, remi at remlab.net wrote:
> > Hello,
> >
> > Le 23 août 2016 15:45, Thomas Guillem <thomas at gllm.fr> a écrit :
> > > This fixes a use-after-free when the art fetcher was triggering a
> > > callback
> > > registered by the playlist (that was destroyed).
> > >
> > > This partially reverts 17bd88b915188d1659ec46c07aa1efd3745071b5
> > > that is a
> > > revert of 9e9b227443831d8c9798b78122a2194053f2b2f1.
> > >
> > > Fixes #17087
> > > ---
> > > src/libvlc.c | 11 ++++++++---
> > > 1 file changed, 8 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/src/libvlc.c b/src/libvlc.c
> > > index 48c2b8c..8bd736c 100644
> > > --- a/src/libvlc.c
> > > +++ b/src/libvlc.c
> > > @@ -508,6 +508,14 @@ void libvlc_InternalCleanup( libvlc_int_t
> > > *p_libvlc )
> > > {
> > >
> > > libvlc_priv_t *priv = libvlc_priv (p_libvlc);
> > >
> > > + /* Deactivate the playlist before deleting the preparser in
> > >
> > > order to
> > >
> > > + * prevent new preparser requests from the playlist */
> > > + if (priv->playlist)
> > > + playlist_Deactivate(priv->playlist);
> > > +
> > > + if (priv->parser != NULL)
> > > + playlist_preparser_Delete(priv->parser);
> >
> > I think we cannot assume that the preparser won't be used until all
> > interfaces, VLM, Libvlc media players and playlist are all gone. And
> > that seems unwarranted here.
>
> In that case we need to split it up into 1) deactivate playlist 2)
> destroy interfaces (but not the playlist) 3) delete the preparser 4)
> delete the playlist (idea from filip).
I don´t know. I don´t understand the relevance of step (1) and of this patch
to the underlying problem.
--
Rémi Denis-Courmont
http://www.remlab.net/
More information about the vlc-devel
mailing list