Modify

Opened 10 years ago

Closed 10 years ago

Last modified 10 years ago

#1260 closed Bugs (fixed)

Thread-safety problem in Boost.Function

Reported by: Douglas Gregor Owned by: Douglas Gregor
Milestone: To Be Determined Component: function
Version: Boost 1.34.1 Severity: Regression
Keywords: Cc:

Description

From Sean Huang, on the Boost mailing list:

The following code in function_template.hpp has me concerned:

template<typename Functor> void assign_to(Functor f) {

static vtable_type stored_vtable(f); if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable; else vtable = 0;

}

The function scope statics are not thread-safe as far as I know and this is potentially a show stopper for us (we're in the process of upgrading from 1.33.1 to 1.34+. Same usage in boost.serialization caused our application (very heavy threaded) to crash.

Attachments (0)

Change History (4)

comment:1 Changed 10 years ago by Douglas Gregor

Resolution: fixed
Status: newclosed

(In [39240]) function/function_base.hpp, function/function_template.hpp:

  • Switch from dynamic initialization of the vtable pointer to static initialization (Fixes #1260)
  • Handle member pointers properly, only using mem_fn within the invoker to deal with all of the messy bits of calling member pointers

comment:2 Changed 10 years ago by alex_basakov@…

Can't build 1.34.1 program_options library with newly provided function_base.hpp, function_template.hpp. MSVC 8.0 SP1.

comment:3 Changed 10 years ago by Douglas Gregor

There is yet another updated function_base.hpp on the main Boost web site. This takes care of the problem for real.

comment:4 in reply to:  3 Changed 10 years ago by baf11@…

Replying to dgregor:

There is yet another updated function_base.hpp on the main Boost web site. This takes care of the problem for real.

Just wanted to point out the main boost website has a typo -> s/cricial/critical/.

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain Douglas Gregor.
The resolution will be deleted.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.