
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.