hello,
Under AIX, the virtual memory is divided in segments.
When a 32 bit process is running, he can access 16 segments of 256 MB, which is 4 GB of memory. These segments have an id from 0x0 to 0xF, and some of them have specific purpose : segment 0 is where the kernel code is accessed from the process, so for example if a program fails and that the faulting adress begins with 0x0...., it means that some kernel code was executed when the process stopped.
When a process asks for some memory, it use the malloc function to request x MB of memory, and this memory is allocated from a pool of segments which is called the data area of the process. By default, a process can not access more than one segment, therefore if no special action is taken, a process can not ask more than 256 MB. If it tries to ask more memory, he will be killed by the kernel with a signal 11 (the other segments are mostly used to store shared libraries code and data).
AIX documentation is sometimes confusing about the maximum number of segments a process can have (8,10, 12 ?? not clear, it changes with every version), but if you want a process to be able to have a data area of (for example) 1 GB, before launching the process you type :
export LDR_CNTRL=MAXDATA=0x4000000
which means the processES you will launch after this command will have 4 segments of 256 MB for its data area. There are other ways than this environment variable to obtain the same result (compile a programm with the -bmaxdata option for example).
Note : when you add some segments to the data area, the same amount of segments will be unavailable for share libraries.
If you are interested in the subject, look in AIX documentaiton with keywords "user process model", or redbook sg24-5674 (C/C++ applications development under AIX, from
To summarize, your process will mostly receive signal 11 when it tries to allocate more memory then the environment allows him to have. My guess is there are probably several ways to make segment violations than allocating more memory that allowed, so my explanations are probably not complete.
regards,