Re: initializing shared memory
Posted in 1996
In article <Dy5noo.CsH@cix.compulink.co.uk>, "\\"Malcolm Weallans\\"" <onlinedbc@cix.compulink.co.uk> writes >> Gene Terry Sanford <tsanford@csti-md.com> wrote: >> >> :We are runnning informix 4.1 on SCO OpenSever 5.02. >> :When we run tbinit to initialize shared memory we get >> :the following error: >> >> : tbinit: shmat[EINVAL][22]: shared memory base address >> : illegal using 0x80480000, needs 0x80000000 >> : tbinit: fatal error in shared memory creation. >> >> :Our tbconfig file has SHMBASE = 0x80400000 >> :Anyone have any idea what the problem is. It sounds like the >> :shared memory base address for SCO needs to be changed. >Have you tried modifying SHMBASE to Ox80000000? > >I have installed a number of SCO UNIX systems at different levels and >found that to be necessary. But don't ask me why? > > >Malcolm Weallans >Online Database Consultancy >Phone 01628-72154 >Fax 01628-37463 >CIX - onlinedbc It is the address that each VP uses to attach the first segment of shared memory to it's own virtual address space. That is the address to which it maps the first segment of shared memory. This needs to be set such that is does not collide with a) Text segments which store code. b) Data segments which store static/global segments c) The stack segment (which can grow with the stack as nested function are called). d) Other data segments where the heap is stored which grow as memory is malloc'ed. Different UNIX's map a)-d) at different address and so different SHMBASE's are needed to avoid collisions of memory segments. Note some UNIX's support a value of 0 which means the UNIX kernel will choose the correct value automatically. Clearly SCO is not one of those. -- David Williams