Details
-
Bug
-
Resolution: Unresolved
-
Not Evaluated
-
None
-
Qt Creator 7.0.2
-
None
-
Arch Linux
Description
Analyzers (Performance Analyzer and Valgrind Memory Analyzer) are broken with limited network connectivity. Limited connectivity in this case means connected to a local network with a broken internet connection, such as with an ISP outage. For example, pinging an internet server (such as google.com) hangs due to DNS unavailability.
The following happens with Qt Creator 7.0.2:
- When running the Performance Analyzer, the application output is available in the Application Output tab, but the flame graph and statistics never appear. The application also appears to be running (with the "Stop" button active) even after it exits. Attempting to stop and re-start the application causes several error dialogs to be displayed.
- When running the Valgrind Memory Analyzer, the application runs and exits with no application output displayed and no results are reported, even when intentionally leaking memory.
- Running without the debugger ran as expected. I don't believe I ran through the debugger when this occurred, so I can't verify whether normal debugging works under this situation.
I encountered this issue today when there was an ISP outage. Once connectivity was restored I went to report the bug, but found that I was no longer able to reproduce the issues, leading me to believe it was due to the network outage. My best guess is it's because DNS requests are hanging given that these tools run on sockets that can be connected to remote clients. Manually disconnecting the network fails to reproduce the issue, likely because the system skips any DNS lookups without a network connection.
I tried reproducing this at home with various means (unplugging the modem from the router, breaking /etc/resolve.conf), but the closest I could get was to have Valgrind Memory Analyzer hang on startup (as opposed to exiting without showing any application output) while the Performance Analyzer continued to work as expected.
While some loss in functionality is expected when performing these operations on remote targets, I would expect these features to still work when running on the local machine. Unfortunately this seems to be very tricky to properly reproduce and test, but perhaps if there are some fundamental differences in the features that work (e.g. running without debugging through Build -> Run, code completion through clangd) and those that don't, such as how the sockets are opened or managed, maybe a theoretical fix could be applied.