KB#00202-Installing shared memory and semaphores
Installing shared memory and semaphores
Q: While trying to install BBx PROGRESSION/4 on an NCR Tower, I received the following error message:
./install: 143 bad system call - core dump
It was right after entering the activation key and serial number. What could be wrong?
A: BBx PROGRESSION/4 needs shared memory and semaphores configured on all Unix machines. Your system documentation should have instructions for this.
Most NCR Towers do not come automatically set up for shared memory. To set up shared memory on the tower, run the va (visual administrator) in single-user mode; select the Configuration Menu option, and then the kernel option. There are two items in this sub-menu for shared memory and semaphores that can be configured from here. Normally, you can accept the defaults. You will be required to rebuild the kernel.
On some other systems (not NCR), shared memory and semaphores will already be installed, but a kernel parameter may be set too low. On some 68020 processor systems, the default for the kernel parameter SHMBRK is too small. SHMBRK, measured in 4K pages, sets the maximum gap between the top of the data segment and the bottom of shared memory. If it is set too low, BBx is not able to allocate any additional memory during execution other than what was originally allocated on startup.
On most Unix systems, the operating system will set the boundaries for the shared memory at the outer limit of available memory. This leaves a large gap between the data segment and the shared memory, which allows the processes to request (malloc) additional memory as needed. Because the default on some systems is so small, this gap is not large enough to allow processes to request additional memory.
We have added (only on the systems known to have this problem) the BBx command line option (-z<MEM>). This option allows the user to set the amount of memory to pre-allocate between BBx and the shared memory allocation. This temporary BBx workaround will look to the system as though BBx is taking up more memory than usual.
The permanent fix is to reconfigure the kernel to increase the size of SHMBRK; the default is 8. This value should at least be doubled; however, you should take care not to set the value too high. SHMBRK should be high enough so that the shared memory block starts above the maximum memory required for a BBx process, but does not exceed the maximum memory
allowed for each process. This maximum memory amount is controlled by the OS, and is a configurable kernel parameter on many systems.
The -z<MEM> option pre-allocates <MEM> bytes of data before BBx does any shared memory initialization. The default on these systems for <MEM> is 65536 bytes (64K). This is a reasonable workspace size. <MEM> should be set at least as high as the maximum BBx workspace size. If your software uses windows or global strings, you'll need to increase <MEM> to allow for them.
To summarize, the user must do one of two things:
Start bbx4 using -z<MEM> where <MEM> (measured in bytes) is at least the size of <MEM> in -m<MEM> (measured in pages). For example:
$ bbx4 -z256000 -m255
Reconfigure the kernel parameter SHMBRK, which is found in /usr/sys/system and /etc/master, to specify the number of 4K pages above the data segment with which to start shared memory addresses.
Last Modified: 12/29/1997 Product: BBxPROGRESSION/4 Operating System: Unix OS Error: 143
BASIS structures five components of their technology into the BBx Generations.