A user is getting the following message when they try to run a particular program.
timer_create: Resource temporarily unavailable
From this StackOverflow Q&A titled: timer_create() : -1 EAGAIN (Resource temporarily unavailable), I discovered that this has to do with running out of space for pending signals. I confirmed this using a separate user account by running this command:
$ ulimit -i 0
and checking that I get the same error, which indeed I do. With this command:
$ ulimit -i 1
or any higher amount there is no error.
When the original user runs ulimit -i they get 127368. Thus I concluded that they had run out of space for pending signals somehow.
What is going on? Does it mean that one or more running programs has consumed these? If so how do I find out which ones?
/proc. Since we're talking about one user here, how about looking for that user's processes and only searching for thestatusfile of those? You can get a list of PIDs for processes started by a single user withps -u user_name -o pid=– Joseph R. Jul 16 '13 at 21:16ps -eo user,pending,commandfor example but I didn't know how to interpret it. I have a command which has ShdPnd of0000000200000000. Do you know what this "bitmap of pending signals" means? Clearly it's not zero, but I don't know how many it is! – Tom Ellis Jul 16 '13 at 21:16pscommand to get the numbers, was longer than the time it tookfindto trawl through the process tree (in my case). – EightBitTony Jul 16 '13 at 21:35findwhenever possible. – Joseph R. Jul 16 '13 at 21:38man 5 procthen, because these are definitely not signal counts.man 1 psmakes it very clear they are masks. However, a couple of lines above isSigQ: 127368/127368! So indeed I can see that the signal count has hit its limit, but unfortunately this is a user-wide count -- it's the same for all this user's processes. I still can't tell which process in particular is responsible. – Tom Ellis Jul 17 '13 at 07:29