From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15953 invoked by alias); 28 Jun 2008 16:40:17 -0000 Received: (qmail 15943 invoked by uid 22791); 28 Jun 2008 16:40:16 -0000 X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (65.74.133.4) by sourceware.org (qpsmtpd/0.31) with ESMTP; Sat, 28 Jun 2008 16:39:58 +0000 Received: (qmail 9147 invoked from network); 28 Jun 2008 16:39:56 -0000 Received: from unknown (HELO 172.16.unknown.plus.ru) (vladimir@127.0.0.2) by mail.codesourcery.com with ESMTPA; 28 Jun 2008 16:39:56 -0000 From: Vladimir Prus Date: Sat, 28 Jun 2008 16:45:00 -0000 Subject: [MI non-stop 03/11, RFA] Discard cleanup when deferring displaced step To: gdb-patches@sources.redhat.com X-TUID: 9cdf6e1f6c85a1b4 X-Length: 1194 X-UID: 262 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200806282039.52280.vladimir@codesourcery.com> Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2008-06/txt/msg00541.txt.bz2 My MI non-stop tests (coming later in the series) revealed a bug in displaced stepping -- we fail to discard cleanup on an early exit path, which caused a call to normal_stop at very unfortunate time -- when a thread was running. OK? - Volodya * infrun.c (resume): Discard cleanups on early exit path. --- gdb/infrun.c | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-) diff --git a/gdb/infrun.c b/gdb/infrun.c index cf23c18..e803d1b 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -964,10 +964,13 @@ a command like `return' or `jump' to continue execution.")); && sig == TARGET_SIGNAL_0) { if (!displaced_step_prepare (inferior_ptid)) - /* Got placed in displaced stepping queue. Will be resumed - later when all the currently queued displaced stepping - requests finish. */ - return; + { + /* Got placed in displaced stepping queue. Will be resumed + later when all the currently queued displaced stepping + requests finish. */ + discard_cleanups (old_cleanups); + return; + } } if (step && gdbarch_software_single_step_p (gdbarch)) -- 1.5.3.5