From: stas garifulin (s.garifulin_at_[hidden])
Date: 2005-01-19 06:02:11


stas garifulin wrote:

> I'm using vc71 with multi-threaded runtime.
> Sometimes then boost::spirit code is accessed from different threads
> simultaneously i have access violation at
> boost/spirit/core/non_terminal/impl/grammar.ipp (255):
>
> # ifdef BOOST_SPIRIT_THREADSAFE
> static boost::thread_specific_ptr<ptr_t> tld_helper; // <-- Here
> if (!tld_helper.get())
> tld_helper.reset(new ptr_t);
> ptr_t &helper = *tld_helper;
> # else
>
>
Possible same problem, local static variables:

boost-1_32\boost\spirit\core\non_terminal\impl\object_with_id.ipp(130,133).
boost-1_32\boost\spirit\core\primitives\impl\numerics.ipp(516)
boost-1_32\boost\spirit\debug\impl\parser_names.ipp(420)
boost-1_32\boost\spirit\utility\impl\chset_operators(511, 521)
boost-1_32\boost\spirit\utility\impl\escape_char.ipp(192)

boost-1_32\boost\spirit\phoenix\closures.hpp(404).

Debugging and tree_to_xml doesn't work corectly in multi-threaded
enviroment. Its use static ints for storing intendation info that should
be moved to tls too.