From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22462 invoked by alias); 23 Oct 2002 05:35:19 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 22432 invoked from network); 23 Oct 2002 05:35:11 -0000 Received: from unknown (HELO localhost.redhat.com) (24.112.240.27) by sources.redhat.com with SMTP; 23 Oct 2002 05:35:11 -0000 Received: from redhat.com (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id BAD453D15; Wed, 23 Oct 2002 01:32:30 -0400 (EDT) Message-ID: <3DB6346E.70203@redhat.com> Date: Tue, 22 Oct 2002 22:35:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:1.0.0) Gecko/20020824 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Daniel Jacobowitz Cc: gdb-patches@sources.redhat.com, msnyder@redhat.com, kettenis@gnu.org Subject: Re: RFA: lin-lwp bug with software-single-step or schedlock References: <20021023042615.GA6358@nevyn.them.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2002-10/txt/msg00457.txt.bz2 > This bug was noticed on MIPS, because MIPS GNU/Linux is > SOFTWARE_SINGLE_STEP_P. There's a comment in lin_lwp_resume: > > /* Apparently the interpretation of PID is dependent on STEP: If > STEP is non-zero, a specific PID means `step only this process > id'. But if STEP is zero, then PID means `continue *all* > processes, but give the signal only to this one'. */ > resume_all = (PIDGET (ptid) == -1) || !step; > > Now, I did some digging, and I believe this comment is completely incorrect. > Saying "signal SIGWINCH" causes PIDGET (ptid) == -1, and it is assumed the > signal will be delivered to inferior_ptid. There's some other problem there > - I think I've discovered that we will neglect to single-step over a > breakpoint if we are told to continue with a signal, which is a bit dubious > of a decision - but by and large it works as expected. > > So if STEP is 0, we always resume all processes. STEP at this point _only_ > refers to whether we want a PTRACE_SINGLESTEP or equivalent; > SOFTWARE_SINGLE_STEP has already been handled. We can't make policy > decisions based on STEP any more. > > I tried removing the || !step. It's pretty hard to tell, since there are > still a few non-deterministic failures on my test systems (which is what I > was actually hunting when I found this!) but I believe testsuite results are > improved on i386. One run of just the thread tests (after the patch in my > last message, which I've committed), shows that these all got fixed: Shouldn't, per the remote.c Hg discussion, the code be changed so that lin_lwp_resume() has complete information and, hence, can correctly determine if resume all/one is needed. Andrew