Archived

This forum has been archived. Please start a new discussion on GitHub.

About IceBox's thread reliability

I love IceBox's simplicity and powerful features.But when a uncatched exception occured(such as a bad pointer,or s segment fault,signal 11 etc...),all services will end up with the IceBox process. Even if I catch it and just exit the thread which the exception throws from,I find Ice run-time can not restart a new thread to keep the available thread pool size. So I suggest that IceBox can make the services or threads more independent with each other.

Comments

  • matthew
    matthew NL, Canada
    I'm not really sure what you want the Ice core to do. If you terminate an Ice runtime thread without telling the core, its hardly suprising that it will not spawn another -- since the core probalby thinks that it still exists and is available for processing requests.

    A more appropriate action may be, if you want to continue along with a buggy service that causes segfaults, would be to log the error and leave the processing thread running. In fact, this is exactly what occurs under Windows. You get an unknown exception on the client and the server keeps processing data -- because the access violation becomes a structured exception which is caught by catch(...).
  • matthew wrote:
    I'm not really sure what you want the Ice core to do. If you terminate an Ice runtime thread without telling the core, its hardly suprising that it will not spawn another -- since the core probalby thinks that it still exists and is available for processing requests.

    A more appropriate action may be, if you want to continue along with a buggy service that causes segfaults, would be to log the error and leave the processing thread running. In fact, this is exactly what occurs under Windows. You get an unknown exception on the client and the server keeps processing data -- because the access violation becomes a structured exception which is caught by catch(...).

    Thanks for your reply.I just want threads to be independent from each other,just like processes.Maybe it is impossible.
  • matthew
    matthew NL, Canada
    Yes, that's not really possible. All threads co-exist in the same memory space so they can all overwrite each other and do other bad things if they are buggy.