Mark Richardson
2009-07-21 01:03:15 UTC
Hi all,
I've been playing with the imr (again for all that have seen my posts before), and I found an interesting bug. The REALLY interesting part is that mico 2.3.7 doesn't have this problem while 2.3.11, 2.3.12, and 2.3.13 do (currently using 2.3.13)!
I have a simple client & server that I use and they work just fine. When creating the imr entry I use the following command...
imr create ImrTestInterfaceServer poa "/mylocation/ImrTestServer" IDL:ImrTestInterface:1.0#ImrTestInterfaceServer -ORBImpRepoAddr inet:myMachine:2345
Then, I create multiple instances on the imr...
imr create ImrTestInterfaceServer0 poa "/mylocation/ImrTestServer 0" IDL:ImrTestInterface:1.0#ImrTestInterfaceServer0 -ORBImpRepoAddr inet:myMachine:2345
imr create ImrTestInterfaceServer1 poa "/mylocation/ImrTestServer 1" IDL:ImrTestInterface:1.0#ImrTestInterfaceServer1 -ORBImpRepoAddr inet:myMachine:2345
If I use the client to communicate with just one of them everything is fine. But if I do this...
1. new client connects to the original (ImrTestServer)
2. disconnect & exit client (ImrTestServer still running)
3. new client connects to ImrTestServer0
4. disconnect & exit client (ImrTestServer0 still running)
5. new client connects to ImrTestServer1
6. disconnect & exit client (ImrTestServer1 still running)
------ everything up till now is good -----
7. new client connect to the original (ImrTestServer)
Then sometimes it works fine (if I restarted micod just before this), but most of the time ImrTestServer0 crashes. Sometimes I even get ImrTestServer1 to crash.
The error that I get from the micod is...
ImrTestServer: mt_dispatcher.cc:124: virtual void MICO:MTDispatcher::process(MICO::seg_type*): Assertion '_msg->conn->state() == MICOMT:StateRefCnt::Terminated' failed
I always will get this if I repeat steps 1-6 enough (I've never gotten all the way through 2 times). 80% of the time the other 2 servers that are not being accessed by the client crash.
I've just started debugging, but it's gonna take me a while because I'm not that familar with the MTdispatcher. Anyone out there got any ideas?
I've been playing with the imr (again for all that have seen my posts before), and I found an interesting bug. The REALLY interesting part is that mico 2.3.7 doesn't have this problem while 2.3.11, 2.3.12, and 2.3.13 do (currently using 2.3.13)!
I have a simple client & server that I use and they work just fine. When creating the imr entry I use the following command...
imr create ImrTestInterfaceServer poa "/mylocation/ImrTestServer" IDL:ImrTestInterface:1.0#ImrTestInterfaceServer -ORBImpRepoAddr inet:myMachine:2345
Then, I create multiple instances on the imr...
imr create ImrTestInterfaceServer0 poa "/mylocation/ImrTestServer 0" IDL:ImrTestInterface:1.0#ImrTestInterfaceServer0 -ORBImpRepoAddr inet:myMachine:2345
imr create ImrTestInterfaceServer1 poa "/mylocation/ImrTestServer 1" IDL:ImrTestInterface:1.0#ImrTestInterfaceServer1 -ORBImpRepoAddr inet:myMachine:2345
If I use the client to communicate with just one of them everything is fine. But if I do this...
1. new client connects to the original (ImrTestServer)
2. disconnect & exit client (ImrTestServer still running)
3. new client connects to ImrTestServer0
4. disconnect & exit client (ImrTestServer0 still running)
5. new client connects to ImrTestServer1
6. disconnect & exit client (ImrTestServer1 still running)
------ everything up till now is good -----
7. new client connect to the original (ImrTestServer)
Then sometimes it works fine (if I restarted micod just before this), but most of the time ImrTestServer0 crashes. Sometimes I even get ImrTestServer1 to crash.
The error that I get from the micod is...
ImrTestServer: mt_dispatcher.cc:124: virtual void MICO:MTDispatcher::process(MICO::seg_type*): Assertion '_msg->conn->state() == MICOMT:StateRefCnt::Terminated' failed
I always will get this if I repeat steps 1-6 enough (I've never gotten all the way through 2 times). 80% of the time the other 2 servers that are not being accessed by the client crash.
I've just started debugging, but it's gonna take me a while because I'm not that familar with the MTdispatcher. Anyone out there got any ideas?