Had to resort to issuing 'stop' command though bitcoin-cli (with server=1 config) when that was my issue.
IIRC, Issuing commands through "bitcoin-cli" while "bitcoin-qt" is unresponsive took longer to return a response.
Of course, shouldn't be an issue if you're using "bitcoind".
For someone (like me) who can't run Bitcoin Core 24/7, I always have to catch-up to the tip at least once a day.
The GUI was almost non-responsive, but only until it fully synced. Not to mention, the time it took was significantly longer than my setup today.
But once it's synced, it rarely freezes.
Never had that issue again since I moved the datadir to an internal SSD.