Bugzilla – Bug 3509
GLOBUS_COMMON_MODULE->GLOBUS_CALLBACK_MODULE deactivation blocks indefinitely
Last modified: 2005-06-22 14:53:32
You need to log in before you can comment on or make changes to this bug.
When calling "globus_module_deactivate(GLOBUS_COMMON_MODULE)" it blocks indefinitely. The underlying "globus_module_deactivate (GLOBUS_CALLBACK_MODULE)" ends up waiting on a condition variable indefinitely. This occurs seldomly (1:1000+), but when it does it means the calling application can't exit. In this case, I noticed it when using the globus-rls- cli command-line client to RLS. I don't know enough about the globus_callback module to know whether this could be due to some misuse by the RLS Client, but I don't think the RLS Client is directly using globus_callback so I'd imagine that something else in globus_common or globus_io (if anything) would be more directly responsible. I'm not 100% certain though. Specifically I was using my test environment setup script, which runs in a loop of copying a file to a local directory then calling "globus-rls-cli create mynewlfn gsiftp://path/to/mynewpfn rls://host". I was running the script to create 50,000 such files and file mappings in RLS. About every 1000 to 5000 invocations the rls client failed to exit thus halting my script. I attached via gdb and go the backtrace for the process (included below). While I realize this problem doesn't occur frequently, for users with batch scripts it would be encountered. Here's a list of backtraces from three such hangs. They look identical, but just in case there is some distinction I'm including three of them. From the looks of it, it fails to deactivate the GLOBUS_COMMON_MODULE. #0 0xffffe410 in ?? () #1 0xbfffbff8 in ?? () #2 0x00000002 in ?? () #3 0x00000000 in ?? () #4 0x4030c740 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/tls/libpthread.so.0 #5 0x401615aa in globus_cond_wait (cv=0x4016e080, mut=0x4016e04c) at globus_thread_pthreads.c:939 #6 0x40146c13 in globus_l_callback_deactivate () at globus_callback_threads.c:589 #7 0x40156e62 in globus_module_deactivate (module_descriptor=0x4016cddc) at globus_module.c:311 #8 0x4014b32a in globus_l_common_deactivate () at globus_common.c:159 #9 0x40156e62 in globus_module_deactivate (module_descriptor=0x4016ce18) at globus_module.c:311 #10 0x0804bfa1 in cleanexit (s=0) at cli.c:1402 #11 0x08049f90 in main (argc=5, argv=0xbfffe8d4) at cli.c:396 -- (gdb) bt #0 0xffffe410 in ?? () #1 0xbfffb168 in ?? () #2 0x00000002 in ?? () #3 0x00000000 in ?? () #4 0x4030c740 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/tls/libpthread.so.0 #5 0x401615aa in globus_cond_wait (cv=0x4016e080, mut=0x4016e04c) at globus_thread_pthreads.c:939 #6 0x40146c13 in globus_l_callback_deactivate () at globus_callback_threads.c:589 #7 0x40156e62 in globus_module_deactivate (module_descriptor=0x4016cddc) at globus_module.c:311 #8 0x4014b32a in globus_l_common_deactivate () at globus_common.c:159 #9 0x40156e62 in globus_module_deactivate (module_descriptor=0x4016ce18) at globus_module.c:311 #10 0x0804bfa1 in cleanexit (s=0) at cli.c:1402 #11 0x08049f90 in main (argc=5, argv=0xbfffda44) at cli.c:396 -- (gdb) bt #0 0xffffe410 in ?? () #1 0xbfffabe8 in ?? () #2 0x00000002 in ?? () #3 0x00000000 in ?? () #4 0x4030c740 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/tls/libpthread.so.0 #5 0x401615aa in globus_cond_wait (cv=0x4016e080, mut=0x4016e04c) at globus_thread_pthreads.c:939 #6 0x40146c13 in globus_l_callback_deactivate () at globus_callback_threads.c:589 #7 0x40156e62 in globus_module_deactivate (module_descriptor=0x4016cddc) at globus_module.c:311 #8 0x4014b32a in globus_l_common_deactivate () at globus_common.c:159 #9 0x40156e62 in globus_module_deactivate (module_descriptor=0x4016ce18) at globus_module.c:311 #10 0x0804bfa1 in cleanexit (s=0) at cli.c:1402 #11 0x08049f90 in main (argc=5, argv=0xbfffd4c4) at cli.c:396