[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference turris::c_plus_plus

Title:C++
Notice:Read 1.* and use keywords (e.g. SHOW KEY/FULL KIT_CXX_VAX_VMS)
Moderator:DECCXX::AMARTIN
Created:Fri Nov 06 1987
Last Modified:Thu Jun 05 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:3604
Total number of notes:18242

3557.0. "Undefined symbol __tree_mutex" by CSC32::J_HENSON (Don't get even, get ahead!) Mon Apr 28 1997 16:43

c++ v5.4, openvms v6.2, vax

I have a customer who is actually porting code from openvms Alpha to
OpenVMS Vax.  It uses a string package.

When he uses cxxlink to link, he gets and undefined symbol for
__tree_mutex.  Is there something special he needs to link against
to find this symbol?

Thanks,

Jerry
T.RTitleUserPersonal
Name
DateLines
3557.1TLE::WHITMANMon Apr 28 1997 18:0717
tree_mutex is used for multithread safety locking in the tree header
file. It is declared as "extern" inside the tree header file. If you
look inside the tree header file you'll see:


#if defined (__DECCXX) && \
    (defined(__VMS) || defined(_REENTRANT) || defined(SL_THREAD_SAFE))
extern __CXXL_TIS_MUTEX *__tree_mutex;
#endif

__tree_mutex should be defined in sys$library:libcxxstd.olb, in a
module tree.obj.  

Can you verify that you are using the correct combination of headers
and library ? 
    
3557.2not in libcxxstd.olbCSC32::J_HENSONDon't get even, get ahead!Tue Apr 29 1997 18:4520
>>                       <<< Note 3557.1 by TLE::WHITMAN >>>


I had the customer recompile using cxx/list/show=all and edit the .lis file.
Searching for __tree_mutex showed it to have the exact same definition as
listed in the previous reply.

However, we could not find a module named TREE in libcxxstd.olb.  We
did find some symbols with the word tree in their name in module
cxxl_std_init.  Then, we searched libcxxstd.olb on an alpha system,
and found that this symbol was defined in the cxxl_std_init module.
So, it appears that this symbol is just not on his system.

Is there a run-time upgrade that  should be installed on  OpenVMS Vax V6.2
that will provide this, or is just plain not available?  Is there a
later version of c++ (he has v5.4-010) taht will help?

Thanks,

Jerry
3557.3TLE::WHITMANWed Apr 30 1997 14:2251
Here is the output of a libr/list/full/names command on a 
V5.4 libcxxstd.olb from an OpenVMS VAX system:

Creation date:   5-JUN-1996 16:15:52      Creator:  VAX-11 Librarian V04-00
Revision date:   5-JUN-1996 16:27:12      Library format:   3.0
Number of modules:      4                 Max. key length:  31
Other entries:         23                 Preallocated index blocks:     49
Recoverable deleted blocks:      0        Total index blocks used:        4
Max. Number history records:      20      Library history records:        4

Module BITVECTOR        Ident V1.0             Inserted  5-JUN-1996 16:26:47 4 symbols
CXX$INSRT10BTVCTRXQ110BT0UK7AU6  
CXX$INSRT10BTVCTRXQ110BT1RT15KI  
CXX$INSRTUX10BTVCTRXQ1103V2FG97  
CXX$SWPXQ110BTVCTR9RFRNC027CLNE

Module BV_INST          Ident V1.0             Inserted  5-JUN-1996 16:27:06 11 symbols
CXX$CPYBCKWRDXQ110BTVCTR35JDC2S  
CXX$CPYXQ110BTVCTR14CNST14OBU9M  
CXX$CPYXQ110BTVCTR8ITRTR1AER7CC  
CXX$DSTNCXQ110BTVCTR14CN0AFL3EO
CXX$DSTNCXQ110BTVCTR14CN158Q289  
CXX$DSTNCXQ110BTVCTR14CN1U8B5VT  
CXX$FLLNXQ110BTVCTR8ITRT3DA1L0V  
CXX$FLLXQ110BTVCTR8ITRTR03KI8IS
CXX$LXCGRPHCLCMPRXQ110BT35AB8LL  
CXX$MSMTCHXQ110BTVCTR14C1SS0HI6  
FILL__XPUIPUINKI

Module CXXL_STD_INIT    Ident V1.0             Inserted  5-JUN-1996 16:27:12 3 symbols
_PINIT_CXXL_STD_INIT32DD73       
__INIT_CXXL_STD_INIT32DD73       
__TREE_MUTEX

Module RANDOM           Ident V1.0             Inserted  5-JUN-1996 16:27:09 5 symbols
RD                               
SEED__18__RANDOM_GENERATORXUL    
_PINIT_RANDOM2F422B             
__INIT_RANDOM2F422B
__LONG_RANDOM__XUL


I incorrectly said __tree_mutex should be defined in tree.obj, it
should be in cxxl_std_init.  Does the library on your system have
a creation date of 5-June-1996 ?  If __tree_mutex is missing from
the library is there any chance that the V5.4 OpenVMS VAX installation 
failed ?

The next things that I can suggest are posting a map file and the
output of the cxxlink/log command.

3557.4from kit, not from installed libcxxstd.olbHNDYMN::MCCARTHYA Quinn Martin ProductionWed Apr 30 1997 14:538
>>Here is the output of a libr/list/full/names command on a 
>>V5.4 libcxxstd.olb from an OpenVMS VAX system:

Actually the listing Sandra posted was from the libcxxstd.olb from the 
5.4 compiler backup saveset.  At installation time there will be at least
one module added to that library.

bjm
3557.5v5.5 version of libcxxstd.olb?CSC32::J_HENSONDon't get even, get ahead!Wed Apr 30 1997 15:2418
I have some additional information.

Just now, the cusotmer told me that he has recently downgraded his
c++ version from v5.5 to v5.4.  Perhaps this explains the problem.

The creation date on his libcxxstd.olb is 1-oct-1996 with a revision
date of 27-mar-1997.  The cxxl_std_init module was inserted on
1-oct-1996.  The __tree_mutex entry point is NOT in this library.

Does this clear things up?  I have asked him to re-install c++ v5.4,
but don't know if this will make a difference.  I also asked him to
check the 5.4 saveset for this library, and pull it out and use it.
Is this an acceptable thing to do, or should he be doing something
else?

Thanks,

Jerry
3557.6 DELETE EXISTING FILE PRIOR TO RE-INSTALLATION!HNDYMN::MCCARTHYA Quinn Martin ProductionWed Apr 30 1997 17:365
They have to delete sys$library:libcxxstd.olb before doing the reinstall of 
5.4.  The installation procedure is going to think that the 5.5 version is
newer and not install over it.

Brian J.
3557.7thanksCSC32::J_HENSONDon't get even, get ahead!Thu May 01 1997 14:1610
>>       <<< Note 3557.6 by HNDYMN::MCCARTHY "A Quinn Martin Production" >>>
>>              -<  DELETE EXISTING FILE PRIOR TO RE-INSTALLATION! >-

>>They have to delete sys$library:libcxxstd.olb before doing the reinstall of 
>>5.4.  The installation procedure is going to think that the 5.5 version is
>>newer and not install over it.

Thanks.  I've instructed the customer to do this.

Jerry