> Error 28 fault: SOAP-ENV:Client [no subcode] "Bad file number" 
> Detail: accept failed in soap_accept()
> 
> The ulimit is 15K, which is too far for the appl to reach. fd count
> in /proc/*/fd is consistent. The issue goes away only with restart. I
> tried releasing all keep alive sessions, cleaning up tmp soap buffer,
> deallocate de-serialized content and instances and start over again
> accepting requests on the same master skt  but to no avail.
> 
> what could be the reason? Is this a result of broken pipe or a
> malformed req msg from the client? Could someone pinpoint the area
> where I need to debug further?

We don't use soap_accept() so I'm just guessing here, but do you mean 
you need to restart the application or restart the machine?  If you need 
to restart the machine then it's a bug in your OS, as any leftover 
connections should be cleared when your app terminates.

You could perhaps try severely lowering the ulimit values to see if you 
can find out whether it is reaching one of the limits (and if so which 
one), or whether those limits are unrelated.

Once this issue happens does it affect all requests?  That error 
(according to the accept() manpage) means the descriptor was invalid - I 
don't know whether connecting and then instantly disconnecting could 
cause that problem, although presumably accept() needs a descriptor of 
some listening socket - if that listening socket goes away for some 
reason, then presumably all future calls to accept() will fail.

Have you tried running your app through something like Valgrind?  It 
might be able to help if the issue is related to allocating some 
resource and then forgetting to release it again.

Anyway, just some ideas!

Cheers,
Adam.

Reply via email to