From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id 6289C3858D35 for ; Fri, 30 Jun 2023 02:53:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6289C3858D35 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 35U00Uk9000846 for ; Fri, 30 Jun 2023 02:53:16 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : content-transfer-encoding : content-type : mime-version; s=corp-2023-03-30; bh=+N7pDjnIy09DS1N2K4FTXnEBLiosd2nV9jnZUZ+KakA=; b=rti2WSM3CuAuHYs+PWd4Arl6D0x7hjieYzsOOWEVtW2hGmf0qNrZAM/V6KZtaWjUCJhU 9hHOnFJZn/FO72vY7BjH9iAzdABTkMi2AGLwm8Bs9Voq4IkC5dlReGtcIwKcP+Y6rLXg if1uOQTZWXlvBLCy4AB98GNc65piLcVxI397Nzh1Q0+qW9Fuxg5zU8Sa4/azFN5S+Sg5 UF/XfbtkNR73jmkjVxEkIDoO3YPql6H0E+gy4cNaAK6z2mQntYHeFimg9sgrc0gZZ+fG xBhXKcpQyRyCdE56+jDHMjBK4DurqLuWUSj/Xqf2SWNkTj87F1pMIPyPVuInLR5Gp0JK mg== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3rdrhcy612-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 30 Jun 2023 02:53:16 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 35U1pS6t003967 for ; Fri, 30 Jun 2023 02:53:16 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2170.outbound.protection.outlook.com [104.47.56.170]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3rdpxe9avq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 30 Jun 2023 02:53:15 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=f9Nms98U2JQhWQDq+hURwJzQoI2NQzN6krFixJtZelDftSaPbhvSKnwBIcjJIaOdCKIDckx4dC2UcqojonIDrwbpNSf9KMmciFDjhCzYNnc8rB59tdGrVWwTX7WxxuVSR99amqnoDR6DNBrR1cP5FD9I2uS10lPWM3Ei13OhsmmqkhO9+bua8t7boOtIk/+dzYd60D02lyDv4CakpyxMqXbOu0f99aN9VFYOPJo9nhx6jEFPo+YogoRyeClRziRdcJKWD3ajH5GekjMR214wZ+K34iCmLVxf3KEFgLQ+uVixD9fYuCj7ry8B602/vwbhj4na7c/6Nlm5ORvFIvqqBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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; bh=+N7pDjnIy09DS1N2K4FTXnEBLiosd2nV9jnZUZ+KakA=; b=SyM02CT0m55+xeoqK1kgxbJfGR+Crzro/dlue5EjgLGJTJmql+x+NvZjlCankxVUPTDytYbiTtA1MM4fbcdDtwD9UKqkad9e++PCgd4hF8nujQlPGCT8TvZIg3JmJQc8bZTdohepdO59oVzqtUyckMs3MjZ3mAXqj/HabtepWUIDHjg4pgXr5dH3IM3OFFueTPpc8LWPJkkfqqi4VRKtWnguhj8MThBGfcF80Jmake93P5VxGiIOyWBPr0FOfprSILUhCycV4wlun89EDtHgSiUZlYM7QiW54KbY6YA58sfkyy71NECeTVCp0ssWV9iX2fA+YrrqTzS/5DpB4qSTyA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+N7pDjnIy09DS1N2K4FTXnEBLiosd2nV9jnZUZ+KakA=; b=S0ZoGQm9oWZYDjyjyQbwX5b6iT0nUamUGgtFRr6T//zJqN+Ykv17QYhn7F8JXiY7GgiIat7/hYKQrG/k4L1DAlW3Es11PFHCRsbV16anANMeNbGshHuX9SiAsRMsqifa4NBBS9GmwVZM5kSq9QGGV130G/ThfGYc267OdSZ8ADg= Received: from SA2PR10MB4636.namprd10.prod.outlook.com (2603:10b6:806:11e::10) by CO1PR10MB4706.namprd10.prod.outlook.com (2603:10b6:303:9d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6521.26; Fri, 30 Jun 2023 02:53:13 +0000 Received: from SA2PR10MB4636.namprd10.prod.outlook.com ([fe80::e0a1:158b:3862:289a]) by SA2PR10MB4636.namprd10.prod.outlook.com ([fe80::e0a1:158b:3862:289a%5]) with mapi id 15.20.6544.012; Fri, 30 Jun 2023 02:53:13 +0000 From: vladimir.mezentsev@oracle.com To: binutils@sourceware.org Cc: Vladimir Mezentsev Subject: [PATCH] gprofng: fix data race Date: Thu, 29 Jun 2023 19:53:08 -0700 Message-Id: <20230630025308.3258293-1-vladimir.mezentsev@oracle.com> X-Mailer: git-send-email 2.31.1 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SA0PR11CA0205.namprd11.prod.outlook.com (2603:10b6:806:1bc::30) To SA2PR10MB4636.namprd10.prod.outlook.com (2603:10b6:806:11e::10) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PR10MB4636:EE_|CO1PR10MB4706:EE_ X-MS-Office365-Filtering-Correlation-Id: 82fcc771-f225-486a-ce24-08db7915257c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1JYT62b1OT+SrMPK2BTVdfDUGsoa5nBJ/Al78B2tgvvhA7W62B91JxTZG4ni0KhBMwAjWdKegmTMXwfz2d06KeJmrKmi+nUkAVkBS7A5frHr/sWcMnlH8guW0DIO5+mvMt0MbC1V0nJgg4ctpmmZqWvRNJAKjD09rY2ZccJPZ05nNhJx7Jh6BSli/f/q4f+dbboonai0UqEwkXsltvBYSiLZNt6nA2KXcUCIdIyK0XCBwQWp/b8hfUn2Z91BNudtJI9eLFrBUm4sobA2DA1RdFPWr3vfbkAmtTwRThKmxiGV9qnlDhbUVARWX/5wzsqAJWcaaRLGDxmPeWOuUz/RR06NpeKsWxvGT2aDRWbA7ZOAI2hFmKyGlbYKnyulZpeZ+dUrt6im+vSJlR/dVhNAT8iZ3zlMkRo15wiCU9AqMdiVxWw8VdIaLL9707ucPEUn69rcRle7df8vu/OdpeGP4huVx6ACHDOXaN6uz25ZmKx8GmFvB2c1vy8OKAqGabb6qw7YAUSW0EmJAIeWv3D/STHriDFAVVSsTQE2ndaXJP4= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA2PR10MB4636.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(396003)(376002)(346002)(366004)(136003)(39860400002)(451199021)(8676002)(316002)(66946007)(66476007)(9686003)(186003)(4326008)(107886003)(6512007)(6506007)(26005)(1076003)(6916009)(8936002)(6486002)(6666004)(41300700001)(66556008)(5660300002)(2906002)(478600001)(2616005)(38100700002)(86362001)(83380400001)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?Qg4JdDef7idmHk8yZiAUkIz7lCyzxPTlHkyCVoG0hM8MZ78NAEAKFcbhjvGg?= =?us-ascii?Q?y9sO+LuCuTT1MXqvi0sKnNYhpw9vX+FExtHnD0P3sTo+to8KvnroHWR5ZNVN?= =?us-ascii?Q?3/9ZLD1zIQr3d6fnoZF2u9gfd9vWfl5tJZjy6VIxYQcsqiF+5AKDf8OOONfC?= =?us-ascii?Q?eIfbKRPKsSrdL/sLMf7oJT9t9PvK40O2kmFYh2heQp1aBxPQqBm4X5WOPhp5?= =?us-ascii?Q?yUIxWrLIofFBeeT5uzdH1NI/XU5/OWzffu/Fn2Tl2tE5GDP7ZlW2fNP4D7XY?= =?us-ascii?Q?ROJf0ZkSKrIFXQc3mrXBBF9wvC/9elfN2QDxdXyLfsyWQjhksO7IfGGxF3Hk?= =?us-ascii?Q?iLTX6A+3f6AjtNmBJt1FJjwRPDSZtWfkttShsa4St7MfOXYdRBn67SS012Dk?= =?us-ascii?Q?6gRcc6MUk8Z9ov8QnCbd2cJg84XGPm38cGtd6mKCrs7GsJh8D7WFzFcfYMCu?= =?us-ascii?Q?Udavq2e54X8Q8YDv0SbSpacQbGiA2tYWf4FaYaNkDNNRic43b/DYakdksAy0?= =?us-ascii?Q?QCs6ouwFiAKCvtrVtvzELaFxT0lchc9zZN8wQptvb3+vwIv5S8k6XZQl4hwS?= =?us-ascii?Q?ulaNTYYudF8bCkI/xbhQfJag81SNhSyq6x615yFOpW36p1fr+5tgMFOvrbBC?= =?us-ascii?Q?G7GQWmHmbrv11nqjogm2Qq1hyxbXPMajy08SRxXXyva86rLyXjl1CwzsTp0i?= =?us-ascii?Q?chUqhCYafqem9J+RetHU9QC7z3t8e1fhgtJLm06U92az61sV7LllSMHJWAjq?= =?us-ascii?Q?Wjfa1qN1lrQAvdt8aBsoji5SFKkM57sUQ6YFWYW/B7KN6EkTIQtxViFlJGxf?= =?us-ascii?Q?m47qcRvFJx/dmgArN2lXfMiJN2Q56WIXZ0Ja/+leRY0FC3RzAqX7Usx45COH?= =?us-ascii?Q?9teG8qaTYAsnAgIsrHYebW0ipy/xOh/jMkB2vNRhHh7hXMuYxZ7fTKSBb3aG?= =?us-ascii?Q?mGazRuH3HUWv1ngNYO/b1bdXbVIRAyBuftR7MEWpbwgdOh0BbytdWwwljgVV?= =?us-ascii?Q?jlgyiPjwwL6//cqzPfOm7B1iaJpFt0DMYPSkbYJ3mOxv2MuSakcUwLGsASmq?= =?us-ascii?Q?RbHMLMZ1+EvD2Ke2JiecIOVhcdGvNq+y0BdcYMpi+rgpunCj/KDngNPZhmPq?= =?us-ascii?Q?O6xBvTEVuWbefxr0pL4nQX0KFZpfIlP5E/o5OIGl2gn8diqymJfATCd0NFoj?= =?us-ascii?Q?iDF1xx9s8wcaSrKwao1Yab4Gjbh5jT3JFlUYfHRCAxu+J3kTbUM4DBF/QAhz?= =?us-ascii?Q?BCJEsvM59nc3EPlcd7WqlYv+iJs6du6moFc/95BGFfBgHyB3DTNFIg9qBrOp?= =?us-ascii?Q?y7N4VOtCO5K1CZEPbleEvud7GXZg1G1UMss/kzG6kS/Ng3zsf8mS4r5TCuH2?= =?us-ascii?Q?1xPPAx+8L/7h3XPMIjlH2Zg1P/llKu5gktHYcoFt7e66RrXGWmdxow9jqqqa?= =?us-ascii?Q?cY4HY/nEEvCHEMH1WGqezPvvR19HhMXyXv/dA812dpAFQq+LYep9lNXyWbGk?= =?us-ascii?Q?86wJaPIrHitPOvtat3meUSyY9C5S4HSxGYTiY/5FVWJj8NubeiGM0wMcMuiB?= =?us-ascii?Q?jSL08Ks8l8beyPdwkbBSOq4WRTx+eMdJsAownPD282f6FU2CULqNutm1FIFr?= =?us-ascii?Q?kA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: fow3wRerwueDrLBgq71ioXr6WVgKfE1nhKFojQ0XxV9mHgBg8nN9+osVS+ZobaQ4PY+jldhhYZ3W0pNza1pp2kMDGIdgbNJcCfET01FhguhUsAPCyCCu8MnMa4CP1Etgs1jqwzfOjYSuYG5QGjTrzHpnY679hgd1HCF5ZZvSSSGsqgANUuoj4tq1QM+m68F/3U6oINqyGIlFW2DS2GrKydlr4Xp/fJ95HXjkpL3nJAasYKyqogvZt0VBH+q/Zzj3llWNlVJPp+7V7qNh+vqpYJu1HWruiS2MyEziZ8qsZdqFncwzbMaF1egMlZQ+jP0g+fez4h7SLpvR7CAydKn08HPQ0nlybtm9+A0Vwxj5b87Y/bM96zvektSNIX3NZ+HjL1d/dAbbZpzzYXwDEOZRuj0Qm36d5a4hNH8Idj4JVjVjCK7e75rMwFeKkdAgNhvVZYKS7VvUZwpVuH2MR4GI2loqVAvZUYxeq9FpicDW0wP1Z5LzG+dPaB/55eejEYe9aIMlWmXjS/J7wan3lQIwtgnH241dKpdi2Nok+ljNINpvLTz/adVFja+Lc40RQGEiUxZGPgWmz1JAWz94Ff3SGn/feKUHlfo+AC0YshYsLVW0jUWyIp1UMRjY3kc7a792Ax+VHvd5mUT3c3XkLvKdQwHfMb52LU9QSdBMQZTsYInd4Mof4sDZCvkG/h26RDSAQE+McAb3to2MIrXBzCeQEt9z0xMU4Ek3ABLbehmWnZzSBEfX1e+xGznRv3jJQHAy X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 82fcc771-f225-486a-ce24-08db7915257c X-MS-Exchange-CrossTenant-AuthSource: SA2PR10MB4636.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2023 02:53:13.4304 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ZAWT91t8tokWZua3MbDAVnV/hAPF6L1B+yfkTcBLWcPC3dc7JtXiLXWuV2RxacvEPDDdmq/8MjXPPrX9qg2XcLvQZN6jgi82tConRtWTAjQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR10MB4706 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-06-29_10,2023-06-27_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 malwarescore=0 mlxscore=0 mlxlogscore=999 bulkscore=0 spamscore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2305260000 definitions=main-2306300022 X-Proofpoint-GUID: DkUDHMk5zOSVa9aV-VHkaMRMC-MZEA9P X-Proofpoint-ORIG-GUID: DkUDHMk5zOSVa9aV-VHkaMRMC-MZEA9P X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: From: Vladimir Mezentsev If there are no rejections, on Sattuday I will applay my fixes. It is tested on x86_64 and aarch64. In our GUI project (https://savannah.gnu.org/projects/gprofng-gui), we use the output of gprofng to display the data. Sometimes this data is corrupted. gprofng/ChangeLog 2023-06-29 Vladimir Mezentsev * src/ipc.cc (ipc_doWork): Fix data race. * src/ipcio.cc (IPCresponse::print): Fix data race. Remove unused variables and functions. * src/ipcio.h: Declare two variables. * src/StringBuilder.cc (StringBuilder::write): New function. * src/StringBuilder.h: Likewise. --- gprofng/src/StringBuilder.cc | 8 +++ gprofng/src/StringBuilder.h | 1 + gprofng/src/ipc.cc | 19 ++++--- gprofng/src/ipcio.cc | 97 ++++++------------------------------ gprofng/src/ipcio.h | 2 + 5 files changed, 34 insertions(+), 93 deletions(-) diff --git a/gprofng/src/StringBuilder.cc b/gprofng/src/StringBuilder.cc index a806261d026..f312866bd23 100644 --- a/gprofng/src/StringBuilder.cc +++ b/gprofng/src/StringBuilder.cc @@ -24,6 +24,7 @@ #include #include #include +#include #include "gp-defs.h" #include "StringBuilder.h" @@ -447,6 +448,13 @@ StringBuilder::toFileLn (FILE *fp) fprintf (fp, NTXT ("%s\n"), value); } +void +StringBuilder::write (int fd) +{ + if (count > 0) + ::write (fd, value, count); +} + StringBuilder * StringBuilder::sprintf (const char *fmt, ...) { diff --git a/gprofng/src/StringBuilder.h b/gprofng/src/StringBuilder.h index cb7127bc137..8db90c51239 100644 --- a/gprofng/src/StringBuilder.h +++ b/gprofng/src/StringBuilder.h @@ -82,6 +82,7 @@ public: char *toString (); void toFile (FILE *fp); void toFileLn (FILE *fp); + void write (int fd); // Not in Java StringBuilder *appendf (const char *fmt, ...) __attribute__ ((format (printf, 2, 3))); diff --git a/gprofng/src/ipc.cc b/gprofng/src/ipc.cc index 3cf6b8f0ecc..d0f15d3813f 100644 --- a/gprofng/src/ipc.cc +++ b/gprofng/src/ipc.cc @@ -189,11 +189,10 @@ sigterm_handler (int, siginfo_t *, void *) static const char *ipc_log_name = NULL; static const char *ipc_request_log_name = NULL; static const char *ipc_response_log_name = NULL; -FILE *requestLogFileP = stderr; -FILE *responseLogFileP = stderr; -hrtime_t begin_time; -long long delta_time = 0; -int ipc_delay_microsec = 0; +static FILE *requestLogFileP = stderr; +static FILE *responseLogFileP = stderr; +static hrtime_t begin_time; +static long long delta_time = 0; void ipc_default_log (const char *fmt, ...) @@ -362,7 +361,7 @@ ipc_doWork (void *arg) ipc_log ("NULL ipc command received, exiting\n"); return 0; } - ipc_log ("ipc: %s Req %x Ch %x\n", inp, currentRequestID, currentChannelID); + ipc_log ("ipc: %s Req %x Ch %x\n", inp, req->getRequestID (), req->getChannelID ()); checkCancellableOp (inp, req); if (!strcmp (inp, "initApplication")) { @@ -788,7 +787,7 @@ ipc_doWork (void *arg) int dbevindex = readInt (req); int cmp_mode = readInt (req); getView (dbevindex)->set_compare_mode (cmp_mode); - writeResponseGeneric (RESPONSE_STATUS_SUCCESS, currentRequestID, currentChannelID); + writeResponseGeneric (RESPONSE_STATUS_SUCCESS, req->getRequestID (), req->getChannelID ()); } else if (!strcmp (inp, "getCompareModeV2")) { @@ -811,7 +810,7 @@ ipc_doWork (void *arg) int cmp_mode = readInt (req); MetricList *mlist = readMetricListV2 (dbevindex, req); getView (dbevindex)->reset_metric_list (mlist, cmp_mode); - writeResponseGeneric (RESPONSE_STATUS_SUCCESS, currentRequestID, currentChannelID); + writeResponseGeneric (RESPONSE_STATUS_SUCCESS, req->getRequestID (), req->getChannelID ()); } else if (!strcmp (inp, "getCurMetricsV2")) { @@ -2429,7 +2428,7 @@ ipc_doWork (void *arg) dbe_archive (ids, locations); delete ids; destroy (locations); - writeResponseGeneric (RESPONSE_STATUS_SUCCESS, currentRequestID, currentChannelID); + writeResponseGeneric (RESPONSE_STATUS_SUCCESS, req->getRequestID (), req->getChannelID ()); } else if (strcmp (inp, "dbeSetLocations") == 0) { @@ -2438,7 +2437,7 @@ ipc_doWork (void *arg) dbeSetLocations (fnames, locations); destroy (fnames); destroy (locations); - writeResponseGeneric (RESPONSE_STATUS_SUCCESS, currentRequestID, currentChannelID); + writeResponseGeneric (RESPONSE_STATUS_SUCCESS, req->getRequestID (), req->getChannelID ()); } else if (strcmp (inp, "dbeResolvedWith_setpath") == 0) { diff --git a/gprofng/src/ipcio.cc b/gprofng/src/ipcio.cc index 9a6b7afc22d..54648cdcbcc 100644 --- a/gprofng/src/ipcio.cc +++ b/gprofng/src/ipcio.cc @@ -52,13 +52,6 @@ static const int L_CHAR = 8; int currentRequestID; int currentChannelID; -static long maxSize; - -extern int cancellableChannelID; -extern int error_flag; -extern int ipc_delay_microsec; -extern FILE *responseLogFileP; - IPCresponse *IPCresponseGlobal; BufferPool *responseBufferPool; @@ -624,52 +617,6 @@ IPCresponse::sendAVal (void *ptr) } } -static void -writeResponseHeader (int requestID, int responseType, int responseStatus, int nBytes) -{ - if (responseType == RESPONSE_TYPE_HANDSHAKE) - nBytes = IPC_VERSION_NUMBER; - int use_write = 2; - ipc_response_trace (TRACE_LVL_1, "ResponseHeaderBegin----- %x ---- %x ----- %x -----%x -------\n", requestID, responseType, responseStatus, nBytes); - if (use_write) - { - char buf[23]; - if (use_write == 1) - { - int i = 0; - snprintf (buf + i, 3, "%2x", HEADER_MARKER); - i += 2; - snprintf (buf + i, 9, "%8x", requestID); - i += 8; - snprintf (buf + i, 3, "%2x", responseType); - i += 2; - snprintf (buf + i, 3, "%2x", responseStatus); - i += 2; - snprintf (buf + i, 9, "%8x", nBytes); - } - else - snprintf (buf, 23, "%02x%08x%02x%02x%08x", HEADER_MARKER, requestID, - responseType, responseStatus, nBytes); - buf[22] = 0; - write (1, buf, 22); - } - else - { - cout << setfill ('0') << setw (2) << hex << HEADER_MARKER; - cout << setfill ('0') << setw (8) << hex << requestID; - cout << setfill ('0') << setw (2) << hex << responseType; - cout << setfill ('0') << setw (2) << hex << responseStatus; - cout << setfill ('0') << setw (8) << hex << nBytes; - cout.flush (); - } - ipc_response_trace (TRACE_LVL_1, "----------------------------ResponseHeaderEnd\n"); - if (nBytes > maxSize) - { - maxSize = nBytes; - ipc_trace ("New maxsize %ld\n", maxSize); - } -} - bool cancelNeeded (int chID) { @@ -698,12 +645,6 @@ writeResponseWithHeader (int requestID, int channelID, int responseType, responseBufferPool->recycle (os); } -void -writeAckFast (int requestID) -{ - writeResponseHeader (requestID, RESPONSE_TYPE_ACK, RESPONSE_STATUS_SUCCESS, 0); -} - void writeAck (int requestID, int channelID) { @@ -731,7 +672,6 @@ writeHandshake (int requestID, int channelID) { IPCresponse *OUTS = responseBufferPool->getNewResponse (BUFFER_SIZE_SMALL); writeResponseWithHeader (requestID, channelID, RESPONSE_TYPE_HANDSHAKE, RESPONSE_STATUS_SUCCESS, OUTS); - // writeResponseHeader(requestID, RESPONSE_TYPE_HANDSHAKE, RESPONSE_STATUS_SUCCESS, IPC_VERSION_NUMBER); } void @@ -923,30 +863,23 @@ setProgress (int percentage, const char *proc_str) return 0; } +static pthread_mutex_t responce_lock = PTHREAD_MUTEX_INITIALIZER; + void IPCresponse::print (void) { - if (ipc_delay_microsec) - usleep (ipc_delay_microsec); - int stringSize = sb->length (); - writeResponseHeader (requestID, responseType, responseStatus, stringSize); - if (stringSize > 0) - { - char *s = sb->toString (); - hrtime_t start_time = gethrtime (); - int use_write = 1; - if (use_write) - write (1, s, stringSize); // write(1, sb->toString(), stringSize); - else - { - cout << s; - cout.flush (); - } - hrtime_t end_time = gethrtime (); - unsigned long long time_stamp = end_time - start_time; - ipc_response_log (TRACE_LVL_3, "ReqID %x flush time %llu nanosec \n", requestID, time_stamp); - free (s); - } + char buf[23]; + int sz = responseType == RESPONSE_TYPE_HANDSHAKE ? + IPC_VERSION_NUMBER : sb->length (); + snprintf (buf, sizeof (buf), "%02x%08x%02x%02x%08x", HEADER_MARKER, + requestID, responseType, responseStatus, sz); + pthread_mutex_lock (&responce_lock); + ipc_response_trace (TRACE_LVL_1, + "IPCresponse: ID=%08x type=%02x status=%02x sz:%6d\n", + requestID, responseType, responseStatus, sz); + write (1, buf, 22); + sb->write (1); + pthread_mutex_unlock (&responce_lock); } void @@ -974,9 +907,7 @@ readRequestHeader () if (requestType == REQUEST_TYPE_HANDSHAKE) { // write the ack directly to the wire, not through the response queue - // writeAckFast(requestID); writeAck (requestID, channelID); - maxSize = 0; writeHandshake (requestID, channelID); ipc_request_trace (TRACE_LVL_1, "RQ: HANDSHAKE --- %x ----- %x ---- %x --- %x -RequestHeaderEnd\n", requestID, requestType, channelID, nBytes); } diff --git a/gprofng/src/ipcio.h b/gprofng/src/ipcio.h index 05ff30ba34b..6c97dc7ee0c 100644 --- a/gprofng/src/ipcio.h +++ b/gprofng/src/ipcio.h @@ -168,6 +168,8 @@ extern int ipc_single_threaded_mode; extern DbeThreadPool *responseThreadPool; extern DbeThreadPool *ipcThreadPool; extern int cancelRequestedChannelID; +extern int cancellableChannelID; +extern int error_flag; void ipc_default_log (const char *fmt, ...) __attribute__ ((format (printf, 1, 2))); void ipc_response_log (IPCTraceLevel, const char *fmt, ...) __attribute__ ((format (printf, 2, 3))); -- 2.31.1