Hi Ricardo,

I've little bit changed your patch but otherwise kept its functionality 
and merged it into my tree.

Thanks!
Karel

On 04/ 4/11 01:08 PM, Ricardo Cosme wrote:
> Hi Karel,
>
> I have a deadlock at line orb.cc:3093 when my 
> ClientInterceptor::receive_exception()
> calls a _narrow() for a second time. In this case, the first calling to 
> _narrow() threw a
> COMM_FAILURE.
>
> Stacktrace:
> (gdb) bt
> #0  0x00007fff801f6322 in semaphore_wait_signal_trap ()
> #1  0x00007fff801fb96d in pthread_mutex_lock ()
> #2  0x000000010007913f in MICOMT::Mutex::lock (this=0x10200b500) at 
> pthreads.h:172
> #3  0x0000000100079166 in MICOMT::AutoLock::AutoLock (this=0x7fff5fbfc4a0, 
> m=@0x10200b500) at os-thread.h:173
> #4  0x000000010036311a in CORBA::ORB::is_a (this=0x10200b400, 
> obj=0x10191f320, repo_id=0x1000a3f3e "IDL:scs/core/IComponent:1.0") at 
> orb.cc:3093
> #5  0x000000010034b3e4 in CORBA::Object::_is_a_remote (this=0x10191f320, 
> repoid=0x1000a3f3e "IDL:scs/core/IComponent:1.0") at object.cc:462
> #6  0x000000010005ff46 in scs::core::IComponent::_narrow (_obj=0x10191f320) 
> at stubs/mico/scs.cc:1195
> #7  0x000000010006d4be in 
> openbus::Openbus::createProxyToIAccessControlService (this=0x101907610) at 
> openbus.cpp:594
> #8  0x000000010000ae17 in 
> openbus::interceptors::ClientInterceptor::receive_exception 
> (this=0x101919fd0, ri=0x10190f2a8) at 
> openbus/interceptors/ClientInterceptor.cpp:158
> #9  0x00000001004b5621 in PInterceptor::PI::_exec_client (ri=0x10190f2a8, 
> m={__pfn = 0x41, __delta = 0}, ip=PInterceptor::END) at pi_impl.cc:1949
> #10 0x00000001004b7b48 in PInterceptor::PI::_exec_receive_exception 
> (ri=0x10190f2a8) at pi_impl.cc:2129
> #11 0x00000001004b82a5 in PInterceptor::PI::_receive_exception_ip 
> (cri=0x10190f030, reply_status=1, exception=0x10191e480, 
> reply_scl=0x10190f000) at pi_impl.cc:2259
> #12 0x000000010030aab2 in CORBA::Request::get_response (this=0x10190eae0, 
> block=1 '\001') at dii.cc:931
> #13 0x000000010030b61f in CORBA::Request::invoke (this=0x10190eae0) at 
> dii.cc:778
> #14 0x00000001003633c7 in CORBA::ORB::is_a (this=0x10200b400, 
> obj=0x10190e720, repo_id=0x1000a3f3e "IDL:scs/core/IComponent:1.0") at 
> orb.cc:3114
> #15 0x000000010034b3e4 in CORBA::Object::_is_a_remote (this=0x10190e720, 
> repoid=0x1000a3f3e "IDL:scs/core/IComponent:1.0") at object.cc:462
> #16 0x000000010005ff46 in scs::core::IComponent::_narrow (_obj=0x10190e720) 
> at stubs/mico/scs.cc:1195
> #17 0x000000010006d4be in 
> openbus::Openbus::createProxyToIAccessControlService (this=0x101907610) at 
> openbus.cpp:594
> #18 0x000000010006ea2c in openbus::Openbus::connect (this=0x101907610, 
> entity=0x7fff5fbfe43d "HelloService", privateKeyFilename=0x7fff5fbfe470 
> "HelloService.key", ACSCertificateFilename=0x7fff5fbfe499 
> "AccessControlService.crt") at openbus.cpp:720
> #19 0x0000000100003e25 in main (argc=17, argv=0x7fff5fbfe0a8) at server.cpp:91
>
> Would it not be better to call _isa_cache.unlock() before calling 
> req->invoke() at line orb.cc:3116 ?
>
> I wrote a patch that solve this problem.
>
> Thanks,
> Ricardo
>


-- 
Karel Gardas                  kgar...@objectsecurity.com
ObjectSecurity Ltd.           http://www.objectsecurity.com

------------------------------------------------------------------------------
Simplify data backup and recovery for your virtual environment with vRanger.
Installation's a snap, and flexible recovery options mean your data is safe,
secure and there when you need it. Discover what all the cheering's about.
Get your free trial download today. 
http://p.sf.net/sfu/quest-dev2dev2 
_______________________________________________
Mico-devel mailing list
Mico-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mico-devel

Reply via email to