microsoft / microsoft/Trieste

Fuzzer failure: segfault in yaml_fuzz_to_json, seed 1597729744

Open
#125 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
53
Forks
27
Avg merge
12d 22h
Merged PRs (30d)
2

Description

This came up in an unrelated CI run.

From cursory investigation, the segfault happens deep inside snmalloc, while doing the seemingly harmless action of allocating a synthetic SourceDef, as of commit 917938ee73880db75efe738d39d5667566abd8f8.

I don't know what it means, and it will require either someone with more knowledge of snmalloc, or just a deeper investigation.

For convenience, here is my VSCode debug definition (your exact folder structure/args may vary, but know at least that this reproduces the problem on my machine):

{
  "type": "lldb",
  "request": "launch",
  "name": "yaml_fuzzer to_json",
  "program": "${workspaceFolder}/out/build/debug-clang/parsers/test/yaml_fuzzer",
  "args": ["to_json", "-s", "1597729744", "-f"],
  "cwd": "${workspaceFolder}"
}

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure with out/build/debug-clang/parsers/test/yaml_fuzzer using args to_json -s 1597729744 -f. Start by tracing yaml_fuzz_to_json and the synthetic SourceDef allocation, then investigate the snmalloc crash around commit 917938ee73880db75efe738d39d5667566abd8f. Done means identifying and fixing the segfault and validating the same seed without a crash.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.