)]}'
{
  "commit": "321ded29e663ca040a0c4ecd3ff97452c9d30a3f",
  "tree": "27d20058054b0b73cdd0660c9c5d21148aa7d2e0",
  "parents": [
    "3abfbb571143ba865488b6c11f8ad75dda97d1a3"
  ],
  "author": {
    "name": "Peter Maydell",
    "email": "peter.maydell@linaro.org",
    "time": "Fri Nov 07 17:43:06 2025 +0000"
  },
  "committer": {
    "name": "Philippe Mathieu-Daudé",
    "email": "philmd@linaro.org",
    "time": "Tue Nov 18 19:56:11 2025 +0100"
  },
  "message": "system/qtest.c: Allow for multiple CHR_EVENT_CLOSED events\n\nIn the qtest_event() QEMUChrEvent handler, we create a timer\nand log OPENED on CHR_EVENT_OPENED, and we destroy the timer and\nlog CLOSED on CHR_EVENT_CLOSED. However, the chardev subsystem\ncan send us more than one CHR_EVENT_CLOSED if we\u0027re reading from\na file chardev:\n * the first one happens when we read the last data from the file\n * the second one happens when the user hits ^C to exit QEMU\n   and the chardev is finalized: char_fd_finalize()\n\nThis causes us to call g_timer_elapsed() with a NULL timer\n(which glib complains about) and print an extra CLOSED log line\nwith a zero timestamp:\n\n[I +0.063829] CLOSED\nqemu-system-aarch64: GLib: g_timer_elapsed: assertion \u0027timer !\u003d NULL\u0027 failed\n[I +0.000000] CLOSED\n\nAvoid this by ignoring a CHR_EVENT_CLOSED if we have already\nprocessed one.\n\nSigned-off-by: Peter Maydell \u003cpeter.maydell@linaro.org\u003e\nReviewed-by: Laurent Vivier \u003clvivier@redhat.com\u003e\nReviewed-by: Fabiano Rosas \u003cfarosas@suse.de\u003e\nMessage-ID: \u003c20251107174306.1408139-1-peter.maydell@linaro.org\u003e\nSigned-off-by: Philippe Mathieu-Daudé \u003cphilmd@linaro.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e4d1cd75daa53a9bcfda9681c008232e11626d52",
      "old_mode": 33188,
      "old_path": "system/qtest.c",
      "new_id": "cbeb7f37728ea2c8c3054af21339ebc3617b77f0",
      "new_mode": 33188,
      "new_path": "system/qtest.c"
    }
  ]
}
