From: | Srinath Reddy <srinath2133(at)gmail(dot)com> |
---|---|
To: | pgsql-hackers(at)lists(dot)postgresql(dot)org |
Subject: | Re: Postmaster crashed during start |
Date: | 2025-02-26 05:30:55 |
Message-ID: | CAFC+b6o3--zb9GXyh12W0-uM1vN4LgU+sZofdZ3rsA9tVNO6eA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Wed, Feb 26, 2025 at 9:50 AM Srinath Reddy <srinath2133(at)gmail(dot)com> wrote:
>
>
> On Wed, Feb 26, 2025 at 9:23 AM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>
>> Srinath Reddy <srinath2133(at)gmail(dot)com> writes:
>> > when we kill postmaster using kill -9 and start immediately it crashes
>> with
>> >> FATAL: pre-existing shared memory block (key 2495405, ID 360501) is
>> still
>> >> in use
>>
>> "Doctor, it hurts when I do this!"
>>
>> "So don't do that!"
>>
>> This is not a supported way of shutting down the postmaster, and it
>> never will be. Use SIGINT, or SIGQUIT if you are in a desperate
>> hurry and are willing to have the next startup take longer.
>>
> i was actually trying to recreate power outage scenario using
> node->kill9(),node->start() in a custom tap test,then i found this crash.
>
>
>>
>> I think the specific reason you are seeing this is that it takes
>> nonzero time for the postmaster's orphaned child processes to
>> notice that the postmaster is gone and terminate. As long as
>> any of those children remain, the shared memory block will have
>> a nonzero reference count. The new postmaster sees that and
>> refuses to start, for the very sound reason that it risks
>> data corruption if it brings up a new set of worker processes
>> while any of the old ones are still running.
>>
>> regards, tom lane
>>
>
> i am guessing you mean "reference count to shared memory block" means
> shmem_nattach right? i think this will be incremented by 1 when a process
> attached to the shmem segment using shmat() in postgres case its the
> postmaster who attaches during creation of shmem segment and detaches
> during postmaster's on_shmem_exit is called during if it exits properly or
> not dies suddenly (as the case with kill -9) ,during detaching only the
> shmem_nattach will be decremented by 1 ,AFAIK the child processes will get
> to use the shmem segment but never attaches or detaches so they are not
> effecting the shmem_nattach.so as the shmem_nattach is not
> 0 PGSharedMemoryAttach thinks the shmem state is still attached and in use.
>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | vignesh C | 2025-02-26 06:03:54 | Enhances pg_createsubscriber documentation for the -d option. |
Previous Message | Michael Paquier | 2025-02-26 05:27:44 | Re: Fix logging for invalid recovery timeline |