When the other thread fails to link (because of missing modules) the waiting thread is never notified of such failure.
"MSC service thread 1-1" prio=10 tid=0x00007fcd7449f000 nid=0x4690 in Object.wait() [0x00007fcd6d574000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x00000000e04a3428> (a org.jboss.modules.Module) at java.lang.Object.wait(Object.java:503) at org.jboss.modules.Module.getPaths(Module.java:1141) - locked <0x00000000e04a3428> (a org.jboss.modules.Module) at org.jboss.modules.Module.getPathsUnchecked(Module.java:1164) at org.jboss.modules.Module.getResources(Module.java:586) at org.jboss.modules.ModuleClassLoader.findResources(ModuleClassLoader.java:489) at org.jboss.modules.ConcurrentClassLoader.getResources(ConcurrentClassLoader.java:288) at java.util.ServiceLoader$LazyIterator.hasNext(ServiceLoader.java:340) at java.util.ServiceLoader$1.hasNext(ServiceLoader.java:432) at org.jboss.as.web.deployment.ServletContainerInitializerDeploymentProcessor.deploy(ServletContainerInitializerDeploymentProcessor.java:107) at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) - locked <0x00000000f59f1c60> (a org.jboss.as.server.deployment.DeploymentUnitPhaseService) at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824) at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722)