Opened 7 years ago

Closed 6 years ago

Last modified 19 months ago

#4889 closed Bugs (fixed)

path locale-related functions are not thread-safe

Reported by: Andrey Semashev Owned by: Beman Dawes
Milestone: To Be Determined Component: filesystem
Version: Boost 1.45.0 Severity: Problem
Keywords: Cc: raad@…


Boost.Filesystem v.3 keeps the locale used by path objects in a function-local static object (see path_locale function in path.cpp). If multiple threads use path methods that involve locale (such as string(), wstring(), converting constructors or assignment from strings), the code may use a not yet constructed locale object or leak the locale. The locale object must be protected with call_once or similar technique.

Attachments (0)

Change History (2)

comment:1 Changed 6 years ago by Beman Dawes

Resolution: fixed
Status: newclosed

(In [76303]) Fix #4889, #6320, Locale codecvt_facet not thread safe on Windows. Move Windows, Mac OS X, locale and codecvt facet back to namespace scope. POSIX except OS X uses local static initialization (IE lazy) to ensure exceptions are catchable if environmental variables are misconfigured and to avoid use of locale("") if not actually used.

comment:2 Changed 19 months ago by raad@…

Cc: raad@… added

Modify Ticket

Change Properties
Set your email in Preferences
as closed The owner will remain Beman Dawes.
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.