Opened 4 years ago

Closed 4 years ago

#8917 closed Bugs (invalid)

libs/log/src/once_block.cpp: Ignores nearly all failures from pthread_* functions

Reported by: Jeffrey Walton <noloader@…> Owned by: Andrey Semashev
Milestone: To Be Determined Component: log
Version: Boost 1.54.0 Severity: Problem
Keywords: log mutex pthread API failure Cc:


libs/log/src/once_block.cpp ignores nearly all failures from pthread_* functions. Functions include pthread_mutex_init, pthread_mutex_lock, pthread_mutex_unlock and pthread_mutex_destroy.

A lock failure is usually a bad thing, and I can't come up with scenarios where a silent failure is desired. It will make a bad problem worse by corrupting data or terminating the program.

At minimum (as a user), I would expect for Boost to use BOOST_ASSERT with an appropriate exception in debugging and diagnostic builds; and BOOST_VERIFY with an appropriate exception for release or production builds.

Perhaps it would be a good idea to use boost/thread/pthread/mutex.hpp or boost/interprocess/sync/posix/mutex.hpp. They appear to be more mature and have a bit more stability. In addition, it throws lock exceptions where appropriate.

Attachments (0)

Change History (1)

comment:1 Changed 4 years ago by Andrey Semashev

Resolution: invalid
Status: newclosed

All pthread functions are already guarded with BOOST_VERIFY. The functions must not throw any exceptions, so the only thing that can be done is to abort in case of errors.

Modify Ticket

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