Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.1/patches/2221219/?format=api
{ "id": 2221219, "url": "http://patchwork.ozlabs.org/api/1.1/patches/2221219/?format=api", "web_url": "http://patchwork.ozlabs.org/project/glibc/patch/PR3PR06MB6889550A149BDACDCCA6C021FF5B2@PR3PR06MB6889.eurprd06.prod.outlook.com/", "project": { "id": 41, "url": "http://patchwork.ozlabs.org/api/1.1/projects/41/?format=api", "name": "GNU C Library", "link_name": "glibc", "list_id": "libc-alpha.sourceware.org", "list_email": "libc-alpha@sourceware.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<PR3PR06MB6889550A149BDACDCCA6C021FF5B2@PR3PR06MB6889.eurprd06.prod.outlook.com>", "date": "2026-04-08T20:07:49", "name": "nptl: futex_lock_pi deadlock detection provides valuable information but it is turned into a rather cryptic assertion failure", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "8e6ec10b9dd115c66c54b82df468db09ad2aa7f8", "submitter": { "id": 93041, "url": "http://patchwork.ozlabs.org/api/1.1/people/93041/?format=api", "name": "Moritz KLAMMLER (FERCHAU)", "email": "Moritz.Klammler@ferchau.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/glibc/patch/PR3PR06MB6889550A149BDACDCCA6C021FF5B2@PR3PR06MB6889.eurprd06.prod.outlook.com/mbox/", "series": [ { "id": 499208, "url": "http://patchwork.ozlabs.org/api/1.1/series/499208/?format=api", "web_url": "http://patchwork.ozlabs.org/project/glibc/list/?series=499208", "date": "2026-04-08T20:07:49", "name": "nptl: futex_lock_pi deadlock detection provides valuable information but it is turned into a rather cryptic assertion failure", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/499208/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2221219/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2221219/checks/", "tags": {}, "headers": { "Return-Path": "<libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "libc-alpha@sourceware.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "libc-alpha@sourceware.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=ferchau.com header.i=@ferchau.com header.a=rsa-sha256\n header.s=s2048 header.b=D/ZGfjlw;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=ablegroupde.onmicrosoft.com header.i=@ablegroupde.onmicrosoft.com\n header.a=rsa-sha256 header.s=selector1-ablegroupde-onmicrosoft-com\n header.b=F1V4Sv3u;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org;\n receiver=patchwork.ozlabs.org)", "sourceware.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key,\n unprotected) header.d=ferchau.com header.i=@ferchau.com header.a=rsa-sha256\n header.s=s2048 header.b=D/ZGfjlw;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=ablegroupde.onmicrosoft.com header.i=@ablegroupde.onmicrosoft.com\n header.a=rsa-sha256 header.s=selector1-ablegroupde-onmicrosoft-com\n header.b=F1V4Sv3u", "sourceware.org;\n dmarc=pass (p=none dis=none) header.from=ferchau.com", "sourceware.org; spf=pass smtp.mailfrom=ferchau.com", "server2.sourceware.org;\n arc=pass smtp.remote-ip=212.211.178.98", "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=ferchau.com;" ], "Received": [ "from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4frYzM1CrQz1yD3\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 09 Apr 2026 06:08:20 +1000 (AEST)", "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 9B00E4BA2E31\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 8 Apr 2026 20:08:18 +0000 (GMT)", "from mx1.ferchau.com (mail.ablegroup.de [212.211.178.98])\n by sourceware.org (Postfix) with ESMTPS id 1CD2D4BA2E10\n for <libc-alpha@sourceware.org>; Wed, 8 Apr 2026 20:07:54 +0000 (GMT)", "from gmzrzex001.ferchau.local ([10.100.54.1])\n by mx1.ferchau.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 08 Apr 2026 22:07:51 +0200", "from GMZRZEX002.Ferchau.local (10.100.54.2) by\n GMZRZEX001.Ferchau.local (10.100.54.1) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.2.2562.35; Wed, 8 Apr 2026 22:07:51 +0200", "from AM0PR07CU002.outbound.protection.outlook.com (40.93.65.65) by\n exchange.ferchau.com (172.16.19.112) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.2.2562.35 via Frontend Transport; Wed, 8 Apr 2026 22:07:51 +0200", "from PR3PR06MB6889.eurprd06.prod.outlook.com (2603:10a6:102:87::9)\n by FRZPR06MB11165.eurprd06.prod.outlook.com (2603:10a6:d10:1c9::19) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.17; Wed, 8 Apr\n 2026 20:07:49 +0000", "from PR3PR06MB6889.eurprd06.prod.outlook.com\n ([fe80::7396:2256:3ddb:4637]) by PR3PR06MB6889.eurprd06.prod.outlook.com\n ([fe80::7396:2256:3ddb:4637%3]) with mapi id 15.20.9769.016; Wed, 8 Apr 2026\n 20:07:49 +0000" ], "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 sourceware.org 9B00E4BA2E31", "OpenDKIM Filter v2.11.0 sourceware.org 1CD2D4BA2E10" ], "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 1CD2D4BA2E10", "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 1CD2D4BA2E10", "ARC-Seal": [ "i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1775678874; cv=pass;\n b=GIzrxgcGjtuFrtXHJ/DWTyRnkgO9S+Z0ShS/yMmOjFoQKgdnjMOv0C6IJ7j0QXnSLaD7Xgjuly/ys55egSZwBYRUF0pQpyAT337QYl5AYPJr9YH5ADa5Gb6koBPlRfMmle8zoK5gtS/+ptr7fa5Z5Fv7Ashi2YS8X4BmDcKwzzI=", "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=GSd9pO4LlRFWEL6RWch/pKEVTvNmPCJ3dvVtiEXH3qlw1GPIqiMGjShYvn0h/z0IDthhL4ZN6rh01sF3nYQhMQe7cJRwnQQzGrGDNIbhoYhv84/LTBobfwW9XavBkpBKYGKAyeeauDuACGH+U2gApeT53UMzgk316anb7k/xZmQh+78MpI9VVzKDlXau5lU0CG6mrMpNwWXE38nqIPfOx+yjb/Z9vj3j3LD/5kYPqKiI8HR01tXv7GEwW0GxXgFYvrLE4WdPSDsGa0BoHF49C0kk5Nx62bGARHteuljLrbo28VHe7X4JVD2xMrBNyPjhZM/LVFQnlv2O7MxzK4bRmg==" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=sourceware.org; s=key;\n t=1775678874; c=relaxed/simple;\n bh=641FJIg9ZZnleQZ6M++NunVwlzOT7ltTlwn+0vMX2dQ=;\n h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID:\n MIME-Version;\n b=eMGiI2EilRmWHWX4KUhPj+F4ghLYA/hhWgwGY0tvmyNN5Nh7OYlmoE1upLRqGS1PPpFL97A6Ydjnb4WY3zrFDqObTcsCuTLXB026Pwy+ePrOdaaiHIPw0fDCxwSoDRYDI+B6+JvTwF1bwbxggwEs4OXB9NDgU67SHB4am13+qm4=", "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=641FJIg9ZZnleQZ6M++NunVwlzOT7ltTlwn+0vMX2dQ=;\n b=Zxf65g3TjuX8MozQQ7DdXp11LtRzqxYub10CENSUZa/0EnG31JVqqudQyyo7mXISBXpCFQOfGEZDuoWVuCsa/DB8O3F3wOVkSIfhd4oa08K2nRpncFUSxn/2jaP8saRlLu09v4hRMR0YjVVkHIKyg0WfVxt26KIiuNwAyGpYeyUFWLo2opfaXO0HvOLf7x0chqGIJ8UYmlVG3FAKdUx/QITpogycb/JPGtDgMkxZJuWKxzEtdZx7qC1fb+2vRfwIyddTgK9vZ2dlNRhmGBNvxcoAi9rqcyJdBbSPYwJaPLUm+uNp6vrtLBPfaFWyv2Ozc17nEWKZ+TdqJQTJ5vUy2A==" ], "ARC-Authentication-Results": [ "i=2; server2.sourceware.org", "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=ferchau.com; dmarc=pass action=none header.from=ferchau.com;\n dkim=pass header.d=ferchau.com; arc=none" ], "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=ferchau.com; i=@ferchau.com; q=dns/txt; s=s2048;\n t=1775678874; x=1807214874; h=arc-seal:arc-message-signature:\n arc-authentication-results:dkim-signature:from:to:subject:\n thread-topic:thread-index:date:message-id:references:\n in-reply-to:accept-language:content-language:\n x-ms-has-attach:x-ms-tnef-correlator:msip_labels:\n authentication-results:x-ms-publictraffictype:\n x-ms-traffictypediagnostic:\n x-ms-office365-filtering-correlation-id:\n x-ms-exchange-senderadcheck:x-ms-exchange-antispam-relay:\n x-microsoft-antispam:x-microsoft-antispam-message-info:\n x-forefront-antispam-report:\n x-ms-exchange-antispam-messagedata-chunkcount:\n x-ms-exchange-antispam-messagedata-0:content-type:\n content-transfer-encoding:mime-version:\n x-exchange-routingpolicychecked:\n x-ms-exchange-crosstenant-authas:\n x-ms-exchange-crosstenant-authsource:\n x-ms-exchange-crosstenant-network-message-id:\n x-ms-exchange-crosstenant-originalarrivaltime:\n x-ms-exchange-crosstenant-fromentityheader:\n x-ms-exchange-crosstenant-id:\n x-ms-exchange-crosstenant-mailboxtype:\n x-ms-exchange-crosstenant-userprincipalname:\n x-ms-exchange-transport-crosstenantheadersstamped:\n x-cse-connectionguid:x-cse-msgguid:ironport-data:\n ironport-hdrordr:x-talos-cuid:x-talos-muid:x-ironport-av;\n bh=641FJIg9ZZnleQZ6M++NunVwlzOT7ltTlwn+0vMX2dQ=;\n b=D/ZGfjlwi44RYwc5ZIk9leqeVtpWk+bbapB9Pt22oRFYtCHVOlUFuLUM\n HyxJynHL5Ydtsr6HpOvPGg6o3EhDG/ROAnlIVlnGaeg4HNzpAE0kOcjOg\n +t+1OuvG/fDqb3jIaU4tfWi1nxO84ZTu3jH1fDOaAerK4IRy2800Uin6k\n 8CFLSuhdwW38kZtUIEaLkVUPAhkixu/aS/eZDQ31abBQli/j3ev5nUjVh\n 0WaoIuXTfQ487lhahXA9vyY0aMWqKoyXt1oWuk6j85R37sna0WH3mS6jx\n RLiDdbSGcYpUzkseO9cLuc8rRVToerMNhH9WnweANMnWqT9jsdXNBZL0J w==;", "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=ablegroupde.onmicrosoft.com; s=selector1-ablegroupde-onmicrosoft-com;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=641FJIg9ZZnleQZ6M++NunVwlzOT7ltTlwn+0vMX2dQ=;\n b=F1V4Sv3uFcFswtPiks6o3AiTR5HM19eWxOVcGUOCQwHa0L1bbbIr/TkQdyGiUKJrliWWfIRJv4xG6wZLXcxoJuQMtrtGYAcyaDPLmQ7qNetm4LFkRMNwM9AHvdnP6TNZczC4TijAsUuLtSGZAe2aOKG0Rqi1U5IuP0dgndXhQOg=" ], "X-CSE-ConnectionGUID": "hDKeWhldT/CuCNoVDLOTBg==", "X-CSE-MsgGUID": "3aitj2RsSweg6yjGmvCffA==", "IronPort-Data": "A9a23:Jlyi/a1WsTg2z2qeGvbD5aBwkn2cJEfYwER7XKvMYLTBsI5bpzNVx\n zRKWz3Va/aJYTCnfNx3a4Sx9EkPuZLdmoRhSAduqSg9HnlHl5HIVI+TRqvS04N+DSFioGZPt\n Zh2hgzodZhsJpPkjk7zdOCn8T8kjP/gqoPUUIbsIjp2SRJvVBAvgBdin/9RqoNziLBVOSvU0\n T/Ji5OZYgTNNwJcaDpOtfrf8EM35pwehRtD1rAATaET1LPhvyRNZH4vDfnZB2f1RIBSAtm7S\n 47rpJml/nnU9gsaEdislLD2aCUiGtY+6iDX1xK684D76vRzjnRaPpQTbZLwWm8O49m9pO2d/\n f0W3XCGpafFCYWX8AgVe0Ew/yiTpsSq8pefSZS0mZT7I0Er7xIAahihZa07FdRwxwp5PY1B3\n fw0Cz0ybhSPu6Wd3ZmdTddAouMfBsa+aevzulk4pd3YJdkDc6rxbpWSvYYe8joqjcBHALDaY\n MEQbVKDbjyZO1sWYg9RVc54xY9EhVGmG9FcgHeSv6sr8S7wyAV01bzgKvLbd8aBRcxI2E2fo\n woq+kymUktLaYzHkVJp9Fr3j+7Tn3nBQ7kNGbLm5/xFhUO4yGI6XUh+uVyT5KPRZlSFc9tTK\n 0ER9zAwpKx05kWtQ935VjW8oXiNpBlaXMBfe8U+6QuGj6PQ+waQLnMDUyRKZcMvrsJwQiYlv\n mJlhPvmAC51orCFESrEsLmZtziyMDVTKWgJbCtsoRY53uQPabob1nrnJuuP2obv5jEpMVkcG\n wy3kRU=", "IronPort-HdrOrdr": "A9a23:wGQ8tKwZo1rZgR28GOWgKrPxdegkLtp133Aq2lEZdPULSKOlfp\n GV8MjziyWYtN9IYgBbpTnyAtj8fZq6z+853WBxB8bpYOCCggWVxe5ZnO3fKlHbak7DH6tmpN\n xdmstFeZHN5DpB/L/HCWCDer5KqrjmzEnrv5an854Ed3AyV0gK1XYdNu/vKDwQeOAwP+tcKH\n Pz3LskmxOQPVgHZMWyAXcIG9PEu8DKk5zeZxsHDQ4M6QWFjz+kgYSKXCSw71M7aXdi0L0i+W\n /Kn0jS/aO4qcy2zRfayiv684lWsMGJ8KoMOOW8zuwubhn8gAehY4psH5eYuioune2p4FE21P\n HRvhYbOdhp4X+5RBD1nfKt4Xih7N8d0Q6h9baquwqnnSU/fkN/NyN1v/MbTvIe0TtmgDgz6t\n MM44vTjesqMfqJplWD2zGAbWAaqqK5zEBS79I7njhRV5ATZ6RWqpFa9ERJEI0YFCa/84w/Fv\n JyZfusrcq+XGnqGEwxhFMftuCETzA2BFOLU0ICssua33xfm2141VIRwIgakm0b/JwwRpFY76\n CcW54Y341mX4sTd+ZwFe0BScy4BijERg/NKnubJRDiGLscM3zAppbr6PE+5f2sepYP0Jwu8a\n 6xGG9wpCo3YQbjGMeO1JpE/lTER3i8Ry3kzoVE651wqtTHNc7W2O24OSUTeueb0oci65fgKo\n aO0bptcozeEVc=", "X-Talos-CUID": "\n 9a23:ip0OEGmIep2aZkgzyNyCyEYINIrXOX3x73rvI0u0NSFCVZazTmG83IRYucU7zg==", "X-Talos-MUID": "\n 9a23:o2IErg5aLbX9t4OayOvpdQbnxowz6qWyCho3iq4ZtsbaJC5fPim2gjqeF9o=", "X-IronPort-AV": "E=Sophos;i=\"6.23,168,1770591600\"; d=\"scan'208\";a=\"78295800\"", "From": "\"Moritz KLAMMLER (FERCHAU)\" <Moritz.Klammler@ferchau.com>", "To": "Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>,\n \"libc-alpha@sourceware.org\" <libc-alpha@sourceware.org>", "Subject": "[PATCH] nptl: futex_lock_pi deadlock detection provides valuable\n information but it is turned into a rather cryptic assertion failure", "Thread-Topic": "[PATCH] nptl: futex_lock_pi deadlock detection provides valuable\n information but it is turned into a rather cryptic assertion\n failure", "Thread-Index": "AQHcbnK4Dzm02VYQ8EyWQ8MgFDPAAbUl6RwAgKa+5hCABn8tAIADIbsW", "Date": "Wed, 8 Apr 2026 20:07:49 +0000", "Message-ID": "\n <PR3PR06MB6889550A149BDACDCCA6C021FF5B2@PR3PR06MB6889.eurprd06.prod.outlook.com>", "References": "\n <PR3PR06MB688909B85CF5747F25CF2713FFAAA@PR3PR06MB6889.eurprd06.prod.outlook.com>\n <2bf1c649-8a6a-4f9e-9bc7-c01f2fce81c6@linaro.org>\n <PR3PR06MB6889BC6F2317E93C3D09ECFAFF51A@PR3PR06MB6889.eurprd06.prod.outlook.com>\n <34621bae-9591-4a43-84f8-245692d31fbc@linaro.org>", "In-Reply-To": "<34621bae-9591-4a43-84f8-245692d31fbc@linaro.org>", "Accept-Language": "de-DE, en-US", "Content-Language": "de-DE", "X-MS-Has-Attach": "", "X-MS-TNEF-Correlator": "", "msip_labels": "", "authentication-results": [ "legolas.ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=ferchau.com header.i=@ferchau.com header.a=rsa-sha256\n header.s=s2048 header.b=D/ZGfjlw;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=ablegroupde.onmicrosoft.com header.i=@ablegroupde.onmicrosoft.com\n header.a=rsa-sha256 header.s=selector1-ablegroupde-onmicrosoft-com\n header.b=F1V4Sv3u;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org;\n receiver=patchwork.ozlabs.org)", "sourceware.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key,\n unprotected) header.d=ferchau.com header.i=@ferchau.com header.a=rsa-sha256\n header.s=s2048 header.b=D/ZGfjlw;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=ablegroupde.onmicrosoft.com header.i=@ablegroupde.onmicrosoft.com\n header.a=rsa-sha256 header.s=selector1-ablegroupde-onmicrosoft-com\n header.b=F1V4Sv3u", "sourceware.org;\n dmarc=pass (p=none dis=none) header.from=ferchau.com", "sourceware.org; spf=pass smtp.mailfrom=ferchau.com", "server2.sourceware.org;\n arc=pass smtp.remote-ip=212.211.178.98", "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=ferchau.com;" ], "x-ms-publictraffictype": "Email", "x-ms-traffictypediagnostic": "PR3PR06MB6889:EE_|FRZPR06MB11165:EE_", "x-ms-office365-filtering-correlation-id": "bd7575ac-b6ae-4e4b-4e81-08de95aa8208", "x-ms-exchange-senderadcheck": "1", "x-ms-exchange-antispam-relay": "0", "x-microsoft-antispam": "BCL:0;\n ARA:13230040|1800799024|376014|366016|38070700021|18002099003|22082099003|56012099003;", "x-microsoft-antispam-message-info": "\n H0MAU+m35onYz08VMMxMlo2CBNLgmFKHbgVvFe7skCJ5mJshY/bpeYvqA3MRWLKtwHi3ey03/0jnyX4mR9na37uZd+2cFJnZBc/dsFqnnP64/uezma49ZxUVk6oUvTzS4wtRRHT15p68SVIDD48IBhiJ+dH23I7YPvswhFizhAG/jrQ9s4sm+EN8Lge2NSsNCMYPQS3nCS+G3ukin5LgqdB91V49Qz3Mo1y/3PhLZvbBQ9h6qpnKecAbErbQiy8zW1uP7Kxnu9bb2QqjE4BsC/IRFR14v9edC28qZ8mWN0PeFGSNQald562EbnFXp9r/x145tXbjZP4RoM9Ul1TXUswNmWd+dFYbdwQgU4qLSCU0sNm6DDWLpa5qDVaSXCRCENiOhxTBoJ0DWZwL/DFMmlDzRWX8SHHu+jtpoZRNt95sCmthoW101N4QR009NuQgwbjMgtEkIGhVW/QUQ23hl6gJ/htGMYY/aaaGzEFpgLYEEppVt5kehFzfbXXSln5aLhS+JPjxTk0uaYDrOerpLgXg+U6yyPcYrUDKC0fr1f7rudddimZdVN4YK6TyqeCT5BBNN85K4kAZym70smQmbTnw8JYWO92vdYPpEsA9JdE7uG/cTmRu8cWvOYbAfacSC8ibNuWLcJnkcAz0R/COY1P71DydcjJIRairNonqYktg3P7rYVWgRYKZjQqJJWBGmNL4ciOdU7imv4bimh7/yGTz7KwfN86+o1Sx6GlrQmNkybGkH0pXvKf3dh/Zwady", "x-forefront-antispam-report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:PR3PR06MB6889.eurprd06.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230040)(1800799024)(376014)(366016)(38070700021)(18002099003)(22082099003)(56012099003);\n DIR:OUT; SFP:1102;", "x-ms-exchange-antispam-messagedata-chunkcount": "1", "x-ms-exchange-antispam-messagedata-0": "=?utf-8?q?gXOvmFvLzLlWJBW239zftykqviy+?=\n\t=?utf-8?q?cMTMY6b/3tlUkKNRn7HQBghPD4lqpEAN2vkZ2tB252gt2tn4HrC/NjxRc9WNWyoqU?=\n\t=?utf-8?q?JptxNob33rwdrhLMS5m/+vmi1koirbOSwJ33lt9QJdZ3jsWbrUpZaWoXjRby1igH6?=\n\t=?utf-8?q?2HfiKj1ePa2ZNNp8oZs/ukdUTKv68ma0JXXZn64/4QHLADZ/Dfs4L0Ap+i3/4QAP+?=\n\t=?utf-8?q?1Ok7W6v36NMC/d5ZU4/hTp9y12noIilfJEjv1vKvnXaMSyuvtzDDc2ChL8QD8n/rr?=\n\t=?utf-8?q?njRpg+sJMT3qWuQiWxmJamMr+JHa9D+bXaXtmbAUwvY2097wu+gJ7hJ5v3D0G+Dmz?=\n\t=?utf-8?q?CcTQFjVhVE7Eiv6xDUHXMDKfN4F/6tv47oUSV5xxS5AU8KTL+XbmJk/aIU5p1CK1C?=\n\t=?utf-8?q?vX4VpZogNiqrQVwDkCmUA708XooAGy3sz3CrhA8zA/NUwVu02r2YuwgnZ07MP0tcj?=\n\t=?utf-8?q?Wl/4BWz0g32e+F/5zYFtup51lTWwmNtdcoC1nIiHgcuTlu2UmBxry7zQuxSH3Ew5l?=\n\t=?utf-8?q?pPk2S6I7G1LRb08zyke0kYO8UVKEQ69hYnaNcDoY9P7P32QrHPkhyFq6hb5eawiIm?=\n\t=?utf-8?q?Q3imNTFp6/HLgLPr6cZ9x1rJQs2hIADDPz3fL2VpmKndESf02FyXdZCKQSKEaXaRq?=\n\t=?utf-8?q?XwL0GYATnjY7eiVX4PQKHv06Fh60wDm1/JGVFKfLe0x10eaDoQl9fHnPqihCRdLVO?=\n\t=?utf-8?q?5rMqT3m6Pe3JSc7PjBN5mO3hkPUdOD0ETXz4x4/+vU+88W5pzeY8vYAE56yAz5Gx4?=\n\t=?utf-8?q?EUNU8UNGe51/3r64VDjV0tPzRnF8sc0F8391PRGoK+Vkh7kHeyDiDtVb1uJg0LZ2D?=\n\t=?utf-8?q?6/SjKVu6Cuk2phT5lZ18JPqjdjtNdahABR3W8FvH3cUsEgx/WgvMHbGnD4u+/7UNW?=\n\t=?utf-8?q?yCN5oqd/ey1ZlBzsN1guXE7w39e3pfZkHClbmYfpEB5URkorSIb4tjwb/RV4NBqtS?=\n\t=?utf-8?q?vJuWDm5tqPKoX2ieFM7iFbrO1aXko77rE1DIcDqlTavZRDy0yOlNvuIJnpzL9B3je?=\n\t=?utf-8?q?pLeYUjZSEUnMzLeKPW5OjyYImHrJmoCLVnEDeQhL4YtMl79GFQAh1iwpEAYo9zq9i?=\n\t=?utf-8?q?+omkrTMw+XPAFSbfAFSL7QQEsNA28MQDTkYaPw0m5zl0w0X3FpNsYjSa03AjzRiXE?=\n\t=?utf-8?q?NDU4Xr+IdfAcdNDqCgtvkcE8rH1R1nWdRYcG8OlOTMnMj3PJE2f855cjTSs2udbRu?=\n\t=?utf-8?q?tfCPusnhGF4tLOBKJRAbApirH3qGCtQ7y4STS+NDLBm8eEfoNXZpOPb7oboE5mIZN?=\n\t=?utf-8?q?sFgu3/TYXIN7quoHZKDahD5kwulSteKYWI6gun3Qh4SvWRB+Sph7Mm5+jYKZc3oO7?=\n\t=?utf-8?q?6HJbAAtzjyLQKxRZK8Sk2IThCGBxyuTcy+fljQMdBwxRiyZZPxK7PlKdZGbpEsr70?=\n\t=?utf-8?q?2K56g+v+6l4q0UmvhU7XaRpYGJaquKzI4ydShgI6SZbw8YABTHTn9Kqc/1+TKKaIv?=\n\t=?utf-8?q?zX63olu8ge0HKvT73NwokHgG7P0feALK64BjXd+w3rdTALV1SZFyG8MiMnIjDkhzV?=\n\t=?utf-8?q?xKTO/u1FjsWK4vaOdcpPxLUoWDv/1GUPuvD4pLu8kugEhfnMMRd+xG6OWkQLLtsCw?=\n\t=?utf-8?q?UhzX7XtxZ9fR+EzDV5mJXYwgHxITv9HfLkwNQCP5oeZh1ZMqeGrIE1TeKQ27ewQ/Z?=\n\t=?utf-8?q?OeF7yWORUY301LPDAK7wF4/uGI1b0blw=3D=3D?=", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "base64", "MIME-Version": "1.0", "X-Exchange-RoutingPolicyChecked": "\n fSWSWc2K6V/7UwI7RchYUH5SHSi1gNrPSURkXG5nqCiQf8bBuxI3WC18KwwHp5OkFFZ/gD463TXtDxAi2lDdRZ7PsOKdWpcw26qV5/bb2yytmNWOEoJlHunp+L0voMk059SOPEfJjh5sIqTqChBGuFNXmLqUka5aegqQI8J8PSQ8EvlLiLIryYmw55XDlCHJDZpo9xbKc2N8BW7kDXI5/Le68REU7sSDBy8ruYnkEWvPLC55MASuND0DkyouaZPRoDg7PEpd4qcTHzsEZFpg0ZA8E3LMVWk+wpmS8N4PGL00uOzFZOPqVne3I43dOXWMeYLEDXKv/VupsKLs56Oypw==", "X-MS-Exchange-CrossTenant-AuthAs": "Internal", "X-MS-Exchange-CrossTenant-AuthSource": "PR3PR06MB6889.eurprd06.prod.outlook.com", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n bd7575ac-b6ae-4e4b-4e81-08de95aa8208", "X-MS-Exchange-CrossTenant-originalarrivaltime": "08 Apr 2026 20:07:49.1703 (UTC)", "X-MS-Exchange-CrossTenant-fromentityheader": "Hosted", "X-MS-Exchange-CrossTenant-id": "9a3c2f68-d5b5-4769-b2f8-8d6fe142b164", "X-MS-Exchange-CrossTenant-mailboxtype": "HOSTED", "X-MS-Exchange-CrossTenant-userprincipalname": "\n Zjwpa4yebfyOPS27182zWDzwjqlVVd3OAvhGO7h+6zYVK99hXuItR9QPQFRvhyybEASDkA0jR5GA+bsWgrraEL3wXEJODZYG7Tuuyd4DzzI=", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "FRZPR06MB11165", "X-BeenThere": "libc-alpha@sourceware.org", "X-Mailman-Version": "2.1.30", "Precedence": "list", "List-Id": "Libc-alpha mailing list <libc-alpha.sourceware.org>", "List-Unsubscribe": "<https://sourceware.org/mailman/options/libc-alpha>,\n <mailto:libc-alpha-request@sourceware.org?subject=unsubscribe>", "List-Archive": "<https://sourceware.org/pipermail/libc-alpha/>", "List-Post": "<mailto:libc-alpha@sourceware.org>", "List-Help": "<mailto:libc-alpha-request@sourceware.org?subject=help>", "List-Subscribe": "<https://sourceware.org/mailman/listinfo/libc-alpha>,\n <mailto:libc-alpha-request@sourceware.org?subject=subscribe>", "Errors-To": "libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org" }, "content": "Thanks for your detailed review. Those additional test support helpers\nI haven't been aware of do help simplify the code a great amount indeed.\n\n>> +#ifndef TST_DEADLK_MUTEX_PI\n>> +# define TST_DEADLK_MUTEX_PI 0\n>> +#endif\n>\n> Just use the TST_DEADLK_MUTEX_PI=1 and move this test to\n> tst-deadlk-pi.c.\n\nAh, sorry, I forgot to explain that point in my previous message. I had\noriginally added this configurability based on the assumption that we\nmight want to use it to also test that non-PI mutexes actually do\ndeadlock by making these XFAIL tests, but didn't went as far as actually\ndoing that. However, based on your other feedback ...\n\n>> The added test case currently only checks for EDEADLK to be returned,\n>> but doesn't cover the cases where we still expect the deadlock to\n>> happen. I could add these as well, but it would introduce an\n>> (unreasonably?) long delay, waiting for the alarm clock to go off\n>> eventually. Would you rather take this delay over the lack of test\n>> coverage? Please also let me know whether having one test executable\n>> that loops over the various types (current patch) or one executable\n>> per type would be preferred.\n>\n> I would prefer the later (one less binary to build and run). For the\n> deadlock to happen, it would be better to spawn a new process with\n> support_capture_subprocess, trigger the deadlock, and wait it with\n> short delayed_exit value.\n\n... I went ahead and merged everything into a single tst-deadlk.c file\nwhich now checks PI and non-PI mutexes alike. Since the number of\ncombinations became quite large, I refactored the test code to remove\nthe explicit list in lieu of some nested loops and a simple\nshould_detect_deadlock predicate function.\n\nI've picked 3 s for a delayed_exit value, hoping that this wold be a\nsensible choice, given that nptl/tst-eintr1.c uses the same (and seems\nto be the only other NPTL test case currently using delayed_exit).\nAlas, this makes the test register approx. 30 s on the clock. I've\nraised the overall timeout (which should never be hit) to 60 s\naccordingly. Are you okay which such a slow test or do we need to\nimprove on this? We could, for example, do all the waiting for all\nthe subprocesses in parallel, but I'm afraid that it would add quite\nsome complexity. A lower-hanging fruit might be to reduce the delay\nfrom 3 s to 1 s, which has worked well for my computer even with high\nconcurrent CPU load, but I'm not sure how universally acceptable it\nmight be.\n\nI found that still using alarm(3) in the subprocess and then expecting\n-SIGALRM in the parent would result in slightly simpler code compared\nto the delayed_exit but since you recommended it and I've also seen\nthat other test cases have been refactored in the past specifically to\nreplace alarm with delayed_exit, I assume that this is preferred way\nto go.\n\nLooking forward to your feedback on the updated patch.\n\n\nFrom de343146051b75e96e04f4167c2b6148990abca0 Mon Sep 17 00:00:00 2001\nFrom: Moritz Klammler <moritz.klammler.ext@siemens.com>\nDate: Tue, 7 Apr 2026 21:36:12 +0200\nSubject: [PATCH 1/1] nptl: Propagate EDEADLK from FUTEX_LOCK_PI for\n errror-checking and recursive mutexes\n\nThis patch changes the behavior of pthread_mutex_lock for error-checking and\nrecursive PI mutexes in case of non-trivial deadlock. The user-space code\ndoesn't detect the case where two or more threads would mutually deadlock each\nother, but the Linux kernel can. NPTL's previous behavior, if the syscall\nreturns EDEADLK, was to run into an assertion. With this patch, the error code\nwill be propagated to the caller who might then, at its own discretion and with\nknowledge about the application-level logic, use it to attempt resolving the\nsituation gracefully or terminate the process after all.\n\nThe behavior for other (normal) mutex types is not changed, they will\ncontinue to actually deadlock the calling thread. A new test is added\nto assert the expected behavior of all mutex types.\n\nSince POSIX doesn't seem to mandate any particular behavior for this situation,\nand no existing code should have a dependency of running into an assertion,\nchanging this behavior to what is presumably the most useful one seems to be\njustified.\n\nThe previous (design) discussion can be seen here:\nhttps://sourceware.org/pipermail/libc-alpha/2025-December/173431.html\n\nSigned-off-by: Moritz Klammler <moritz.klammler.ext@siemens.com>\n---\n nptl/Makefile | 1 +\n nptl/pthread_mutex_lock.c | 15 +++-\n nptl/tst-deadlk.c | 146 ++++++++++++++++++++++++++++++++++++++\n 3 files changed, 159 insertions(+), 3 deletions(-)\n create mode 100644 nptl/tst-deadlk.c", "diff": "diff --git a/nptl/Makefile b/nptl/Makefile\nindex 85f95dd0cf..e76be4714c 100644\n--- a/nptl/Makefile\n+++ b/nptl/Makefile\n@@ -283,6 +283,7 @@ tests = \\\n tst-cleanup5 \\\n tst-cond26 \\\n tst-context1 \\\n+ tst-deadlk \\\n tst-default-attr \\\n tst-dlsym1 \\\n tst-exec4 \\\ndiff --git a/nptl/pthread_mutex_lock.c b/nptl/pthread_mutex_lock.c\nindex a697f2b6ca..093aaae85f 100644\n--- a/nptl/pthread_mutex_lock.c\n+++ b/nptl/pthread_mutex_lock.c\n@@ -418,9 +418,18 @@ __pthread_mutex_lock_full (pthread_mutex_t *mutex)\n \t\t\t\t NULL, private);\n \t if (e == ESRCH || e == EDEADLK)\n \t {\n-\t\tassert (e != EDEADLK\n-\t\t\t|| (kind != PTHREAD_MUTEX_ERRORCHECK_NP\n-\t\t\t && kind != PTHREAD_MUTEX_RECURSIVE_NP));\n+\t\tif (e == EDEADLK\n+\t\t && (kind == PTHREAD_MUTEX_ERRORCHECK_NP\n+\t\t\t|| kind == PTHREAD_MUTEX_RECURSIVE_NP))\n+\t\t {\n+\t\t /* FUTEX_LOCK_PI may return EDEADLK due to cross‑thread\n+\t\t deadlock detection, beyond the same‑thread recursive\n+\t\t check above. Pass this error through for these two\n+\t\t mutex types; otherwise, intentionally deadlock for\n+\t\t normal mutexes. */\n+\t\t return e;\n+\t\t }\n+\n \t\t/* ESRCH can happen only for non-robust PI mutexes where\n \t\t the owner of the lock died. */\n \t\tassert (e != ESRCH || !robust);\ndiff --git a/nptl/tst-deadlk.c b/nptl/tst-deadlk.c\nnew file mode 100644\nindex 0000000000..867101b18f\n--- /dev/null\n+++ b/nptl/tst-deadlk.c\n@@ -0,0 +1,146 @@\n+/* Test for pthread_mutex_lock deadlock behavior.\n+ Copyright (C) 2026 Free Software Foundation, Inc.\n+ This file is part of the GNU C Library.\n+\n+ The GNU C Library is free software; you can redistribute it and/or\n+ modify it under the terms of the GNU Lesser General Public\n+ License as published by the Free Software Foundation; either\n+ version 2.1 of the License, or (at your option) any later version.\n+\n+ The GNU C Library is distributed in the hope that it will be useful,\n+ but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n+ Lesser General Public License for more details.\n+\n+ You should have received a copy of the GNU Lesser General Public\n+ License along with the GNU C Library; if not, see\n+ <https://www.gnu.org/licenses/>. */\n+\n+#include <array_length.h>\n+#include <errno.h>\n+#include <stdint.h>\n+#include <stdio.h>\n+\n+#include <support/capture_subprocess.h>\n+#include <support/check.h>\n+#include <support/support.h>\n+#include <support/test-driver.h>\n+#include <support/xthread.h>\n+\n+#define ASSUME_DEADLOCK_AFTER_SECONDS 3\n+\n+struct which_mutex\n+{\n+ int type;\n+ bool prio_inherit;\n+ bool robust;\n+};\n+\n+struct task_context\n+{\n+ pthread_mutex_t *first, *second;\n+ pthread_barrier_t *barrier;\n+};\n+\n+static bool\n+should_detect_deadlock (const struct which_mutex *const that)\n+{\n+ return (that->prio_inherit)\n+ && (that->type == PTHREAD_MUTEX_ERRORCHECK\n+ || that->type == PTHREAD_MUTEX_RECURSIVE);\n+}\n+\n+static void *\n+thread_function (void *const arg)\n+{\n+ const struct task_context *ctx = arg;\n+ intptr_t ret = 0;\n+ xpthread_mutex_lock (ctx->first);\n+ xpthread_barrier_wait (ctx->barrier);\n+ ret = pthread_mutex_lock (ctx->second);\n+ xpthread_mutex_unlock (ctx->first);\n+ if (ret == 0)\n+ xpthread_mutex_unlock (ctx->second);\n+ return (void *) ret;\n+}\n+\n+static void\n+prepare_mutex (pthread_mutex_t *const mutex,\n+ const struct which_mutex *const that)\n+{\n+ pthread_mutexattr_t attr;\n+ xpthread_mutexattr_init (&attr);\n+ xpthread_mutexattr_settype (&attr, that->type);\n+ if (that->robust)\n+ xpthread_mutexattr_setrobust (&attr, PTHREAD_MUTEX_ROBUST);\n+ if (that->prio_inherit)\n+ xpthread_mutexattr_setprotocol (&attr, PTHREAD_PRIO_INHERIT);\n+ xpthread_mutex_init (mutex, &attr);\n+ xpthread_mutexattr_destroy (&attr);\n+}\n+\n+static void\n+do_test_single (void *const ctx)\n+{\n+ pthread_mutex_t m1, m2;\n+ pthread_barrier_t barrier;\n+ const struct which_mutex *const that = ctx;\n+ const bool graceful = should_detect_deadlock (that);\n+ struct task_context ctx1\n+ = { .first = &m1, .second = &m2, .barrier = &barrier };\n+ struct task_context ctx2\n+ = { .first = &m2, .second = &m1, .barrier = &barrier };\n+ xpthread_barrier_init (&barrier, NULL, 2);\n+ prepare_mutex (&m1, that);\n+ prepare_mutex (&m2, that);\n+ const pthread_t t1 = xpthread_create (NULL, thread_function, &ctx1);\n+ const pthread_t t2 = xpthread_create (NULL, thread_function, &ctx2);\n+ if (!graceful)\n+ delayed_exit (ASSUME_DEADLOCK_AFTER_SECONDS);\n+ const int ret1 = (intptr_t) xpthread_join (t1);\n+ const int ret2 = (intptr_t) xpthread_join (t2);\n+ xpthread_mutex_destroy (&m1);\n+ xpthread_mutex_destroy (&m2);\n+ xpthread_barrier_destroy (&barrier);\n+ TEST_VERIFY (graceful);\n+ TEST_VERIFY (ret1 == 0 || ret1 == EDEADLK);\n+ TEST_VERIFY (ret2 == 0 || ret2 == EDEADLK);\n+ TEST_VERIFY (ret1 == EDEADLK || ret2 == EDEADLK);\n+}\n+\n+static int\n+do_test (void)\n+{\n+ const int mutex_types[] = {\n+ PTHREAD_MUTEX_TIMED_NP,\n+ PTHREAD_MUTEX_RECURSIVE_NP,\n+ PTHREAD_MUTEX_ERRORCHECK_NP,\n+ PTHREAD_MUTEX_ADAPTIVE_NP,\n+ };\n+ for (size_t i = 0; i < array_length (mutex_types); ++i)\n+ {\n+ for (int pi = 0; pi < 2; ++pi)\n+ {\n+ for (int rb = 0; rb < 2; ++rb)\n+ {\n+ struct which_mutex that = {\n+ .type = mutex_types[i],\n+ .prio_inherit = pi,\n+ .robust = rb,\n+ };\n+ const char *const description\n+ = xasprintf (\"type = %d, prio_inherit = %d, robust = %d\",\n+ that.type, that.robust, that.prio_inherit);\n+ struct support_capture_subprocess capture\n+ = support_capture_subprocess (do_test_single, &that);\n+ support_capture_subprocess_check (&capture, description, 0,\n+ sc_allow_none);\n+ support_capture_subprocess_free (&capture);\n+ }\n+ }\n+ }\n+ return 0;\n+}\n+\n+#define TIMEOUT 60\n+#include <support/test-driver.c>\n", "prefixes": [] }