From: Alexander Turenko <alexander.turenko@tarantool.org> To: Cyrill Gorcunov <gorcunov@gmail.com> Cc: tml <tarantool-patches@dev.tarantool.org> Subject: Re: [Tarantool-patches] [PATCH v5 2/2] fiber: leak slab if unable to bring prots back Date: Thu, 6 Feb 2020 14:10:42 +0300 [thread overview] Message-ID: <20200206111042.hubzqcmmhkncqvrh@tkn_work_nb> (raw) In-Reply-To: <20200205220624.8764-3-gorcunov@gmail.com> Okay except one style comment. WBR, Alexander TUrenko. On Thu, Feb 06, 2020 at 01:06:24AM +0300, Cyrill Gorcunov wrote: > In case if we unable to revert guard page back to > read|write we should never use such slab again. > > Initially I thought of just put panic here and > exit but it is too destructive. I think better > print an error and continue. If node admin ignore I agree. > this message then one moment at future there won't > be slab left for use and creating new fibers get > prohibited. > > In future (hopefully near one) we plan to drop > guard pages to prevent VMA fracturing and use > stack marks instead. > > Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com> > --- > src/lib/core/fiber.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/src/lib/core/fiber.c b/src/lib/core/fiber.c > index 57e4cb6ef..5298541d4 100644 > --- a/src/lib/core/fiber.c > +++ b/src/lib/core/fiber.c > @@ -1055,15 +1055,21 @@ fiber_stack_destroy(struct fiber *fiber, struct slab_cache *slabc) > * to setup the original protection back in > * background. > * > + * For now lets keep such slab referenced and > + * leaked: if mprotect failed we must not allow > + * to reuse such slab with PROT_NONE'ed page > + * inside. > + * > * Note that in case if we're called from > * fiber_stack_create() the @mprotect_flags is > * the same as the slab been created with, so > * calling mprotect for VMA with same flags > * won't fail. > */ > - diag_log(); > - } > - slab_put(slabc, fiber->stack_slab); > + say_syserror("fiber: Can't put guard page to slab. " > + "Leak %zu bytes", (size_t)fiber->stack_size); > + } else > + slab_put(slabc, fiber->stack_slab); Usual way (AFAIK) is to use braces around both branches or neither of them. Our code style mentions it, see [1] (from words 'Do not unnecessarily use braces'). AFAIS there are exceptions across our code, but rules are rules :) [1]: https://www.tarantool.io/en/doc/1.10/dev_guide/c_style_guide/ > } > } > > -- > 2.20.1 >
next prev parent reply other threads:[~2020-02-06 11:10 UTC|newest] Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-02-05 22:06 [Tarantool-patches] [PATCH v5 0/2] fiber: Handle stack madvise/mprotect errors Cyrill Gorcunov 2020-02-05 22:06 ` [Tarantool-patches] [PATCH v5 1/2] fiber: use diag_ logger in fiber_madvise/mprotect failures Cyrill Gorcunov 2020-02-06 11:10 ` Alexander Turenko 2020-02-05 22:06 ` [Tarantool-patches] [PATCH v5 2/2] fiber: leak slab if unable to bring prots back Cyrill Gorcunov 2020-02-06 11:10 ` Alexander Turenko [this message] 2020-02-06 11:20 ` [Tarantool-patches] [PATCH v5 0/2] fiber: Handle stack madvise/mprotect errors Alexander Turenko
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=20200206111042.hubzqcmmhkncqvrh@tkn_work_nb \ --to=alexander.turenko@tarantool.org \ --cc=gorcunov@gmail.com \ --cc=tarantool-patches@dev.tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH v5 2/2] fiber: leak slab if unable to bring prots back' \ /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
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox