Opened 15 years ago

Closed 15 years ago

#1328 closed Bugs (fixed)

boost::spirit concurrency gap

Reported by: vlad_news@… Owned by: Joel de Guzman
Milestone: To Be Determined Component: spirit
Version: Boost 1.34.1 Severity: Problem
Keywords: Cc:

Description

The following snipped code from the "boost::spirit" library contains the problem with concurrent access to a static object. Creation of a object of "thread_specific_ptr" type should be protected while concurrent access is performed.

boost\spirit\core\non_terminal\impl\grammar.ipp

...

# ifdef BOOST_SPIRIT_THREADSAFE

should be protected with a "call once" idiom

static boost::thread_specific_ptr<ptr_t> tld_helper;

if (!tld_helper.get())

tld_helper.reset(new ptr_t);

ptr_t &helper = *tld_helper;

# else

static ptr_t helper;

# endif

...

Change History (2)

comment:1 by anonymous, 15 years ago

Fix applied.

comment:2 by Joel de Guzman, 15 years ago

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.