**Use case**
Very rare deadlock is possible.

**Describe the solution you'd like**
If MemoryTracker is called from operator new, don't:
- log anything (1);
- throw (2).

(1) is strictly necessarily to avoid deadlock;
(2) is almost necessarily to avoid tons of peculiarities in destructors.
{
        parent.store(elem, std::memory_order_relaxed);
    }
    MemoryTracker * getParent()
    {
        return parent.load(std::memory_order_relaxed);
    }
    
    void setMetric(CurrentMetrics::Metric metric_)
    {
        metric.store(metric_, std::memory_order_relaxed);
    }
    void setDescription(const char * description)
    {
        description_ptr.store(description, std::memory_order_relaxed);
    }
    
    void resetCounters();
    
    void reset();
    
    void set(Int64 to);
    
    void logPeakMemoryUsage() const;
    
    struct BlockerInThread
    {
    private:
        BlockerInThread(const BlockerInThread &) = delete;