Archived
This forum has been archived. Please start a new discussion on GitHub.
unknown exception in `Ice.ThreadPool.Server'
in Bug Reports
I have a distributed application which is tested on my developer computer. This means that more that 60 clients runs and tries to call the same server (DLocalCommServer) almost at the same time (I think this causes this error),
because if there are less clients, this never happens.
I use .NET Framework 1.1, C#, ICECS, on a Windows XP Prof. The DLocalCommServer uses a config file with the settings:
LocalCommAdapter.Endpoints=tcp -p 11998
Ice.ThreadPool.Server.Size=50
Ice.ThreadPool.Server.SizeWarn=50
Ice.ThreadPool.Server.SizeMax=100
DLocalCommServer.exe: error: unknown exception in `Ice.ThreadPool.Server' thread DLocalCommServer.exe-Ice.ThreadPool.Server-8:
System.IndexOutOfRangeException: Az index a tömb határain kívülre mutatott. at System.Net.Sockets.Socket.SocketListToFileDescriptorSet(IList socketList) at System.Net.Sockets.Socket.Select(IList checkRead, IList checkWrite, IList checkError, Int32 microSeconds)
at IceInternal.Network.doSelect(IList checkRead, IList checkWrite, IList checkError, Int32 milliSeconds)
at IceInternal.ThreadPool.run(BasicStream stream)
at IceInternal.EventHandlerThread.Run()
Az index a tömb határain kívülre mutatott. = "The index was outside of the array"
because if there are less clients, this never happens.
I use .NET Framework 1.1, C#, ICECS, on a Windows XP Prof. The DLocalCommServer uses a config file with the settings:
LocalCommAdapter.Endpoints=tcp -p 11998
Ice.ThreadPool.Server.Size=50
Ice.ThreadPool.Server.SizeWarn=50
Ice.ThreadPool.Server.SizeMax=100
DLocalCommServer.exe: error: unknown exception in `Ice.ThreadPool.Server' thread DLocalCommServer.exe-Ice.ThreadPool.Server-8:
System.IndexOutOfRangeException: Az index a tömb határain kívülre mutatott. at System.Net.Sockets.Socket.SocketListToFileDescriptorSet(IList socketList) at System.Net.Sockets.Socket.Select(IList checkRead, IList checkWrite, IList checkError, Int32 microSeconds)
at IceInternal.Network.doSelect(IList checkRead, IList checkWrite, IList checkError, Int32 milliSeconds)
at IceInternal.ThreadPool.run(BasicStream stream)
at IceInternal.EventHandlerThread.Run()
Az index a tömb határain kívülre mutatott. = "The index was outside of the array"
0
Comments
-
>And unknown exception is a non-Ice exception.
>In your server code, can you add a catch(...) to see if any unexpected >exceptions are raised?
I have already added to all the server functions a try...catch blokk, and still have this exception...0 -
System.IndexOutOfRangeException: Az index a tömb határain kívülre
mutatott. at System.Net.Sockets.Socket.SocketListToFileDescript
orSet(IList socketList) at
It may be of some relevance that Mono is built with FD_SETSIZE defined as 1024 and I've been able to run 100 concurrent simultaneously active clients (pinging every 5 seconds) against the hello world server running under Mono for Windows. Please note that 100 clients isn't the limit with Mono, I simply didn't try it with more.
I'll confer with my colleagues to see if there is a workaround. If you are using Ice 3.0.0 or greater, you *could* use thread per connection but that certainly isn't a great solution if you have a large number of connections.0 -
Thank you for your answer. This case I stop finding bugs in my app, and wait for the workaround... thanks again.0
-
Unfortunately, you are running in the limit of 64 file descriptors (FD_SETSIZE) of the platform SDK. .NET 1.1 inherits that limit, and there is no work-around.
The next major release of Ice will support .NET 2.0, which doesn't suffer from this limitation.
Cheers,
Michi.0