From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15157 invoked by alias); 6 Apr 2013 19:26:47 -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 15148 invoked by uid 89); 6 Apr 2013 19:26:47 -0000 X-Spam-SWARE-Status: No, score=-7.5 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,RCVD_IN_DNSWL_HI,RCVD_IN_HOSTKARMA_W,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.1 Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Sat, 06 Apr 2013 19:26:44 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r36JQfSr009477 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 6 Apr 2013 15:26:41 -0400 Received: from host2.jankratochvil.net (ovpn-116-44.ams2.redhat.com [10.36.116.44]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id r36JQXk8014294 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Sat, 6 Apr 2013 15:26:38 -0400 Date: Mon, 08 Apr 2013 07:17:00 -0000 From: Jan Kratochvil To: gdb-patches@sourceware.org Cc: Hui Zhu , Pedro Alves Subject: [testsuite patch] race: server-kill.exp: Connection reset by peer [Re: [patch+7.6] Fix 7.5 regression crashing GDB if gdbserver dies] Message-ID: <20130406192632.GA8832@host2.jankratochvil.net> References: <20130315195359.GA19841@host2.jankratochvil.net> <514C50EF.6030202@redhat.com> <20130322191841.GA29259@host2.jankratochvil.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="YiEDa0DAkWCtVeE4" Content-Disposition: inline In-Reply-To: <20130322191841.GA29259@host2.jankratochvil.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Virus-Found: No X-IsSubscribed: yes X-SW-Source: 2013-04/txt/msg00166.txt.bz2 --YiEDa0DAkWCtVeE4 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-length: 1919 On Fri, 22 Mar 2013 20:18:41 +0100, Jan Kratochvil wrote: > +set server_pid [exp_pid -i [board_info target fileid]] > +remote_exec target "kill -9 $server_pid" > + > +gdb_test "step" "Remote connection closed" Getting occasionally randomly: Remote communication error. Target disconnected.: Connection reset by peer. (gdb) FAIL: gdb.server/server-kill.exp: tstatus (it was FAILing on "step" before, "tstatus" vs. "step" does not matter) I even Googled one may get ECONNRESET by writing into a closed TCP socket: http://stackoverflow.com/questions/2974021/what-does-econnreset-mean-in-the-context-of-an-af-local-socket But I was unable to reproduce it myself (kernel-3.8.4-202.fc18.x86_64) with the attached testcase: sleeping ... done write ok ssize=0 read ok send: send.c:53: main: Unexpected error: Broken pipe. Aborted by: * nc -l 5000 * ./send (starts sleeping) * kill -9 `pidof ncat` (Fedora nc is ncat) * # send resumes sleeping I get at most EPIPE but never ECONNRESET. send vs. write and recv vs. read also make no difference there. With no answer I will check in this patch as this issue seems unrelated to the problem, GDB still works properly even with ECONNRESET. I was just curious. Jan gdb/testsuite/ 2013-04-06 Jan Kratochvil * gdb.server/server-kill.exp (tstatus): Permit also ECONNRESET response. diff --git a/gdb/testsuite/gdb.server/server-kill.exp b/gdb/testsuite/gdb.server/server-kill.exp index 1b48152..75c9627 100644 --- a/gdb/testsuite/gdb.server/server-kill.exp +++ b/gdb/testsuite/gdb.server/server-kill.exp @@ -42,4 +42,4 @@ remote_exec target "kill -9 $server_pid" # Force GDB to talk with GDBserver, so that we can get the # "connection closed" error. -gdb_test "tstatus" "Remote connection closed" +gdb_test "tstatus" {Remote connection closed|Remote communication error\. Target disconnected\.: Connection reset by peer\.} --YiEDa0DAkWCtVeE4 Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="send.c" Content-length: 1333 #define _GNU_SOURCE 1 #include #include #include #include #include #include #include #include static volatile int piped; static void handler(int signo) { piped=1; } int main (void) { setbuf(stdout,NULL); signal(SIGPIPE,handler); int fd=socket(PF_INET,SOCK_STREAM,0); assert(fd!=-1); struct sockaddr_in addr; memset(&addr,0,sizeof addr); addr.sin_family=AF_INET; addr.sin_addr.s_addr=htonl(INADDR_LOOPBACK); addr.sin_port=htons(5000); int i=connect(fd,(struct sockaddr *)&addr,sizeof(addr)); assert(i==0); char charbuf='a'; ssize_t ssize=send(fd,&charbuf,1,0); assert(ssize==1); fputs("sleeping ...",stdout); sleep(5); charbuf='b'; puts(" done"); errno=0; // ssize=send(fd,&charbuf,1,0); ssize=write(fd,&charbuf,1); assert_perror(errno); assert(ssize==1); // puts("send ok"); puts("write ok"); errno=0; // ssize=recv(fd,&charbuf,1,0); ssize=read(fd,&charbuf,1); assert_perror(errno); printf("ssize=%zd\n",ssize); assert(ssize==0); // puts("recv ok"); puts("read ok"); errno=0; ssize=send(fd,&charbuf,1,0); // ssize=write(fd,&charbuf,1); assert_perror(errno); assert(ssize==1); puts("send ok"); // puts("write ok"); if (piped) puts("SIGPIPE"); return 0; } --YiEDa0DAkWCtVeE4--