Thank you for the link. That seems to be exactly the issue, so you can close this (or I'll do it when I figure out how).
The issue (I assume) is that xdg-open creates its new process (evince,
whatever) by forking. Then the original xdg-open process exits, which as
far as Emacs knows means it is done.
See eg https://bugzilla.gnome.org/show_bug.cgi?id=652262