[omniORB] Cannot start threads
Pánczél Levente
Levente.Panczel at compuworx.hu
Thu Nov 27 14:41:35 GMT 2003
Hi
Sorry it really was my mistake. I actually created some of the threads without the PTHREAD_CREATE_DETACHED flag set so they were kept after termination waiting for a pthread_join()
I think it would be nice, if any man page would make people aware, that terminated undetached threads are counted into PTHREAD_THREADS_MAX!!!
Thanks for help!
Levente, Panczel
-----Original Message-----
From: Carlos [mailto:carlos at canama.net]
Sent: Thu 2003-11-27 12:39
To: Pánczél Levente
Cc: OmniORB support
Subject: Re: [omniORB] Cannot start threads
Pánczél Levente wrote:
> Hi everyone!
>
> I use OmniORB4 in a server application which frequently creates/deletes threads. I got aware of omniORB not working correctly. As I tried to figure out what happened I found that omniORB was not able to create worker threads. More confusing was, as I found that after a point not only the omniORB subsystem but none of the threads of my server was able to start a thread. All requests to pthread_create return errno 11 (something like EWOULDBLOCK) saying "resource temporarily unavailable" wich state is quite static. Could anyone give me a hint about the reasons for this behavior and wheter my code or omniORB or both together are causing these syndromes?
> I will start a session with a omniORB trace 40 but it takes hours to catch this bug.
>
> Thanks in advance.
>
> Levente, Panczel
>
> PS: part of a log of cerr:
> omniORB: Cannot create a worker for this endpoint: giop:tcp:10.10.10.66:36806 from giop:tcp:10.10.10.66:52202
> omniORB: Cannot create a worker for this endpoint: giop:tcp:10.10.10.66:36806 from giop:tcp:10.10.10.66:52203
> <11.27. 10:44:45> Couldn't create terminal thread (11).
> <11.27. 10:44:45> Threadless terminal object deleted.
> omniORB: Cannot create a worker for this endpoint: giop:tcp:10.10.10.66:36806 from giop:tcp:10.10.10.66:52204
> omniORB: Cannot create a worker for this endpoint: giop:tcp:10.10.10.66:36806 from giop:tcp:10.10.10.66:52205
> <11.27. 10:44:48> Couldn't create terminal thread (11).
> <11.27. 10:44:48> Threadless terminal object deleted.
> <11.27. 10:44:50> Couldn't create terminal thread (11).
> <11.27. 10:44:50> Threadless terminal object deleted.
>
> _______________________________________________
> omniORB-list mailing list
> omniORB-list at omniorb-support.com
> http://www.omniorb-support.com/mailman/listinfo/omniorb-list
>
>
I've seen in info libc-doc:
Macro: int EAGAIN
Resource temporarily unavailable; the call might work if you try
again later. The macro `EWOULDBLOCK' is another name for `EAGAIN';
they are always the same in the GNU C library
and
*Portability Note:* In many older Unix systems, this condition
was indicated by `EWOULDBLOCK', which was a distinct error
code different from `EAGAIN'. To make your program portable,
you should check for both codes and treat them the same.
and
This function (pthread_create) may return the following errors:
`EAGAIN'
Not enough system resources to create a process for the new
thread, or more than `PTHREAD_THREADS_MAX' threads are
already active.
so I think that your application is using all the threads.
Are you deleting threads properly?
Best wishes.
Carlos.
More information about the omniORB-list
mailing list