Q_ASSERT и release

Как много времени потрачено на поиск причин почему при динамике (debug/shared) программа работает нормально, а при static/release как-будто часть программы перестает работать.

А причина в Q_ASSERT. Надо было внимательно посмотреть этот макрос, что внутри него:

Q_CORE_EXPORT void qt_assert(const char *assertion, const char *file, int line);

#if !defined(Q_ASSERT)
#  ifndef QT_NO_DEBUG
#    define Q_ASSERT(cond) ((!(cond)) ? qt_assert(#cond,__FILE__,__LINE__) : qt_noop())
#  else
#    define Q_ASSERT(cond) qt_noop()
#  endif
#endif

Век живи - век учись Q_ASSERT и статика release не должно работать по определению. Точнее  при release сборке (см. QT_NO_DEBUG) макрос Q_ASSERT и все, что внутри него - превращается в пустоту.

Ну а мы использовали внутри Q_ASSERT разные функции и в release сборке они тупо заменялись на пустоту.