ORBit-mt and hangs while acting as a client



Hi

This seems a very strange problem. With some code my program sometimes hangs only when its using Unix Domain Sockets, when added to slightly it hangs when using either IPv4 or Unix Domain Sockets. I control there by .orbitrc in the home directory. However if I initialise the orb as orbit-local-orb as opposed to orbit-local-mt-orb, everything works as expected. I have installed ORBit-0.5.5 and ORBit-mt-0.5.3.

It happens when calling a CORBA function, in this case previking_moduleStart. So far in my program, no threads have been created so it is all running serialised (apart from what ORBit-mt might be doing).

This is what I get when I interrupt a gdb session that is running it:

(gdb) bt
#0  0x4010817e in sigsuspend () from /lib/libc.so.6
#1  0x402361a0 in pthread_setconcurrency () from /lib/libpthread.so.0
#2  0x40232b20 in pthread_cond_wait () from /lib/libpthread.so.0
#3  0x40213e54 in g_async_queue_pop_intern_unlocked (queue=0x80527c8,
    try=0, end_time=0x0) at orbit_thread_support.c:431
#4  0x40213fb6 in g_async_queue_pop (queue=0x80527c8)
    at orbit_thread_support.c:464
#5  0x40212f4c in ORBit_wait_for_request_id (monitor=0x80519b8,
    request_ids=0xbffff534, block_for_reply=1) at orbit_thread.c:360
#6  0x40224a37 in giop_connection_wait_for_reply_multiple (
    connection=0x80519b8, request_ids=0xbffff534, block_for_reply=1)
    at giop-connection.c:391
#7  0x40224ab5 in giop_connection_wait_for_reply (connection=0x80519b8,
    request_id=3221222740, block_for_reply=1) at giop-connection.c:408
#8  0x4001a23a in previking_moduleHandler_moduleStarted (_obj=0x80518a8,
    type=previking_SERVICE, name=0x8048867 "test", ev=0xbffff5c8)
    at previking-stubs.c:64
#9  0x40019895 in moduleStart (name=0x8048867 "test", orb=0x8049b58)
    at module.c:47
#10 0x40019d99 in lpvServiceStart (name=0x8048867 "test",
    incomingCall=0x8048700 <test>) at lpvservice.c:96
#11 0x804876b in main (argc=2, argv=0xbffff6a4) at test.c:113
#12 0x40101cbe in __libc_start_main () from /lib/libc.so.6

It looks like it is waiting forever on that condition variable in frame 2. At first I thought it is definitely something to do with what I have written because I make slight changes and it makes it not hang. However it is interesting to me, that none of the calls to CosNaming functions hang.

I currently have available to me source code that causes it to hang as above with mt when using Unix Domain Sockets only and source code that hangs with both Unix Domain Sockets and IPv4.

I am currently pulling my hair out on this one :)

Regards

Zaheer Merali
--
PreViking - open source telephony middleware
http://www.bellworldwide.net/previking/





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]