(Default) The shell executes its command and returns the result in the Result property when the script has finished running. Synchronous shells block the main UI thread, even when they are in a thread themselves. For long-running shell processes, use one of the other shell modes instead.
I agree that the " &" should background the udiskie task, and the shell should end. Maybe there’s a bug on Linux? Perhaps you should try Asynchronous instead?
Edit to add:
Could the “sh” object going out of scope be an issue? Maybe try making the “sh” object a global variable and see if that helps?
Shell using Synchronous mode keeps waiting for the process to end. Since the process is still running, it hasn’t ended and Xojo still waits. You can find details on the specific mode behaviors in the Xojo documentation: Shell — Xojo documentation