From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14277 invoked by alias); 12 Jan 2015 21:49:18 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 14253 invoked by uid 48); 12 Jan 2015 21:49:14 -0000 From: "eswierk at gmail dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug go/64573] New: Cmd.Start swallows error from fork()/clone() Date: Mon, 12 Jan 2015 21:49:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: go X-Bugzilla-Version: 4.9.2 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: eswierk at gmail dot com X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: ian at airs dot com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter cc attachments.created Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2015-01/txt/msg00879.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64573 Bug ID: 64573 Summary: Cmd.Start swallows error from fork()/clone() Product: gcc Version: 4.9.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: go Assignee: ian at airs dot com Reporter: eswierk at gmail dot com CC: cmang at google dot com Created attachment 34428 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34428&action=edit Proposed fix Cmd.Start ignores the error code from the underlying fork() or clone() syscall, instead returning a nil error while setting Process.Pid to 0. If the caller then tries to Wait on the command, it can end up reaping some other child process (since waitpid(0) means wait for any child in the process group). The attached patch should make the behavior identical to that of golang.