[tarantool-patches] Re: [PATCH] memtx: cancel checkpoint thread at exit
Konstantin Osipov
kostja at tarantool.org
Thu Apr 18 20:24:55 MSK 2019
* Vladimir Davydov <vdavydov.dev at gmail.com> [19/04/18 20:19]:
> On Thu, Apr 18, 2019 at 06:46:54PM +0300, Vladimir Davydov wrote:
> > +static void
> > +checkpoint_cancel(struct checkpoint *ckpt)
> > +{
> > + /*
> > + * Cancel the checkpoint thread if it's running and wait
> > + * for it to terminate so as to eliminate the possibility
> > + * of use-after-free.
> > + */
> > + if (ckpt->cord.id != 0 &&
> > + tt_pthread_cancel(ckpt->cord.id) != ESRCH)
> > + tt_pthread_join(ckpt->cord.id, NULL);
> > + checkpoint_delete(ckpt);
> > +}
>
> Oops, turned out this check isn't quite correct as we don't reset
> cord.id after joining the thread. As a result, we might call
> pthread_cancel on an already joined thread, which leads to a crash
> (caught by Travis CI):
I would reset cord.id instead.
--
Konstantin Osipov, Moscow, Russia, +7 903 626 22 32
http://tarantool.io - www.twitter.com/kostja_osipov
More information about the Tarantool-patches
mailing list