By the looks of it, takeSnapshot() does not use mutex in LoggedValue, which is potentially dangerous and makes mutex pretty much useless.