[Ace-users] ACE_OS::mutex_lock condition

sachin sachinprabh at gmail.com
Fri Nov 16 05:19:11 CST 2007


ACE VERSION: 5.5



    HOST MACHINE and OPERATING SYSTEM: RHEL4.x



    TARGET MACHINE and OPERATING SYSTEM, if different from HOST:
VxWorks6.6



    COMPILER NAME AND VERSION (AND PATCHLEVEL): GNU 4.1.2



    THE $ACE_ROOT/ace/config.h FILE: #include "ace/config-
vxworks6.6.h"



    THE $ACE_ROOT/include/makeinclude/platform_macros.GNU FILE :

            WIND_BASE=/home/systest/WindRiver31-GPP/vxworks-6.6

WIND_HOST_TYPE=x86-linux2

CPU=PPC32

GCC_VERSION=gcc-2.96

rtp =0

static_libs = 1

shared_libs = 0

include $(ACE_ROOT)/include/makeinclude/platform_vxworks6.6.GNU



    CONTENTS OF $ACE_ROOT/bin/MakeProjectCreator/config/
default.features: NA



    AREA/CLASS/EXAMPLE AFFECTED: SOCK_Test.cpp, MT_SOCK_Test.cpp,
Bound_Ptr_Test.cpp



    DOES THE PROBLEM AFFECT: EXECUTION. ACE is affected.





SYNOPSIS: When SOCK_Test.o is downloaded and run on the vxWorks6.6
target, the task goes to pend state. It waits for the unavailable
mutex held by some other task.



DESCRIPTION: Build of ACE-5.5 for VxWorks6.6 is successful for GNU
compiler. When SOCK_Test.o modules are downloaded and executed on the
target, we have following observations.

1.     When the module SOCK_Test.o is run with the entry point
run_main(0,0), the module run successfully and returns value '0'.

2.     When the same module SOCK_Test.o is downloaded along with
main.o and it is run specifying the entry point ace_main(0,0), the
task goes into pend state. The successful '0' value is never return.
Tracing the task we found that, the control flow is stopped at
mutex_lock. It is at wait state for the mutex to get released.



    REPEAT BY:

0x006a07c0 ace_main(int, char **)+0x20 : ace_os_main_i(int, char **)
()

0x00184cd4 ace_os_main_i(int, char **)+0xa8 : 0x0084bc94 (0x825ab0,
0x825ab4)

0x0084bc94 PatchArchInit+0x98 : 0x018779ec
()

0x018779ec run_main(int, char **)+0x224:
ACE_Thread_Manager::wait(const ACE_Tim

_Value *, int)
()

0x001ad560 ACE_Thread_Manager::wait(const ACE_Time_Value *, int)
+0xd4 : ACE_Con

ition_Thread_Mutex::wait(const ACE_Time_Value *)
()

0x001565d4 ACE_Condition_Thread_Mutex::wait(ACE_Thread_Mutex &, const
ACE_Time_

alue +0xf8 : pthread_cond_wait
()

0x0029075c pthread_cond_wait+0x208: semTake
()

0x002c37f0 semTake      +0x138: semBTake ()







Thanks

Naazia



More information about the Ace-users mailing list