Такое себе продолжение предыдущего треда. Есть в проекте класс
class Client: public QObject
{
public:
Client(QObject* parent) : QObject(parent) {}
~Client() {}
...
private:
class ClientPrivate;
ClientPrivate *d;
};
Из конструктора и деструктора был выкинут весь код.
Наблюдается сегфолт при выполнении данного кода:
delete new Client(NULL);
Падает в деструкторе, непонятно с какого залезая в libfam.so. valgrind способен лишь констатировать смерть (т.е. находить проблемы уже в libfam, который никаким краем вызываться не должен).
Если рядом с Client определить точно такой же Client1, то, в зависимости от взаимного положения классов в коде, сегфолта может и не быть.
Подозревается повреждение памяти, но вопрос скорее теоретического плана: что нужно повредить, чтобы в однопоточном приложении в delete new Client(); фейлился деструктор? Причем фейлился еще до вызова operator delete(void*).