Fork: Resource temporarily unavailable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Fork: Resource temporarily unavailable
# 1  
Old 05-07-2013
Fork: Resource temporarily unavailable

Hi friends,

Working on a linux X86-64 bit system, I suddenly started getting this error (mentioned in subject) from various scripts.

I googled, found that there are couple of reason which causes this issue.

- less memory
I am pretty sure, memory seems to be stable on my system and at the time of facing issue, I am still having good amount of free RAM.

Code:
 free -m
             total       used       free     shared    buffers     cached
Mem:         64445      25898      38546          0        192       3389
-/+ buffers/cache:      22316      42128
Swap:        66431      24824      41607

- crossed max no of process limit
ps gives me only 600 processes.
Code:
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) 532480
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65535
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) 532480
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

- crossed max PID integer limit.
Code:
cat /proc/sys/kernel/pid_max
32768

For the last point, It has been observed that the PID has been reached till 32762 but definitely not beyond that.

I am unable to reach to conclusion.

Moreover, I know that even if PID reached at max limit, the kernel resets the counter to 300 or something !

I am clueless. Need you help.
# 2  
Old 05-07-2013
If the issue is reproducible, try to strace the process to get more details.
Some limits might be altered, check /proc/<pid>/limits for the currently used ones.
Check for additional limits in /etc/secutity/limits.conf also.

Last edited by radoulov; 05-07-2013 at 10:29 AM..
This User Gave Thanks to radoulov For This Post:
# 3  
Old 05-07-2013
Thanks.

While it doesn't occur always.
I have bunch of scripts scheduled in cron. (running very frequently say 1 or 2 min)
I tried to check strace with just "echo" and saw huge amount of text.

Would it be useful if I schedule this with one of the my real script ? and to find the error prone execution after that?

limits.conf contains only some oracle specific limits. If you want, I will post.
I didn't get the <pid> in "/proc/<pid>/limits". what is meant by that? the real pid?
# 4  
Old 05-07-2013
Just try running ulimit -a from inside the scripts (as opposed to the command line),
to see if you get the expected values.

If sar is scheduled, check the memory usage history, try:

sar -f /var/log/saN -r

Where N is the day, for yesterday 2013/05/06 here, GMT + 1,
the command would be:

Code:
sar -f /var/log/sa/sa06 -r

You will have /proc/<pid>/limits while the process is executing.
This User Gave Thanks to radoulov For This Post:
# 5  
Old 05-07-2013
Ok. I will try that.

Regarding sar, the memory usage seems to be fine.

Code:
02:00:01 PM kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused  kbswpcad
.
.
.
06:20:01 PM  39475812  26516060     40.18    198364   3490292  42605940  25420420     37.37         0
06:30:01 PM  39464752  26527120     40.20    200396   3534608  42605940  25420420     37.37         0
06:40:01 PM  39290188  26701684     40.46    202580   3570116  42605940  25420420     37.37         0
06:50:01 PM  39200236  26791636     40.60    206812   3622196  42605940  25420420     37.37         0
07:00:01 PM  39382548  26609324     40.32    208804   3661100  42605940  25420420     37.37         0
07:10:01 PM  39209884  26781988     40.58    211940   3746460  42605940  25420420     37.37         0
07:20:01 PM  39080412  26911460     40.78    215128   3785572  42605940  25420420     37.37         0
07:30:01 PM  39097160  26894712     40.75    216760   3825096  42605940  25420420     37.37         0
07:40:01 PM  38982708  27009164     40.93    218364   3860988  42605940  25420420     37.37         0
07:50:01 PM  38970000  27021872     40.95    220144   3899924  42605940  25420420     37.37         0
Average:     17866377  48125495     72.93   1949824  22634065  42605940  25420420     37.37         0


Will try the ulimit stuffs and post the updates.

Thanks.
# 6  
Old 05-08-2013
Anything in /var/log/messages ?
Also look for threads with
Code:
ps -efL

This User Gave Thanks to MadeInGermany For This Post:
# 7  
Old 05-09-2013
Hi,

I am able to trace at least one execution with the error.
Here is the strace snippet.

Code:
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGINT, {0x436f40, [], SA_RESTORER, 0x38f80302d0}, {SIG_DFL, [], SA_RESTORER, 0x38f80302d0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0x38f80302d0}, {0x436f40, [], SA_RESTORER, 0x38f80302d0}, 8) = 0
pipe([3, 4])                            = 0
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_BLOCK, [INT CHLD], [], 8) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x2b013b0fafe0) = -1 EAGAIN (Resource temporarily unavailable)
fstat(2, {st_mode=S_IFREG|0644, st_size=8116374, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b013e6d2000
open("/usr/share/locale/locale.alias", O_RDONLY) = 5
fstat(5, {st_mode=S_IFREG|0644, st_size=2528, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b013e6d3000
read(5, "# Locale name alias data base.\n#"..., 4096) = 2528
read(5, "", 4096)                       = 0
close(5)                                = 0
munmap(0x2b013e6d3000, 4096)            = 0
open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en_US/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en.utf8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)

I did man fork and found the below.

Code:
       EAGAIN fork() cannot allocate sufficient memory to copy the parentās page tables and allocate a task structure for the child.

       EAGAIN It was not possible to create a new process because the callerās RLIMIT_NPROC resource limit was encountered.  To exceed this limit,  the
              process must have either the CAP_SYS_ADMIN or the CAP_SYS_RESOURCE capability.

Any clue?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Fork resource unavailable error, max # filehandles open?

I wrote a perl program that simultaneously reads in data from 691 tar.gz files using zcat. I can run one instance of the program without any issues and the memory and swap sizes are negligible. However, when I attempt to run more than 1 I start to get fork: resource unavailable messages. Are... (6 Replies)
Discussion started by: aquinom85
6 Replies

2. Programming

[ERROR:Resource temporarily unavailable!] Serial writing by termios library

Hello, I am using the termios library to write data that I get from a Bluetooth device to a modem via serial. The data arrive from the Bluetooth device correctly every 50ms and I have to bypass them on the serial ttyUSB3 where it is connected to a modem connected to a socket with static IP. The... (10 Replies)
Discussion started by: enaud
10 Replies

3. UNIX for Dummies Questions & Answers

Fork: Resource Temporarily Unavailable

I wrote a script that works most of the time but gave me fork: resource temporarily unavailable some of the time. I restarted my computer and now it runs fine but googling "fork: resource temporarily unavailable" and looking on the forums has not actually helped me figure out what exactly I... (3 Replies)
Discussion started by: monstrousturtle
3 Replies

4. UNIX for Advanced & Expert Users

fork: Resource temporarily unavailable , server unexpectedly unavailable network connection

Solaris 10 Server refuse to connect :wall: fork: Resource temporarily unavailable , server unexpectedly unavailable network connection , refuse error, disconnect message, fatal error type2, (protocol error type2) Issue has been resolved after taken few steps :b: First of all need to check... (1 Reply)
Discussion started by: taherahmed
1 Replies

5. Red Hat

cannot set user id: Resource temporarily unavailable (not open file/open process related)

First post, sorry to be a bother but this one has been dogging me. I have a process user (java application server) that trips a resource limit every couple weeks and need help finding what limit we're hitting. First, this is what's running: This is the error when jobs are run or the... (0 Replies)
Discussion started by: Katahdin
0 Replies

6. UNIX for Dummies Questions & Answers

Resource temporarily unavailable Error In Socket

Hi, Now I am programming to communicate with some network printer through TCP Socket program.By sending command "\033E 1\r" to printer,causes, check the port for error normally. In my case i used following code bytesSent = send( sockfd, "\033E 1\r",sizeof("\033E 1\r"), 0); ... (1 Reply)
Discussion started by: kavinsivakumar
1 Replies

7. Solaris

Mmap with fork : Resource unavaialable temporarily

installed 64bit 16GB VM on 64bit ESX server. Written small C code to map the 2GB of memory by mmap after creating 3 child and map getting failed by throwing "resource unavailable temporarily" after mapping 1.6 GB of memory out of 2GB. But same 1.5Gb memory mapping works fine. I checked... (0 Replies)
Discussion started by: siddharoodh
0 Replies

8. UNIX for Advanced & Expert Users

Fork:resource unavailable

Hello. I have code which create processes with fork(). I set a limit for processes by typing ulimit -u 20. Then I run my code who should create 100 processes. Unfortunately, I have a mistake there and I forgot to quit all of my forked processes when fork gave me return value -1. So I am trapped in... (5 Replies)
Discussion started by: samos
5 Replies

9. Solaris

fork: Resource temporarily unavailable - What can I check ?

Hi everybody, I have an Unix box running Solaris and every day for 1 hour or 2 the box is stuck and I can only get this error message when trying to type a command : bash-3.00$ vmstat 5 bash: fork: Resource temporarily unavailable How can I trace what's is going wrong with this box ?... (5 Replies)
Discussion started by: unclefab
5 Replies

10. Solaris

sendto failing "resource temporarily unavailable"

Well, I am not even sure if its failing, cause at the other end I have a select call and it wakes up and reads the data I sent fine. Ok here is the issue, I have a UDP socket(non blocking) through which I push some data to another port. At the other end I have select loop, waiting for this data.... (6 Replies)
Discussion started by: Naanu
6 Replies
Login or Register to Ask a Question