General issue Python extractor fails in macOS App Sandbox: `PermissionError: [Errno 1] Operation not permitted` from `_multiprocessing.SemLock`
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 52/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Pouca atividade
- Stack de tecnologia
- macos, python
- Domínio
- devtools, operating-systems
Direção de pesquisa
Comece com python/tools/python3src.zip/semmle/logging.py:84 e semmle/worker.py:115-116 e, em seguida, reproduza a falha com o comando sandboxed multiprocessing Queue e codeql database create. Rastreie os caminhos de inicialização de Queue e de processos e verifique se a criação do banco de dados Python é concluída quando os semáforos POSIX são negados, incluindo os caminhos de logger e extractor pool.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Summary
The Python extractor unconditionally uses multiprocessing.Queue and multiprocessing.Process, which require POSIX semaphores (sem_open()). In macOS App Sandbox environments (Seatbelt), ipc-posix-sem is denied at the kernel level, making codeql database create --language=python impossible.
No existing issue covers this — searched for SemLock, semaphore, PermissionError macos, sandbox, multiprocessing with zero matches.
Environment
- CodeQL CLI: 2.25.6 (Homebrew cask, Apple Silicon)
- Python extractor version: 7.1.8
- macOS: Darwin 24.6.0 (Sequoia, arm64)
- Python: 3.12 and 3.14 (both fail identically)
- Sandbox: macOS Seatbelt (
sandbox-exec) — used by Claude Code, Codex, and other sandboxed developer tools
Reproduction
Run codeql database create inside any macOS App Sandbox that denies ipc-posix-sem:
# Minimal test — verify semaphores are blocked in your environment:
python3 -c "import multiprocessing; multiprocessing.get_context('spawn').Queue()"
# PermissionError: [Errno 1] Operation not permitted
# Then:
echo 'print("hello")' > /tmp/test.py
codeql database create /tmp/codeql-db --language=python --source-root=/tmp --overwrite
Fails at:
File ".../python3src.zip/semmle/logging.py", line 85, in __init__
self.queue = ctx.Queue()
...
_multiprocessing.SemLock(kind, value, maxvalue, self._make_name(), unlink_now)
PermissionError: [Errno 1] Operation not permitted
If the logger is patched to bypass this, a second identical failure occurs in semmle/worker.py:115 (ExtractorPool.__init__ → ctx.Queue(proc_count*2)).
Affected Code
-
python/tools/python3src.zip → semmle/logging.py:84—Logger.__init__unconditionally createsmultiprocessing.Queue()and spawns aProcessfor log message routing, regardless of verbosity level. -
python/tools/python3src.zip → semmle/worker.py:115-116—ExtractorPool.__init__createsmultiprocessing.Queueandmultiprocessing.Processworkers for parallel extraction.
Both use multiprocessing.get_context('spawn') on macOS, which calls sem_open().
Why This Matters
macOS Seatbelt sandboxing is increasingly common in developer tooling — Claude Code, GitHub Codex CLI, Gemini CLI, and third-party sandbox wrappers all use it. The ipc-posix-sem denial is standard in these profiles. As AI-assisted development grows, more developers will hit this when running CodeQL from sandboxed terminals.
Suggested Fix
Add a fallback to threading.Thread + queue.Queue when multiprocessing is unavailable or fails. This is the same pattern used for AWS Lambda (where /dev/shm is unavailable) and Docker containers with restricted IPC namespaces.
A minimal change: catch PermissionError/OSError in Logger.__init__ and ExtractorPool.__init__, falling back to thread-based equivalents. Single-threaded extraction already works correctly (verified with a patched extractor scanning 132 Python files).
- Linguagem predominante
- CodeQL
- Estrelas
- 10.1k
- Forks
- 2.1k
- Merge médio
- 2d 10h
- PRs com merge (30d)
- 134
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de github/codeql
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
-
C#: cs/simplifiable-boolean-expression false positive on Nullable<bool> compared with a literal Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
-
false-positive
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
false-positive
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 68/100
Todas as issues de github/codeql
Issues semelhantes
-
sponsored
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
microsoft/navcontainerhelper#4217 ·
-
feature
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
use-agent-os/agent-os#3314 ·
-
[scanner] PR #409 committed node_modules as a symlink to a maintainer's local path — shipped on main Abertaagent/scanner bug hive/hosted-available-lke648397-260827-5n31
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100