From: | Amul Sul <sulamul(at)gmail(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Kyotaro Horiguchi <horikyota(dot)ntt(at)gmail(dot)com>, Michael Paquier <michael(at)paquier(dot)xyz>, Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>, Noah Misch <noah(at)leadboat(dot)com>, Neha Sharma <neha(dot)sharma(at)enterprisedb(dot)com>, Amit Langote <amitlangote09(at)gmail(dot)com>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: [CLOBBER_CACHE]Server crashed with segfault 11 while executing clusterdb |
Date: | 2021-07-09 13:52:53 |
Message-ID: | CAAJ_b95rwQQE8W2dQP4cGh2qdrjpuF_9MQSzALcJzTLTPG-fBA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Wed, Jul 7, 2021 at 9:44 AM Amul Sul <sulamul(at)gmail(dot)com> wrote:
>
> On Tue, Jul 6, 2021 at 11:06 PM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
> >
> > Amul Sul <sulamul(at)gmail(dot)com> writes:
> > > On Tue, Apr 20, 2021 at 6:59 AM Kyotaro Horiguchi
> > > <horikyota(dot)ntt(at)gmail(dot)com> wrote:
> > >> I don't mind RelationGetSmgr(index)->smgr_rnode alone or
> > >> &variable->member alone and there's not the previous call to
> > >> RelationGetSmgr just above. How about using a temporary variable?
> > >>
> > >> SMgrRelation srel = RelationGetSmgr(index);
> > >> smgrwrite(srel, ...);
> > >> log_newpage(srel->..);
> >
> > > Understood. Used a temporary variable for the place where
> > > RelationGetSmgr() calls are placed too close or in a loop.
> >
> > [ squint... ] Doesn't this risk introducing exactly the sort of
> > cache-clobber hazard we're trying to prevent? That is, the above is
> > not safe unless you are *entirely* certain that there is not and never
> > will be any possibility of a relcache flush before you are done using
> > the temporary variable. Otherwise it can become a dangling pointer.
> >
>
> Yeah, there will a hazard, even if we sure right but cannot guarantee future
> changes in any subroutine that could get call in between.
>
> > The point of the static-inline function idea was to be cheap enough
> > that it isn't worth worrying about this sort of risky optimization.
> > Given that an smgr function is sure to involve some kernel calls,
> > I doubt it's worth sweating over an extra test-and-branch beforehand.
> > So where I was hoping to get to is that smgr objects are *only*
> > referenced by RelationGetSmgr() calls and nobody ever keeps any
> > other pointers to them across any non-smgr operations.
> >
>
> Ok, will revert changes added in the previous version, thanks.
>
Herewith attached version did the same, thanks.
Regards,
Amul
Attachment | Content-Type | Size |
---|---|---|
v4_Add-RelationGetSmgr-inline-function.patch | application/octet-stream | 34.3 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2021-07-09 14:00:34 | Re: [CLOBBER_CACHE]Server crashed with segfault 11 while executing clusterdb |
Previous Message | Tom Lane | 2021-07-09 13:49:40 | Re: Support kerberos authentication for postgres_fdw |