Skip to content

[P1][Windows] Background/index worker falha com WinError 6 ao herdar stdin inválido #231

Description

@wesleysimplicio

Problema observado

No Windows com Python 3.14, os caminhos de worker do simplicio-mapper falham antes de iniciar o processo filho quando o processo pai tem stdin capturado/fechado, como ocorre em pytest e em alguns hosts Codex/PowerShell.

Reprodução passo a passo

  1. Usar checkout do mapper em Windows.
  2. Executar:
    python -m pytest tests/python/test_cli.py::CliTest::test_background_index_reports_pid_and_log -q
  3. Observar falha antes de criar o worker:
    OSError: [WinError 6] Identificador inválido
  4. O traceback aponta para subprocess.Popen -> _get_handles -> _winapi.DuplicateHandle.
  5. Os mesmos sintomas aparecem em scan --sync e scan assíncrono, impedindo o teste do worker com timeout.
  6. O erro não é específico do repositório mapeado: testes que chamam git init também podem reproduzi-lo sob o mesmo host de teste, mas o mapper agrava o impacto porque seus caminhos de background dependem de Popen.

Impacto

Plano de correção

  1. Tornar o worker não-interativo, passando stdin explícito subprocess.DEVNULL.
  2. Manter stdout/stderr no log estruturado e não herdar handles do host.
  3. Adicionar teste Windows/pytest para background, sync e async.
  4. Verificar que timeout/kill ainda recupera lock e escreve receipt terminal.
  5. Validar pacote instalado além do checkout in-tree.

Critérios de aceite

  • index --background --json inicia em Windows com stdin fechado/capturado.
  • scan --sync --json inicia o worker e retorna envelope completo ou timeout estruturado.
  • scan --json assíncrono inicia e reaping não deixa handles inválidos.
  • Testes passam sob pytest com stdin capturado e em execução direta.
  • Nenhum stdin do usuário é consumido pelo worker.
  • O erro de criação do processo retorna reason code e não deixa lock órfão.
  • Smoke com wheel/CLI instalado passa no Windows.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingwindows

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions