Boost logo

Boost :

From: Douglas Gregor (doug.gregor_at_[hidden])
Date: 2005-05-14 14:44:30


I've been taking a whack at the problems that show up on gcc-3_3-darwin.

On May 14, 2005, at 12:22 PM, Douglas Gregor wrote:
> program_options (borland-5_6_4, vc7, gcc-3_3-darwin, intel-8.1-linux)

The unicode_test_dll failure on Darwin is really, really strange.
Everything is fine with static linking, but conversion inexplicably
fail when we link dynamically. Attempts to debug this failed miserably
:(

> mpl (gcc-3_3-darwin)

Fixed.

> random (gcc-3_3-darwin, gcc-2.95.3-linux,
> gcc-2.95.3-stlport-4.5.3-linux)

Fixed.

> spirit (cw-8_3, gcc-3_3-darwin on multiprocessor machines)

This fails on Darwin for multiprocessor systems but is fine on
uniprocessor systems, which seems to indicate some kind of race
condition, although I can't tell if it's in the Thread library or the
test itself. However, I'm looking at
boost/spirit/core/non_terminal/impl/object_with_id.ipp and I'm a bit
concerned about the static mutex in
object_with_base_id::acquire_object_id, for two reasons:

1) It's inline, so we're relying on the compilers to be good about
generating only one mutex.
2) Static initialization is not necessarily thread-safe, so two threads
could conceivably initialize it at precisely the same moment, and might
explain the error we're seeing.

When I get back to my multiprocessor Darwin machine, I'll see if
there's a workaround.

        Doug


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk