From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4720 invoked by alias); 31 Aug 2016 18:39:53 -0000 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 Received: (qmail 4709 invoked by uid 89); 31 Aug 2016 18:39:52 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.4 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=avoidance, spending, late X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 31 Aug 2016 18:39:51 +0000 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 340FF83F40; Wed, 31 Aug 2016 18:39:49 +0000 (UTC) Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u7VIdmqC032710; Wed, 31 Aug 2016 14:39:48 -0400 Subject: Re: [PATCH 2/2] Enable range stepping for ARM on GDBServer To: Antoine Tremblay References: <20160831171406.24057-1-antoine.tremblay@ericsson.com> <20160831171406.24057-2-antoine.tremblay@ericsson.com> Cc: gdb-patches@sourceware.org From: Pedro Alves Message-ID: <3fdb7193-60c7-49c9-ccf5-bc040aa157ea@redhat.com> Date: Wed, 31 Aug 2016 18:39:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-SW-Source: 2016-08/txt/msg00335.txt.bz2 On 08/31/2016 07:15 PM, Antoine Tremblay wrote: > > Pedro Alves writes: > >> On 08/31/2016 06:14 PM, Antoine Tremblay wrote: >>> This patch enables range stepping to be done in GDBServer with an ARM >>> target. >>> >>> There is one problem however with the gdb.threads/non-stop-fair-events.exp >>> test. >>> >>> Since single stepping is done in software and that displaced stepping is >>> not supported, threads end up hitting each others breakpoints and the main >>> thread can't make any progress passed a number of threads on my system. >>> >>> Thus we get: >>> FAIL: gdb.threads/non-stop-fair-events.exp: signal_thread=5: thread 1 >>> broke out of loop (timeout) >>> >>> Note that even letting it go an hour doesn't help so bumping the timeout >>> is out of the question. >>> >>> I'm not sure what to do about this one ? kfail ? ideas ? >> >> Hmm, this is exactly the sort of problem the test is meant to >> catch, and the reason we do event thread randomization: >> >> # Test that GDB in non-stop mode gives roughly equal priority to >> # events of all threads. >> >> Why does it work without range stepping, but not with? >> > > If I recall correctly GDBServer will report each stepi to GDB > without range stepping but will continue in gdbserver when range > stepping is on, thus the run control is different. > > And that GDBServer's run control is not as fair as GDB's for such > situations. > > Maybe it could be made to work, I remember trying a few things but after > spending quite some time on it I could not wrap my head around it. Thus > my call for ideas here. It's between hard and impossible to give out ideas without some sort of high level analysis of the typical loop of events gdbserver is getting stuck in, causing the main thread to never be given a chance to make progress. It sounds like gdbserver's event starvation avoidance isn't really working on sss targets with range stepping enabled. E.g., are we doing the randomization too late? Thanks, Pedro Alves