From patchwork Wed Oct 14 11:14:21 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: henrik.wallin@windriver.com X-Patchwork-Id: 9107 Received: (qmail 86446 invoked by alias); 14 Oct 2015 15:07:42 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 86388 invoked by uid 89); 14 Oct 2015 15:07:42 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-0.1 required=5.0 tests=AWL, BAYES_00, KAM_LAZY_DOMAIN_SECURITY, T_RP_MATCHES_RCVD autolearn=no version=3.3.2 X-HELO: mail.windriver.com Received: from mail.windriver.com (HELO mail.windriver.com) (147.11.1.11) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Wed, 14 Oct 2015 15:07:40 +0000 Received: from arn-build2.wrs.com (arn-build2.wrs.com [128.224.95.15]) by mail.windriver.com (8.15.2/8.15.1) with ESMTP id t9EBEYJb010701 for ; Wed, 14 Oct 2015 04:14:34 -0700 (PDT) Received: by arn-build2.wrs.com (Postfix, from userid 18580) id D3A1C220763; Wed, 14 Oct 2015 13:14:33 +0200 (CEST) From: henrik.wallin@windriver.com To: gdb-patches@sourceware.org Subject: [RFC][PATCH 03/15] Fix crash in enable/disable after detach Date: Wed, 14 Oct 2015 13:14:21 +0200 Message-Id: <1b888df5d304f17e169cc2b0ea214cc4115ba4ab.1444820235.git.henrik.wallin@windriver.com> In-Reply-To: References: In-Reply-To: References: From: Par Olsson When calling enable/disable on a fast tracepoint after detaching the process, gdbserver tries to access inferior memory which results in a crash. gdb/gdbserver/ChangeLog: * tracepoint.c (cmd_qtenable_disable): Fix problem with enabling tracepoint after inferior have disconnected. Signed-off-by: Par Olsson Signed-off-by: Henrik Wallin --- gdb/gdbserver/tracepoint.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/gdb/gdbserver/tracepoint.c b/gdb/gdbserver/tracepoint.c index a2723e39e500..78a5eb028b72 100644 --- a/gdb/gdbserver/tracepoint.c +++ b/gdb/gdbserver/tracepoint.c @@ -2775,14 +2775,20 @@ cmd_qtenable_disable (char *own_buf, int enable) enable ? "Enabling" : "Disabling", (int) num, paddress (addr)); - tp->enabled = enable; - if (tp->type == fast_tracepoint || tp->type == static_tracepoint) { int ret; int offset = offsetof (struct tracepoint, enabled); CORE_ADDR obj_addr = tp->obj_addr_on_target + offset; + if (current_thread == NULL) + { + trace_debug ("Trying to enable/disable the tracepoint " + "without inferior"); + strcpy (own_buf, "E.No process attached."); + return; + } + ret = prepare_to_access_memory (); if (ret) { @@ -2803,6 +2809,8 @@ cmd_qtenable_disable (char *own_buf, int enable) } } + tp->enabled = enable; + write_ok (own_buf); } else