From: Eric Wong via lttng-dev <lttng-dev@lists.lttng.org>
To: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: lttng-dev@lists.lttng.org
Subject: Re: [lttng-dev] URCU background threads vs signalfd
Date: Fri, 23 Sep 2022 22:05:10 +0000 [thread overview]
Message-ID: <20220923220510.M990534@dcvr> (raw)
In-Reply-To: <6db30f66-8237-fef3-d92a-2e36be9efdf6@efficios.com>
Mathieu Desnoyers <mathieu.desnoyers@efficios.com> wrote:
> On 2022-09-23 13:55, Eric Wong wrote:
> > Mathieu Desnoyers <mathieu.desnoyers@efficios.com> wrote:
> > > On 2022-09-22 05:15, Eric Wong via lttng-dev wrote:
> > > > Hello, I'm using urcu-bp + rculfhash + call_rcu to implement
> > > > malloc instrumentation (via LD_PRELOAD) on an existing
> > > > single-threaded Perl codebase which uses Linux signalfd.
> > > >
> > > > signalfd depends on signals being blocked in all threads
> > > > of the process, otherwise threads with unblocked signals
> > > > can receive them and starve the signalfd.
> > > >
> > > > While some threads in URCU do block signals (e.g. workqueue
> > > > worker for rculfhash), the call_rcu thread and rculfhash
> > > > partition_resize_helper threads do not...
> > > >
> > > > Should all threads URCU creates block signals (aside from SIGRCU)?
> > >
> > > Yes, I think you are right. The SIGRCU signal is only needed for the
> > > urcu-signal flavor though.
> > >
> > > Would you like to submit a patch ?
> >
> > Sure.
> >
> > Is there a way to detect at runtime when urcu-signal is in use
> > so SIGRCU (SIGUSR1) doesn't get unblocked when using other flavors?
> >
> > I actually use SIGUSR1 in my signalfd-using codebase.
> >
> > I also want to remove cds_lfht_worker_init entirely since it's racy.
> > Signal blocking needs to be done in the parent before pthread_create
> > to avoid a window where the child has unblocked signals.
> >
> > Thanks. Anyways, this is my work-in-progress:
> >
>
> Perhaps with this on top of your wip patch ? The idea is to always block all
> signals before creating threads, and only unblock SIGRCU when registering a
> urcu-signal thread. (compile-tested only)
Thanks, that makes sense. It passes: make check short_bench
My original signalfd + urcu-bp case works well, too, with my
constructor workarounds reverted. (I ported our patches ported to
to 0.10.2 for Debian buster (oldstable)).
I don't know if the existing test coverage is sufficient,
though. Waiting on regtest...
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
next prev parent reply other threads:[~2022-09-23 22:05 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-22 9:15 [lttng-dev] URCU background threads vs signalfd Eric Wong via lttng-dev
2022-09-23 15:57 ` Mathieu Desnoyers via lttng-dev
2022-09-23 17:55 ` Eric Wong via lttng-dev
2022-09-23 18:24 ` Mathieu Desnoyers via lttng-dev
2022-09-23 22:05 ` Eric Wong via lttng-dev [this message]
2022-09-26 12:51 ` Mathieu Desnoyers via lttng-dev
2022-09-26 19:58 ` Eric Wong via lttng-dev
2022-09-26 20:12 ` Mathieu Desnoyers via lttng-dev
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220923220510.M990534@dcvr \
--to=lttng-dev@lists.lttng.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=normalperson@yhbt.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.