)]}'
{
  "commit": "11c82a522798f87f892513ba23069e7f5b2f549a",
  "tree": "264faf5d8b2f417320ed62a50a3c08af7bc45d69",
  "parents": [
    "287cece627c2d08b052ca187426ca05e0188f99b"
  ],
  "author": {
    "name": "Joel Sing",
    "email": "joel@sing.id.au",
    "time": "Fri Jul 24 20:23:17 2026 +1000"
  },
  "committer": {
    "name": "Gopher Robot",
    "email": "gobot@golang.org",
    "time": "Mon Jul 27 09:13:35 2026 -0700"
  },
  "message": "all: avoid a goroutine deadlock on disassembler error\n\ntestExtDis currently has a goroutine deadlock - errc is an unbuffered\nchannel, which is written to from a goroutine that calls extdis. The\ngoroutine running testExtDis calls generate, which calls back into the\nanonymous function which then reads from ext.Dis. If extdis returns an\nerror, it will not write to ext.Dis which leaves a deadlock between the\ntwo goroutines - one writing on errc and one reading from ext.Dis.\n\nPrevent this by closing the ext.Dis channel if we encounter an error\nthat would be written to errc. This results in all current and future\ncalls to the anonymous function returning, generate will then return\nand errc will then be read. This is a minimal fix - this really needs\na redesign to improve the synchronisation and error handling (and\nideally it would be not duplicated for each architecture).\n\nChange-Id: I9354b43608d25a55152d3ec989869c2afc076ee5\nReviewed-on: https://go-review.googlesource.com/c/arch/+/805180\nReviewed-by: Cherry Mui \u003ccherryyz@google.com\u003e\nAuto-Submit: Joel Sing \u003cjoel@sing.id.au\u003e\nLUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com \u003cgolang-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nReviewed-by: Carlos Amedee \u003ccarlos@golang.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f0758625f9eaa5d97a6103010058bacfc493f6d4",
      "old_mode": 33188,
      "old_path": "arm/armasm/ext_test.go",
      "new_id": "f8d82a4f34c07e8fa823802af7fbd9df6162e109",
      "new_mode": 33188,
      "new_path": "arm/armasm/ext_test.go"
    },
    {
      "type": "modify",
      "old_id": "839eb3fd4df4f81b0750a156bbdd345ab8ffd460",
      "old_mode": 33188,
      "old_path": "arm64/arm64asm/ext_test.go",
      "new_id": "2e8b759936ca3f9b54381f101894fd7eb5c399ec",
      "new_mode": 33188,
      "new_path": "arm64/arm64asm/ext_test.go"
    },
    {
      "type": "modify",
      "old_id": "7d479dcd1e6169484e0698842daa626edc304bd4",
      "old_mode": 33188,
      "old_path": "loong64/loong64asm/ext_test.go",
      "new_id": "f4f2ec975296cb27c4b34835584321e22e40fa12",
      "new_mode": 33188,
      "new_path": "loong64/loong64asm/ext_test.go"
    },
    {
      "type": "modify",
      "old_id": "806701b21cda97b5d6826a97a52cc366503e257e",
      "old_mode": 33188,
      "old_path": "ppc64/ppc64asm/ext_test.go",
      "new_id": "36c95dcf61f9ceb148368f7f718d9e42445a1c2c",
      "new_mode": 33188,
      "new_path": "ppc64/ppc64asm/ext_test.go"
    },
    {
      "type": "modify",
      "old_id": "556cd015415bb82d6478637b86924fb3d968485f",
      "old_mode": 33188,
      "old_path": "riscv64/riscv64asm/ext_test.go",
      "new_id": "d5753f9ecae4d270f5ad2399f7c9281df3054ca2",
      "new_mode": 33188,
      "new_path": "riscv64/riscv64asm/ext_test.go"
    },
    {
      "type": "modify",
      "old_id": "2e31dd304ddf838e30dd0346ffb508fb871ebb55",
      "old_mode": 33188,
      "old_path": "x86/x86asm/ext_test.go",
      "new_id": "beb527bea694e15d0ee401708fa1a1899abd6ac3",
      "new_mode": 33188,
      "new_path": "x86/x86asm/ext_test.go"
    }
  ]
}
