Hi, I'm trying to track down the cause of a nasty problem in our code where a call to _non_existent() hangs sometimes. This is called as our process is starting up, so this is a real pain for us - from our monitoring point of view the process has initialised and is running, but it actually is stalled whilst initialising. I know it's hanging in this state as I can run a pstack and then c++filt the mangaled function names and get:
CORBA::ORB::wait(CORBA::ORBInvokeRec*, long) CORBA::Request::get_response(unsigned char) CORBA::Request::invoke() CORBA::ORB::non_existent(CORBA::Object*) CORBA::Object::_non_existent() gds_server_find_running_server_is_alive(ObjVar<CORBA::ORB>, char const*) I then wait a few minutes and run the same commands and get the same stack. Currently we're using Mico 2.3.10 and will be upgrading to 2.3.12 when that becomes available. We run C++ code compiled with GCC 3.4.1 on Solaris 8 and Linux (RHEL3). We have plans to upgrade our compiler to 3.4.4 in the very near future and to GCC 4 eventually when that settles down. I don't know much about Mico or Corba, so any tips on how to debug this that would be great. Some thoughts I have are: a) If the call timed out as opposed to hanging that would be much more preferable. Perhaps we can set a timeout somewhere as a parameter? b) What kind of things would cause this and what kind of tests could I devise to capture the problem? c) Our process is mutli threaded. Perhaps _non_existent is not thread safe. This may not be an issue anyway as none of the other threads are doing anything with Corba by the time _non_existent() hangs. d) If it's hanging whilst contacts a remote host, would it be worth decoding args passed into the function call beforehand? If so how would I do that (forgive my ignorance of Corba/Mico here). I've looked on Google, through the Mico documentation, through the Corba spec and the source code for clues, but didn't find anything. If there is something in that lot that answers my questions, then forgive me, I overlooked it. I also tried to download the whole archive of messages from this discussion list, but that doesn't work: http://www.mico.org/pipermail/mico-devel.mbox/mico-devel.mbox Perhaps someone can check the link is ok? Many thanks, David Carter-Hitchin. -- Royal Bank of Scotland Interest Rate Derivatives IT 135 Bishopsgate LONDON EC2M 3TP Tel: +44 (0) 207 085 1088 *********************************************************************************** The Royal Bank of Scotland plc. Registered in Scotland No 90312. Registered Office: 36 St Andrew Square, Edinburgh EH2 2YB. Authorised and regulated by the Financial Services Authority This e-mail message is confidential and for use by the addressee only. If the message is received by anyone other than the addressee, please return the message to the sender by replying to it and then delete the message from your computer. Internet e-mails are not necessarily secure. The Royal Bank of Scotland plc does not accept responsibility for changes made to this message after it was sent. Whilst all reasonable care has been taken to avoid the transmission of viruses, it is the responsibility of the recipient to ensure that the onward transmission, opening or use of this message and any attachments will not adversely affect its systems or data. No responsibility is accepted by The Royal Bank of Scotland plc in this regard and the recipient should carry out such virus and other checks as it considers appropriate. Visit our websites at: http://www.rbs.co.uk/CBFM http://www.rbsmarkets.com ******************************************************************************** _______________________________________________ Mico-devel mailing list [email protected] http://www.mico.org/mailman/listinfo/mico-devel
