Browse Source

chatgui: add shutdown diagnostics (poll exit reason, cleanup steps, app.exec return)

topo_upd
Evgeny 2 months ago
parent
commit
4c623e25ce
  1. 4
      tools/chatgui/src/main.cpp
  2. 1
      tools/chatgui/src/mainwindow.cpp
  3. 7
      tools/chatgui/transport/utun_node.cpp

4
tools/chatgui/src/main.cpp

@ -95,5 +95,7 @@ int main(int argc, char *argv[]) {
SetConsoleCtrlHandler(console_ctrl_handler, TRUE); SetConsoleCtrlHandler(console_ctrl_handler, TRUE);
#endif #endif
return app.exec(); int ret = app.exec();
qDebug("main: app.exec() returned %d", ret);
return ret;
} }

1
tools/chatgui/src/mainwindow.cpp

@ -88,6 +88,7 @@ MainWindow::~MainWindow() {
if (m_messageList) m_messageList->saveChannelState(); if (m_messageList) m_messageList->saveChannelState();
DEBUG_DEBUG(DEBUG_CATEGORY_DEBUG, "MainWindow: ~MainWindow — stopping utun node"); DEBUG_DEBUG(DEBUG_CATEGORY_DEBUG, "MainWindow: ~MainWindow — stopping utun node");
if (m_node) { m_node->stop(); delete m_node; m_node = nullptr; } if (m_node) { m_node->stop(); delete m_node; m_node = nullptr; }
DEBUG_DEBUG(DEBUG_CATEGORY_DEBUG, "MainWindow: ~MainWindow — node stop+delete done");
DEBUG_DEBUG(DEBUG_CATEGORY_DEBUG, "MainWindow: ~MainWindow done"); DEBUG_DEBUG(DEBUG_CATEGORY_DEBUG, "MainWindow: ~MainWindow done");
} }

7
tools/chatgui/transport/utun_node.cpp

@ -344,16 +344,23 @@ void UtunNode::runLoop() {
uasync_poll(ua, 100); uasync_poll(ua, 100);
} }
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "runLoop: poll exit m_stop=%d g_shutdown=%d", (int)m_stop, (int)g_shutdown);
signal(SIGINT, SIG_DFL); signal(SIGINT, SIG_DFL);
signal(SIGTERM, SIG_DFL); signal(SIGTERM, SIG_DFL);
g_signal_ua = nullptr; g_signal_ua = nullptr;
etcp_router_bind(m_instance, ETCP_RT_ID_CHAT, nullptr); etcp_router_bind(m_instance, ETCP_RT_ID_CHAT, nullptr);
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "runLoop: etcp_router_unbind done");
chat_sync_destroy(m_instance); chat_sync_destroy(m_instance);
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "runLoop: chat_sync_destroy done");
chat_core_destroy(m_instance); chat_core_destroy(m_instance);
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "runLoop: chat_core_destroy done");
utun_instance_destroy(m_instance); utun_instance_destroy(m_instance);
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "runLoop: utun_instance_destroy done");
m_instance = nullptr; m_instance = nullptr;
uasync_destroy(ua, 0); uasync_destroy(ua, 0);
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "runLoop: uasync_destroy done, emitting stopped");
g_currentNode = nullptr; g_currentNode = nullptr;
QMetaObject::invokeMethod(this, [this] { emit stopped(); }); QMetaObject::invokeMethod(this, [this] { emit stopped(); });
} }

Loading…
Cancel
Save