Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2195638/?format=api
{ "id": 2195638, "url": "http://patchwork.ozlabs.org/api/patches/2195638/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260211152508.732487-7-berrange@redhat.com/", "project": { "id": 14, "url": "http://patchwork.ozlabs.org/api/projects/14/?format=api", "name": "QEMU Development", "link_name": "qemu-devel", "list_id": "qemu-devel.nongnu.org", "list_email": "qemu-devel@nongnu.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260211152508.732487-7-berrange@redhat.com>", "list_archive_url": null, "date": "2026-02-11T15:24:47", "name": "[v6,06/27] util: fix race setting thread name on Win32", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "48265f6756f7dc8ee874e1de47095d128445c6bb", "submitter": { "id": 2694, "url": "http://patchwork.ozlabs.org/api/people/2694/?format=api", "name": "Daniel P. Berrangé", "email": "berrange@redhat.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/qemu-devel/patch/20260211152508.732487-7-berrange@redhat.com/mbox/", "series": [ { "id": 491862, "url": "http://patchwork.ozlabs.org/api/series/491862/?format=api", "web_url": "http://patchwork.ozlabs.org/project/qemu-devel/list/?series=491862", "date": "2026-02-11T15:24:41", "name": "util: sync error_report & qemu_log output more closely", "version": 6, "mbox": "http://patchwork.ozlabs.org/series/491862/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2195638/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2195638/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>", "X-Original-To": "incoming@patchwork.ozlabs.org", "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=dU2vegMa;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)" ], "Received": [ "from lists.gnu.org (lists.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fB2PH3M6Hz1xtr\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 12 Feb 2026 02:27:47 +1100 (AEDT)", "from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1vqC6P-0004sx-D2; Wed, 11 Feb 2026 10:26:05 -0500", "from eggs.gnu.org ([2001:470:142:3::10])\n by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <berrange@redhat.com>)\n id 1vqC6K-0004oZ-Rk\n for qemu-devel@nongnu.org; Wed, 11 Feb 2026 10:26:00 -0500", "from us-smtp-delivery-124.mimecast.com ([170.10.129.124])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <berrange@redhat.com>)\n id 1vqC6J-0005ml-7u\n for qemu-devel@nongnu.org; Wed, 11 Feb 2026 10:26:00 -0500", "from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-317-vxqbIMosMR-SGpEGceCnzg-1; Wed,\n 11 Feb 2026 10:25:55 -0500", "from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id 6619C19560B2; Wed, 11 Feb 2026 15:25:51 +0000 (UTC)", "from toolbx.redhat.com (unknown [10.45.227.9])\n by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP\n id 0057530001A8; Wed, 11 Feb 2026 15:25:45 +0000 (UTC)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1770823558;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=9ZUN9qo2kVOayeNkrm7meCbsEZa6wbphY9wEaykh81U=;\n b=dU2vegMag2FHfFtpZHPLHSwUIURyjp02ifxq6SEPg+qEE6MRXCl63fMkkmSqP7QX9XVbn1\n f/itRNbxblxP2EfaneAB7cQYoQootySF/ezxnT3JpZQ2xYNEtbbZ4RJQ7ogkUlp/bjrOtn\n gn2Vem33OMqw2Qe2eDMYDK6APuAE5FM=", "X-MC-Unique": "vxqbIMosMR-SGpEGceCnzg-1", "X-Mimecast-MFC-AGG-ID": "vxqbIMosMR-SGpEGceCnzg_1770823551", "From": "=?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= <berrange@redhat.com>", "To": "qemu-devel@nongnu.org", "Cc": "Manos Pitsidianakis <manos.pitsidianakis@linaro.org>,\n Stefan Weil <sw@weilnetz.de>, \"Dr. David Alan Gilbert\" <dave@treblig.org>,\n Pierrick Bouvier <pierrick.bouvier@linaro.org>, devel@lists.libvirt.org,\n\t=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <philmd@linaro.org>, =?utf-8?q?Marc?=\n\t=?utf-8?q?-Andr=C3=A9_Lureau?= <marcandre.lureau@redhat.com>,\n Hanna Reitz <hreitz@redhat.com>, Kevin Wolf <kwolf@redhat.com>,\n qemu-block@nongnu.org, qemu-rust@nongnu.org,\n Paolo Bonzini <pbonzini@redhat.com>, Markus Armbruster <armbru@redhat.com>,\n Gerd Hoffmann <kraxel@redhat.com>,\n =?utf-8?q?Daniel_P=2E_Berrang=C3=A9?= <berrange@redhat.com>,\n Christian Schoenebeck <qemu_oss@crudebyte.com>,\n Richard Henderson <richard.henderson@linaro.org>", "Subject": "[PATCH v6 06/27] util: fix race setting thread name on Win32", "Date": "Wed, 11 Feb 2026 15:24:47 +0000", "Message-ID": "<20260211152508.732487-7-berrange@redhat.com>", "In-Reply-To": "<20260211152508.732487-1-berrange@redhat.com>", "References": "<20260211152508.732487-1-berrange@redhat.com>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=UTF-8", "Content-Transfer-Encoding": "8bit", "X-Scanned-By": "MIMEDefang 3.4.1 on 10.30.177.4", "Received-SPF": "pass client-ip=170.10.129.124;\n envelope-from=berrange@redhat.com;\n helo=us-smtp-delivery-124.mimecast.com", "X-Spam_score_int": "-20", "X-Spam_score": "-2.1", "X-Spam_bar": "--", "X-Spam_report": "(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001,\n DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001,\n RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,\n SPF_HELO_PASS=-0.001,\n SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no", "X-Spam_action": "no action", "X-BeenThere": "qemu-devel@nongnu.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "qemu development <qemu-devel.nongnu.org>", "List-Unsubscribe": "<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>", "List-Archive": "<https://lists.nongnu.org/archive/html/qemu-devel>", "List-Post": "<mailto:qemu-devel@nongnu.org>", "List-Help": "<mailto:qemu-devel-request@nongnu.org?subject=help>", "List-Subscribe": "<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>", "Errors-To": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org", "Sender": "qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org" }, "content": "The call to set the thread name on Win32 platforms is done by the parent\nthread, after _beginthreadex() returns. At this point the new child\nthread is potentially already executing its start method. To ensure the\nthread name is guaranteed to be set before any \"interesting\" code starts\nexecuting, it must be done in the start method of the child thread itself.\n\nReviewed-by: Richard Henderson <richard.henderson@linaro.org>\nReviewed-by: Dr. David Alan Gilbert <dave@treblig.org>\nReviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>\nReviewed-by: Markus Armbruster <armbru@redhat.com>\nSigned-off-by: Daniel P. Berrangé <berrange@redhat.com>\n---\n util/qemu-thread-win32.c | 15 ++++++++++-----\n 1 file changed, 10 insertions(+), 5 deletions(-)", "diff": "diff --git a/util/qemu-thread-win32.c b/util/qemu-thread-win32.c\nindex 9595a5b090..255c88571f 100644\n--- a/util/qemu-thread-win32.c\n+++ b/util/qemu-thread-win32.c\n@@ -22,6 +22,8 @@ typedef HRESULT (WINAPI *pSetThreadDescription) (HANDLE hThread,\n static pSetThreadDescription SetThreadDescriptionFunc;\n static HMODULE kernel32_module;\n \n+static void set_thread_description(const char *name);\n+\n static bool load_set_thread_description(void)\n {\n static gsize _init_once = 0;\n@@ -225,6 +227,7 @@ struct QemuThreadData {\n void *arg;\n short mode;\n NotifierList exit;\n+ char *name; /* Freed in win32_start_routine */\n \n /* Only used for joinable threads. */\n bool exited;\n@@ -266,6 +269,10 @@ static unsigned __stdcall win32_start_routine(void *arg)\n void *(*start_routine)(void *) = data->start_routine;\n void *thread_arg = data->arg;\n \n+ if (data->name) {\n+ set_thread_description(data->name);\n+ g_clear_pointer(&data->name, g_free);\n+ }\n qemu_thread_data = data;\n qemu_thread_exit(start_routine(thread_arg));\n abort();\n@@ -316,7 +323,7 @@ void *qemu_thread_join(QemuThread *thread)\n return ret;\n }\n \n-static void set_thread_description(HANDLE h, const char *name)\n+static void set_thread_description(const char *name)\n {\n g_autofree wchar_t *namew = NULL;\n \n@@ -329,7 +336,7 @@ static void set_thread_description(HANDLE h, const char *name)\n return;\n }\n \n- SetThreadDescriptionFunc(h, namew);\n+ SetThreadDescriptionFunc(GetCurrentThread(), namew);\n }\n \n void qemu_thread_create(QemuThread *thread, const char *name,\n@@ -344,6 +351,7 @@ void qemu_thread_create(QemuThread *thread, const char *name,\n data->arg = arg;\n data->mode = mode;\n data->exited = false;\n+ data->name = g_strdup(name);\n notifier_list_init(&data->exit);\n \n if (data->mode != QEMU_THREAD_DETACHED) {\n@@ -355,9 +363,6 @@ void qemu_thread_create(QemuThread *thread, const char *name,\n if (!hThread) {\n error_exit(GetLastError(), __func__);\n }\n- if (name) {\n- set_thread_description(hThread, name);\n- }\n CloseHandle(hThread);\n \n thread->data = data;\n", "prefixes": [ "v6", "06/27" ] }