отладки надо понимать сколько тасков и какие именно таски выполняются в SemaphoreSlim. Пытался для этого использовать Task.CurrentId, но он может изменяться и может становиться null'ом для одного и того же таска
Перепиши код так, чтобы это можно было по стектрейсу отслеживать.
Обсуждают сегодня