On Sun, Feb 24, 2019 at 11:53 PM Kyotaro HORIGUCHI <horiguchi.kyot...@lab.ntt.co.jp> wrote: > The two aboves are fixed in the attached v17.
Andres just drew my attention to patch 0004 in this series, which is definitely not OK. That patch allows the postmaster to use dynamic shared memory, claiming: "Shared memory baesd stats collector needs it to work on postmaster and no problem found to do that. Just allow it." But if you just look a little further down in the code from where that assertion is located, you'll find this: /* Lock the control segment so we can register the new segment. */ LWLockAcquire(DynamicSharedMemoryControlLock, LW_EXCLUSIVE); It is a well-established principle that the postmaster must not acquire any locks, because if it did, a corrupted shared memory segment could take down not only individual backends but the postmaster as well. So this is entirely not OK in the postmaster. I think there might be other reasons as well why this is not OK that aren't occurring to me at the moment, but that one is enough by itself. But even if for some reason that were OK, I'm pretty sure that any design that involves the postmaster interacting with the data stored in shared memory by the stats collector is an extremely bad idea. Again, the postmaster is supposed to have as little interaction with shared memory as possible, precisely so that it is doesn't crash and burn when some other process corrupts shared memory. Dynamic shared memory is included in that. So, really, the LWLock here is just the tip of the iceberg: the postmaster not only CAN'T safely run this code, but it shouldn't WANT to do so. And I'm kind of baffled that it does. I haven't looked at the other patches, but it seems to me that, while a shared-memory stats collector is a good idea in general to avoid the I/O and CPU costs of with reading and writing temporary files, I don't see why the postmaster would need to be involved in any of that. Whatever the reason, though, I'm pretty sure that's GOT to be changed for this patch set to have any chance of being accepted. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company