|
Message-ID: <20190925171905.GW9017@brightrain.aerifal.cx> Date: Wed, 25 Sep 2019 13:19:05 -0400 From: Rich Felker <dalias@...c.org> To: musl@...ts.openwall.com Cc: changdiankang <changdiankang@...wei.com> Subject: Re: [PATCH] time: Fix bug in timer_create On Tue, Sep 24, 2019 at 11:16:41AM +0000, changdiankang wrote: > time: Fix bug in timer_create > > When create a SIGEV_THREAD timer, in helper thread "start", > "id" is assigned with self->timer_id immediately after pthread_create. > But the real timer_id is assigned to self->timer_id after SYS_timer_create. > So "id" in "start" always be 0, and timer_delete will always fail. > Put assignement of "id" after pthread_barrier_wait can fix this bug. > > Signed-off-by: Chang Diankang <changdiankang@...wei.com<mailto:changdiankang@...wei.com>> > > diff --git a/src/time/timer_create.c b/src/time/timer_create.c > index c5e40a1..4172b9e 100644 > --- a/src/time/timer_create.c > +++ b/src/time/timer_create.c > @@ -48,13 +48,14 @@ static void *start(void *arg) > { > pthread_t self = __pthread_self(); > struct start_args *args = arg; > - int id = self->timer_id; > + int id; > jmp_buf jb; > > void (*notify)(union sigval) = args->sev->sigev_notify_function; > union sigval val = args->sev->sigev_value; > > pthread_barrier_wait(&args->b); > + id = self->timer_id; > for (;;) { > siginfo_t si; > while (sigwaitinfo(SIGTIMER_SET, &si) < 0); > Thanks! In the future, please send patches as attachments rather than inline since it looks like your mailer software is corrupting the patch (converting tabs to spaces, maybe other problems too). I can apply it manually though. Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.