When running an application in Standalone JVM mode, the WrapperManager.stopAndReturn() does not return. We have traced the code and the method stops on the synchronized lock on the WrapperManager class, which is still being held by the WrapperManager.start() method.
We noticed this when we upgraded from version 3.3.1 to version 3.3.3, the main change seems to be the call to startCompleted() by the startRunner. The startRunner then waits for the lock which is owned by the main thread to be released, the main thread subequently joins the runner thread and waits for the runner to completed. See the attached file for a simplified example.