From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 83875 invoked by alias); 13 Apr 2015 16:23:12 -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 83831 invoked by uid 89); 13 Apr 2015 16:23:12 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS,SPF_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 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 (AES256-GCM-SHA384 encrypted) ESMTPS; Mon, 13 Apr 2015 16:23:10 +0000 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id t3DGN71o014884 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Mon, 13 Apr 2015 12:23:07 -0400 Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t3DGN6Rv002149; Mon, 13 Apr 2015 12:23:07 -0400 Message-ID: <552BED6A.8050202@redhat.com> Date: Mon, 13 Apr 2015 16:23:00 -0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-Version: 1.0 To: Yao Qi CC: gdb-patches@sourceware.org Subject: Re: [PATCH v2 00/23] All-stop on top of non-stop References: <1428410990-28560-1-git-send-email-palves@redhat.com> <86lhi0v1el.fsf@gmail.com> <55278B2B.1070809@redhat.com> <868ue0uyfa.fsf@gmail.com> <552BE0A3.5040001@redhat.com> <86vbh0t34m.fsf@gmail.com> In-Reply-To: <86vbh0t34m.fsf@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-SW-Source: 2015-04/txt/msg00469.txt.bz2 On 04/13/2015 05:16 PM, Yao Qi wrote: > Pedro Alves writes: > > Pedro, > I can't apply this patch cleanly, so unable to test it for > aarch64-linux. I'll give a test once your V3 is posted, in which this > patch is included, I assume. Oh, sorry for not being clearer, I didn't meant for you to try the patch, only to say that I got a handle in the issue, to avoid you wasting any time trying to debug it, in case you felt compelled to do that. I'll post something testable once I clean things up a bit more. > >> + /* If we have events pending, go through handle_inferior_event >> + again, picking up a pending event at random. This avoids >> + thread starvation. */ >> + pending = iterate_over_threads (resumed_thread_with_pending_status, >> + NULL); > > A quick question, I don't see how pending events are picked up at > random. Do you mean target_ops->to_wait, such as linux_nat_wait, can > get event at random? > It's done in do_target_wait. So we go back to the event loop, and end up in fetch_inferior_event again. In the series/branch, that fetch_inferior_event calls do_target_wait instead of target_wait directly: /* Wrapper for target_wait that first checks whether threads have pending status to report before actually asking the target for more events. */ static ptid_t do_target_wait (ptid_t ptid, struct target_waitstatus *status, int options) { which calls random_pending_event_thread, and that is what takes care of the randomization. Thanks, Pedro Alves