Saturday, October 24, 2009

Encountering Segmentation Fault, Bus Error or No output

When you encounter some of the issues like Segmentation Fault, Bus Error or No output during your serial or parallel run, it is could be due that the user limits are insufficient

Firstly do a ulimit -a and check the actual limits. Here is a sample output
# ulimit -a
core file size                 (blocks, -c) 0

data seg size                 (kbytes, -d) unlimited
scheduling priority         (-e) 0
file size                         (blocks, -f) unlimited
pending signals              (-i) 24574
max locked memory      (kbytes, -l) 64
max memory size          (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size                       (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority           (-r) 0
stack size                     (kbytes, -s) 10240
cpu time                       (seconds, -t) unlimited
max user processes      (-u) 1024
virtual memory             (kbytes, -v) unlimited
file locks                      (-x) unlimited
To solve the issues, you have to look at important parameters like data size, stack size, max memory size, and virtual memory. The parameters should be either unlimited or as big as your total RAM. 

# vim /etc/security/limits.conf
* soft memlock unlimited
* hard memlock unlimited
* soft stack 4194303
* hard stack unlimited

Log-off and Login again ad type # ulimit -a You should see that parameter has been fixed

Conversely, You can also use the configuration file to restrict memory and processes. See blog entry Using /etc/security/limits.conf to restrict processes and memory


No comments: