Skip to content

KLEE killed by SIGKILL after the grace period is not reported as TIMEOUT #77

Open

Description

@hbgit

O frontend roda o KLEE como timeout -k <killGracePeriod> <budget> klee ... (modules/frontend/caller.cpp:697) e só trata como timeout o status 31744 (WEXITSTATUS == 124), em caller.cpp:824 e caller.cpp:915 (develop, a0f8b9c). Antes do merge do runtime Rust era o mesmo código, em caller.cpp:854 e :948 (f01e8c3).

Quando o KLEE não termina dentro do período de graça, o timeout envia SIGKILL e o status passa a ser 137 (128 + 9), não 124. Esse caso não é reconhecido como timeout e a execução segue para os passos seguintes, podendo chegar a VERIFICATION SUCCEEDED (TRUE) em vez de TIMEOUT/UNKNOWN.

Evidência (não reproduzida deterministicamente): no gate diferencial do cutover do runtime (tests/cutover/baseline-rust-gate2.tsv), a tarefa tree_stack (valid-memsafety, symex) teve, em 5 repetições, UNKNOWN ×3, TIMEOUT ×1 e SUCCEEDED ×1 (60,4 s), num host carregado. Uma nova rodada deu UNKNOWN 5/5. O SUCCEEDED isolado é compatível com o caminho descrito acima.

Correção sugerida: tratar WIFEXITED && (WEXITSTATUS == 124 || WEXITSTATUS == 137) e WIFSIGNALED && WTERMSIG == SIGKILL como timeout, nos dois pontos, e adicionar um teste com um KLEE falso que ignora SIGTERM.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions