Thread: PROC struct
Hi, May I suggest that watiHolder and waitLock pointers in the proc struct in proc.h be changed from direct pointers to SHMEM_OFFSET. They are both shared memory structures in a shared memory structure and it would be more consistent to make these SHMEM_OFFSET. Direct pointers will be a problem if another process which is not the result of a fork tries to attach to the shared memory. The Direct pointers will not be valid for in this case. Thanks, Myron Scott mkscott@sacadia.com
Myron Scott <mscott@sacadia.com> writes: > May I suggest that watiHolder and waitLock pointers > in the proc struct in proc.h be changed from direct > pointers to SHMEM_OFFSET. They are both shared memory > structures in a shared memory structure and it would > be more consistent to make these SHMEM_OFFSET. Direct > pointers will be a problem if another process which is > not the result of a fork tries to attach to the shared memory. I don't really foresee that that's an issue --- any process we might conceivably want to have reading the shmem would be spawned by the postmaster anyway. I've actually been thinking about ripping out the shmem-offset-to-pointer-and-back conversions on the grounds of code simplification, readability, reliability (the compiler cannot detect whether you are casting a reconverted SHMEM_OFFSET to the wrong pointer type), and speed. regards, tom lane
On Mon, 5 Feb 2001, Tom Lane wrote: > Myron Scott <mscott@sacadia.com> writes: > > May I suggest that watiHolder and waitLock pointers > > in the proc struct in proc.h be changed from direct > > pointers to SHMEM_OFFSET. They are both shared memory > > structures in a shared memory structure and it would > > be more consistent to make these SHMEM_OFFSET. Direct > > pointers will be a problem if another process which is > > not the result of a fork tries to attach to the shared memory. > > I don't really foresee that that's an issue --- any process > we might conceivably want to have reading the shmem would be > spawned by the postmaster anyway. I've actually been thinking > about ripping out the shmem-offset-to-pointer-and-back conversions > on the grounds of code simplification, readability, reliability > (the compiler cannot detect whether you are casting a reconverted > SHMEM_OFFSET to the wrong pointer type), and speed. > > regards, tom lane > Thanks for looking into this. I ran into this while working on a threaded version of Postgres. I start a postmaster so I can use psql and then start the multithreaded Postgres which attaches to the shared mem created by the postmaster. This is not a big deal but maybe a note in the header would be helpful to future tinkerers. Thanks, Myron Scott mkscott@sacadia.com