Thread: BUG #17370: shmem lost on segfault
The following bug has been logged on the website: Bug reference: 17370 Logged by: RekGRpth Email address: rekgrpth@gmail.com PostgreSQL version: 14.1 Operating system: docker alpine Description: In developing my https://github.com/RekGRpth/pg_task I found strange behavior of shared memory segment. I setup shared memory segment and give it to background worker, which I start with default restart interval. See https://github.com/RekGRpth/pg_task/blob/d951723b6e556479f9a3fa960a6b3d1fb8f52164/conf.c#L67-L134 And everything works fine, even if background worker exits on error (if for example I drop needed table task), then it restarts and can access to shared memory segment. See https://github.com/RekGRpth/pg_task/blob/d951723b6e556479f9a3fa960a6b3d1fb8f52164/work.c#L742 But if third other process terminates by segmentation fault, my background worker restarts fine but can not access to shared memory segment. dsm_attach returns NULL What I need to do to solve this problem?
Hi, On Wed, Jan 19, 2022 at 03:05:56AM +0000, PG Bug reporting form wrote: > The following bug has been logged on the website: > > Bug reference: 17370 > Logged by: RekGRpth > Email address: rekgrpth@gmail.com > PostgreSQL version: 14.1 > Operating system: docker alpine > Description: > > In developing my https://github.com/RekGRpth/pg_task I found strange > behavior of shared memory segment. This is not a postgres bug. If you need help with developing an extension you should send a message to -hackers. That being said, in case of unclean shutdown (which happens if a process segfaults), the postmaster will restart and any shared memory will be lost, so I'm assuming that you somehow serialize a handle which isn't valid anymore after a restart, unclean or not.
Ok, thanks. What I should do in this case (postmaster restarts my background worker and shared memory is lost)? When I storage in bgw_extra field - everything is ok (with restarting after segfault), but it size too small. ср, 19 янв. 2022 г. в 14:28, Julien Rouhaud <rjuju123@gmail.com>: > > Hi, > > On Wed, Jan 19, 2022 at 03:05:56AM +0000, PG Bug reporting form wrote: > > The following bug has been logged on the website: > > > > Bug reference: 17370 > > Logged by: RekGRpth > > Email address: rekgrpth@gmail.com > > PostgreSQL version: 14.1 > > Operating system: docker alpine > > Description: > > > > In developing my https://github.com/RekGRpth/pg_task I found strange > > behavior of shared memory segment. > > This is not a postgres bug. If you need help with developing an extension you > should send a message to -hackers. > > That being said, in case of unclean shutdown (which happens if a process > segfaults), the postmaster will restart and any shared memory will be lost, so > I'm assuming that you somehow serialize a handle which isn't valid anymore > after a restart, unclean or not.
Hi, On Wed, Jan 19, 2022 at 02:34:13PM +0500, RekGRpth wrote: > Ok, thanks. > > What I should do in this case (postmaster restarts my background > worker and shared memory is lost)? > When I storage in bgw_extra field - everything is ok (with restarting > after segfault), but it size too small. I don't know, and as I said you should ask on -hackers, ideally with a good description of how everything works or a minimal code to reproduce your problem as it's not really clear right now.