Vulkan External Semaphore Behavior in Simple Vulkan CUDA Example

Observed the following behavior in the binary semaphore version however, the situation is similar for timeline semaphore version too (controlled by #define _VK_TIMELINE_SEMAPHORE in VulkanBaseApp.h).

When I comment out the cudaSignalExternalSemaphoresAsync() call (which signals the m_cudaSignalSemaphore), in VulkanCudaSineWave::drawFrame() I expect the program to hang since the Vulkan pipeline waits for the m_vkWaitSemaphore (m_cudaSignalSemaphore is the exported version of m_vkWaitSemaphore), but it does NOT; validation is quiet on this too.

I don’t think this is how semaphores supposed to work; what would be an explanation for this behavior?