Falhas do tipo CWE-764
1 resultadoMúltiplos Bloqueios de um Recurso Crítico
Ocorre quando o código tenta adquirir múltiplos bloqueios (locks) sobre o mesmo recurso crítico de forma não-reentrant, causando deadlock ou comportamento indefinido. Se uma thread já detém um lock e tenta adquiri-lo novamente sem que o mecanismo suporte reentrância, a aplicação fica pendurada ou falha.
Uma função adquire um mutex sobre uma variável compartilhada; dentro do mesmo contexto, outra função chamada internamente tenta adquirir o mesmo mutex. Se o mutex não é reentrant, a thread bloqueia aguardando a si mesma, causando travamento permanente.
Use mutexes reentrantes (recursive locks) quando houver risco de lock nested; documente claramente qual thread ou seção é responsável por cada lock; considere refatorar a lógica para evitar aquisições aninhadas do mesmo recurso. Revise fluxos de controle e chame sempre unlock na ordem inversa de lock.