Just new in IBM and AIX.
Can anybody explain to me signal 11 means? I'm encountering this in our system frequently. How can I go about this thing?
Thanks.
hi screwloose,
thanks a lot for replying. can you tell me what it is all about? I mean, why it's happening. Actually, the case is bothering me now. Our system is behaving abnormally these few days. It's frequently shutting down. So, when I look at the log of our application. I always see this "Caught by Signal 11" message. Is it related to the memory, or any resources in our system?
I would first run "diag" on the memory and check errpt for HW errors using "errpt" command.
If these show no HW issues - possibly you have some bug in the application you are running that causes this by bad memory handling.
Please post the output of "errpt -30" taken around the time of this error occurance.
Thanks
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.
Hi guys,
Thanks a lot for all your replies. I'm leraning from you.
By the way, is there a tool I can use to diagnose it? I want to know exactly what process triggers this error. want to know if it is on the application side. There 200 users concurrently logging daily so I need to find out where we have the botteneck.
where do you see theses messages ? they are usually issued on the stderr of the running process, and some informations might be left in AIX logging daemon (errpt -a | more to display it).
hi letis,
I see it on the log file of the application. it identifies one services that is stopped. it says that it is caught by signal 11.
thanks and regards.
This is an excerpt from the log file.
08/05 12:19:16.515 0 0 27120
/gemsrc/gembuild/v61/ref/gm_brk_unix.c:53: SEVERE-ERROR: Caught signal 11
08/05 13:06:49.642 67 0 75376
/gemsrc/gembuild/v61/ref/gem_broker.c:430: ERROR: Broker has ended: Error returned by GMIPC
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.