[ace-users] Incorrect Makefile.am code generate for a conditional binaryprogram

[ace-users] Incorrect Makefile.am code generate for a conditional binaryprogram

Post by David Hawk » Sat, 05 Feb 2005 13:38:04



Hi Liss,


I don't have an answer for your question, but I do have
a question for you regarding using ACE+boost.

I was using the boost::shared_ptr<> for garbage collection, in
an application that also used the ACE libraries
i.e., I'd fill a vector< boost::shared_ptr<obj> > of
dynamically allocated obj's and when the ref count
drops to zero the memory is released (the obj in the
case of the error had no ACE classes in its definition).

In some applications I would get code locking-up, with very
strange behavour. For example, adding a block of code that was
not executed would cause the problem to occur, and then
removing it would make it go away! I backtraced the lockups
and they always ended in the boost::shared_ptr near
a pthread_cond_wait. An strace showed it stopping
in an rt_sigsuspend(). I never did track down the
problem to a single easily reproducable file.
Instead, I looked in ACE and found ACE_Strong_Bound_Ptr and
used that instead. Then everything worked fine.

I have fixed the known glibc problem with RH9.0 and ACE
(causes joinable threads to hang wait) and the boost
problem is still around.

System: RH9.0 based system with a kernel.org kernel PXE booted
client 2.4.25 kernel.

Anyway, just thought I'd ask if you've ever seen this.
I put it down to some incompatibility with the templates
being generated by boost versus those of ACE (perhaps
some hidden g++ flags in the headers of the two systems).

Cheers
Dave Hawkins
Caltech