If you're using systemd to manage synapse (either via the debian packages, or via the systemd examples in contrib), then you probably won't have a pidfile for synapse. (And if you do, it probably won't be where synctl looks for it).
So then, synctl stop will see that there is no pidfile, and assume its work is done, and carry on. Worse, synctl restart will again assume that there is no running synapse and start a new one - which will probably fail, because it won't be able to bind to the TCP ports, but it probably won't tell you that because #4641.
All of this leads to a lot of confusion where you might think you have restarted your server, but actually haven't.
The easiest option here is probably just to have synctl stop/restart spit out a big warning if it can't find a process to stop.