From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id txkdAiYSmGj8CggAWB0awg (envelope-from ) for ; Sat, 09 Aug 2025 23:29:42 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=Mw2kPKvA; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id EBA3B1E100; Sat, 9 Aug 2025 23:29:41 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-10.1 required=5.0 tests=ARC_SIGNED,ARC_VALID, BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED, RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE autolearn=ham autolearn_force=no version=4.0.1 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 852A41E089 for ; Sat, 9 Aug 2025 23:29:34 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6DB543858D32 for ; Sun, 10 Aug 2025 03:29:33 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6DB543858D32 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=Mw2kPKvA Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTP id 804673858D29 for ; Sun, 10 Aug 2025 03:28:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 804673858D29 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 804673858D29 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1754796539; cv=none; b=mDZ5n87R9lCTzrEkwVP1x9k7JTgRMHkyeFqVuFaUXy8+QmbbQ1cRN84t2bSf4cAq5vmf+cNb/ZQITr5mRiWMVbWIr4LIkfXQeXRsW9EzuzIq3/UP7klDT3F+gMPOp77LYB6S9xd5HoMKzfP8HBSi/2b9aai8Q+Jh1LoNMR9smzc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1754796539; c=relaxed/simple; bh=+htIx7W9ofQrcB3z3PKdjMU/U746XFz7P/hZT30KhZg=; h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version; b=KcddkbqI4/sFTeFExduGTM8ruuylvaZ7sFTlkTTbStmwaxxJlDSL1ZXXM+dRGuYadJdClXm7zhw2MN2pQ94pX7Voq31BF7Ihf921CdIV5M1o6WZg38911ZKP/AdfNZPzMmbUJ+Dfqnmr//UGsBBD7UZJ0ycax2k0qc2lEFlJ1k0= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 804673858D29 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1754796539; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XbCztsHw4w3bI5cbJd4921djgxE3+/3Rxd/hi5OL+jk=; b=Mw2kPKvAZrMbeen6QyGUfMk/sjEv24I0auoQVDOFBF3pWTwr6w0mswVOaQ7vL+qVxTQ30h BtysIE1TFo7hOufAq9CEIOjE0JWGy9mbMmzqDHnrS30YOe07mV8NEsJG7PDAwHpeS9lXEW yy5oKw1kGDUyVBlYH9EDDE4SunrVsac= Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-461-3MMWWNuZMeuseXNOjTvuVA-1; Sat, 09 Aug 2025 23:28:57 -0400 X-MC-Unique: 3MMWWNuZMeuseXNOjTvuVA-1 X-Mimecast-MFC-AGG-ID: 3MMWWNuZMeuseXNOjTvuVA_1754796537 Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id AA1671800446; Sun, 10 Aug 2025 03:28:56 +0000 (UTC) Received: from f41-zbm-amd (unknown [10.22.88.20]) by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id D03A31955F16; Sun, 10 Aug 2025 03:28:55 +0000 (UTC) Date: Sat, 9 Aug 2025 20:28:51 -0700 From: Kevin Buettner To: Pedro Alves Cc: gdb-patches@sourceware.org Subject: Re: [PATCH] testsuite: Introduce gdb_watchdog (avoid unistd.h/alarm) Message-ID: <20250809202851.500f1572@f41-zbm-amd> In-Reply-To: <20250808225050.1761370-1-pedro@palves.net> References: <20250808225050.1761370-1-pedro@palves.net> Organization: Red Hat MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: FEYbLsUEsPLxvkx9BHO5V5BMSR2NO1Ltl9JWzO_F0fw_1754796537 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org Hi Pedro, On Fri, 8 Aug 2025 23:50:50 +0100 Pedro Alves wrote: > There are a good number of testcases in the testsuite that use alarm() > as a watchdog that aborts the test if something goes wrong. > > alarm()/SIG_ALRM do not exist on (native) Windows, so those tests fail > to compile there. > > For example, testing with x86_64-w64-mingw32-gcc, we see: > > Running /c/rocgdb/src/gdb/testsuite/gdb.base/attach.exp ... > gdb compile failed, C:/rocgdb/src/gdb/testsuite/gdb.base/attach.c: In > function 'main': C:/rocgdb/src/gdb/testsuite/gdb.base/attach.c:17:3: > error: implicit declaration of function 'alarm' > [-Wimplicit-function-declaration] 17 | alarm (60); | ^~~~~ > > While testing with a clang configured to default to > x86_64-pc-windows-msvc, which uses the C/C++ runtime headers from > Visual Studio and has no unistd.h, we get: > > Running /c/rocgdb/src/gdb/testsuite/gdb.base/attach.exp ... > gdb compile failed, C:/rocgdb/src/gdb/testsuite/gdb.base/attach.c:8:10: > fatal error: 'unistd.h' file not found 8 | #include > | ^~~~~~~~~~ > > Handle this by adding a new testsuite/lib/gdb_watchdog.h header that > defines a new gdb_watchdog function, which wraps alarm on Unix-like > systems, and uses a timer on Windows. > > This patch adjusts gdb.base/attach.c as example of usage. Testing > gdb.base/attach.exp with clang/x86_64-pc-windows-msvc required a > related portability tweak to can_spawn_for_attach, to not rely on > unistd.h on Windows. > > gdb.rocm/mi-attach.cpp is another example adjusted, one which always > runs with clang configured as x86_64-pc-windows-msvc on Windows (via > hipcc). This all sounds reasonble to me. One possible nit, and it's *way* outside my wheelhouse, so feel free to ignore it... [...] > +static VOID CALLBACK > +_gdb_watchdog_timer_routine (PVOID lpParam, BOOLEAN TimerOrWaitFired) > +{ > + fputs (_gdb_watchdog_msg, stderr); > + fflush (stderr); On POSIX, fputs and fflush are not async-signal-safe. It's my understanding that they aren't on WIN32 either, but I don't know whether this is actually a signal handler. In any case, my AI assistant (Qwen3 Coder) says that something like this might work: DWORD bytes_written; WriteFile(GetStdHandle(STD_ERROR_HANDLE), _gdb_watchdog_msg, sizeof(_gdb_watchdog_msg)-1, &bytes_written, NULL); Regardless, the rest LGTM. And even if fputs and fflush aren't async-signal-safe in this context, I doubt that it matters much. So... Approved-by: Kevin Buettner