)]}'
{
  "commit": "20f0ef259ce9330742b4d0551058b78292138feb",
  "tree": "7b5d58fe9ffc60f51980d0ea4ce6bdab15e4cd91",
  "parents": [
    "7275450ddfa9549e62f34c5d7d5b510c3bedda05"
  ],
  "author": {
    "name": "Mattias Jansson",
    "email": "mjansson@gmail.com",
    "time": "Tue Jul 14 10:44:30 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Jul 14 10:44:30 2026 +0200"
  },
  "message": "Fix data race in concurrent lazy initialization (#396)\n\nThe first allocation on any thread lazily calls rpmalloc_initialize(0), so when\nseveral threads make their first allocation simultaneously they all enter\nrpmalloc_initialize concurrently, racing on the plain-int initialized flag and on\nglobal_config - a thread could be handed a block backed by half-written global\nstate. Drive initialization as an atomic state machine (UNINIT -\u003e RUNNING -\u003e DONE):\nexactly one thread performs the global setup while the others wait for it to finish\nbefore allocating, with release/acquire ordering publishing the global_config writes\nto threads that observe completion.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5f51b75c6983e0e396d28d318d360f793801005f",
      "old_mode": 33188,
      "old_path": ".gitignore",
      "new_id": "68974194dbe9aea3107d6a662c28be1ec8f54077",
      "new_mode": 33188,
      "new_path": ".gitignore"
    },
    {
      "type": "modify",
      "old_id": "50b71e687528a7bfa73edc3b4e6701045ea44b28",
      "old_mode": 33188,
      "old_path": "CHANGELOG",
      "new_id": "6886504f99c1441eaf53e7a3ff7064a2645281e9",
      "new_mode": 33188,
      "new_path": "CHANGELOG"
    },
    {
      "type": "modify",
      "old_id": "e1e525c718ab1d8ed85bf959079466211a06ab88",
      "old_mode": 33188,
      "old_path": "rpmalloc/rpmalloc.c",
      "new_id": "f0cc4857af0c3ec27c9920111f7e297916de22e9",
      "new_mode": 33188,
      "new_path": "rpmalloc/rpmalloc.c"
    },
    {
      "type": "modify",
      "old_id": "7d4c86e9177ae83dc0440212e2cfde38ebddd87e",
      "old_mode": 33188,
      "old_path": "rpmalloc/rpmalloc.h",
      "new_id": "565c5110e3f8d05a386998dc29632d063bd2a774",
      "new_mode": 33188,
      "new_path": "rpmalloc/rpmalloc.h"
    }
  ]
}
