X-Spam-Check-By: sourceware.org Date: Wed, 31 Jan 2007 08:46:00 -0600 From: Brian Ford Reply-To: cygwin AT cygwin DOT com To: Cygwin List Subject: Re: hang when using pthread and fork in 1.5.23-1 and snapshot 20070118, and now 1.5.24-1. In-Reply-To: <07F4517D-67C2-4E3F-B19A-00CF928AB3DE@rehley.net> Message-ID: References: <5C77EDDF-45E1-4165-92EC-C5D364FDB6CC AT rehley DOT net> <07F4517D-67C2-4E3F-B19A-00CF928AB3DE AT rehley DOT net> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-559023410-961103355-1170254760=:3176" X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com ---559023410-961103355-1170254760=:3176 Content-Type: TEXT/PLAIN; charset=US-ASCII On Fri, 26 Jan 2007, Peter Rehley wrote: > Hello, > > I tried the latest release of cygwin1.dll (1.5.24-1) and it still is > hanging in the same way. I've tried to debug further with gdb, but > so far I haven't got any useful information out of gdb. > > I'll keep trying to get some debug information, but if any one else > can reproduce the problem I would be most appreciative. I can reproduce a problem. Your descriptions of it are a bit hard to follow, so I'm not sure if it is your problem or not. Unfortunately, I don't have time to debug it right now. I do have a few comments, though. Why are you creating a thread just to fork/exec another process? Pedantically, I believe you are supposed to call _exit, not exit, if fork fails as stated here in the Solaris man page for fork: An applications should call _exit() rather than exit(3C) if it cannot execve(), since exit() will flush and close stan- dard I/O channels and thereby corrupt the parent process's standard I/O data structures. Using exit(3C) will flush buf- fered data twice. See exit(2). I don't know, however, if this is really true in Cygwin, but it might explain some misdiagnosed hangs on your part. Also, the execve call appears to be suspect. Again, the Solaris man page for execve states: The value in argv[0] should point to a filename that is associated with the process being started by one of the exec functions. [snip] As indicated, argc is at least one and the first member of the array points to a string containing the name of the file. Attached is a modified test case that fixes a few of these issues, but still hangs (or stutters; it does appear to proceed after long periods of time). -- Brian Ford Lead Realtime Software Engineer VITAL - Visual Simulation Systems FlightSafety International the best safety device in any aircraft is a well-trained crew... ---559023410-961103355-1170254760=:3176 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="main.cc" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="main.cc" LyogbWFpbi5jYw0NCiAqDQ0KICovDQ0KDQ0KI2luY2x1ZGUgPHN0ZGlvLmg+ DQ0KI2luY2x1ZGUgPHVuaXN0ZC5oPg0NCiNpbmNsdWRlIDxzdGRsaWIuaD4N DQojaW5jbHVkZSA8ZmNudGwuaD4NDQojaW5jbHVkZSA8cHRocmVhZC5oPg0N Cg0NCnZvaWQgdXNhZ2UoKQ0NCiAgew0NCiAgcHJpbnRmKCJVc2FnZTpcbiIp Ow0NCiAgcHJpbnRmKCItcCA8cHJvZ3JhbT4gIC0gdXNlIHByb2dyYW0gaW5z dGVhZCBvZiAvYmluL2xzIFxuIik7DQ0KICBleGl0KDEpOw0NCiAgfQ0NCg0N CnZvaWQgKiBmb3JraXQybWUodm9pZCAqZGF0YSkNDQogIHsNDQoNDQogIHBp ZF90IHBpZDsNDQoNDQogIHByaW50ZigiZm9ya2luZ1xuIik7DQ0KICBpZiAo KHBpZCA9IGZvcmsoKSkgPCAwICkNDQogICAgew0NCiAgICBwcmludGYoIlVu YWJsZSB0byBmb3JrXG4iKTsNDQogICAgX2V4aXQoMSk7DQ0KICAgIH0NDQog IGVsc2UgaWYgKHBpZCA9PSAwICkNDQogICAgew0NCiAgICBwcmludGYgKCJj aGlsZDogJXNcbiIsIChjaGFyICopZGF0YSk7DQ0KDQ0KICAgIGV4ZWNsZSgo Y2hhciAqKWRhdGEsKGNoYXIgKilkYXRhLCBOVUxMLE5VTEwpOw0NCg0NCiAg ICBwZXJyb3IoImV4ZWMgZmFpbGVkIik7DQ0KICAgIF9leGl0KDEpOw0NCiAg ICB9DQ0KICBlbHNlDQ0KICAgIHsNDQogICAgcHJpbnRmICgicGFyZW50XG4i KTsNDQogICAgfQ0NCiAgcHJpbnRmICgiZG9uZSBoZXJlXG4iKTsNDQoNDQog IHJldHVybiBkYXRhOw0NCiAgfQ0NCg0NCmludCBtYWluKGludCBhcmdjLCBj aGFyICogYXJndltdKQ0NCiAgew0NCiAgaW50IHF1aXQ9MDsNDQoNDQogIHN0 YXRpYyBjaGFyICogcHJvZzJydW4gPSAiL2Jpbi9scyI7DQ0KICBpZiAoYXJn YyA+IDApDQ0KICAgIHsNDQogICAgZm9yIChpbnQgaT0xOyBpIDwgYXJnYzsg aSsrKQ0NCiAgICAgIHsNDQogICAgICBpZiAoIGFyZ3ZbaV1bMF09PSAnLScg KQ0NCiAgICAgICAgew0NCiAgICAgICAgc3dpdGNoIChhcmd2W2ldWzFdKQ0N CiAgICAgICAgICB7DQ0KICAgICAgICAgIGNhc2UgJ3AnOg0NCiAgICAgICAg ICAgIGlmICggaSsxIDwgYXJnYyApDQ0KICAgICAgICAgICAgICB7DQ0KICAg ICAgICAgICAgICBwcm9nMnJ1bj1hcmd2W2krMV07DQ0KICAgICAgICAgICAg ICBpKys7DQ0KICAgICAgICAgICAgICB9DQ0KICAgICAgICAgICAgYnJlYWs7 DQ0KICAgICAgICAgIGRlZmF1bHQ6DQ0KICAgICAgICAgICAgdXNhZ2UoKTsN DQogICAgICAgICAgfQ0NCiAgICAgICAgfQ0NCiAgICAgIH0NDQogICAgfQ0N Cg0NCiAgZmNudGwoIGZpbGVubyggc3Rkb3V0ICksIEZfU0VURkQsIDEgKTsN DQogIGZjbnRsKCBmaWxlbm8oIHN0ZGVyciApLCBGX1NFVEZELCAxICk7DQ0K DQ0KICBpbnQgcmM7DQ0KICBwdGhyZWFkX2F0dHJfdCB0YTsNDQogIHB0aHJl YWRfdCB0aHJlYWRJZDsNDQogIHJjPXB0aHJlYWRfYXR0cl9pbml0KCZ0YSk7 DQ0KICBpZiAocmMpDQ0KICAgIHsNDQogICAgcHJpbnRmKCJwdGhyZWFkX2F0 dHJfaW5pdCBmYWlsZWQ6IHJjICglZClcbiIscmMpOw0NCiAgICByZXR1cm4g MTsNDQogICAgfQ0NCg0NCiAgcmM9cHRocmVhZF9hdHRyX3NldGRldGFjaHN0 YXRlKCZ0YSxQVEhSRUFEX0NSRUFURV9ERVRBQ0hFRCk7DQ0KICBpZiAocmMp DQ0KICAgIHsNDQogICAgcHJpbnRmKCJwdGhyZWFkX2F0dHJfc2V0ZGV0YWNo c3RhdGUgZmFpbGVkOiByYyAoJWQpXG4iLHJjKTsNDQogICAgcmV0dXJuIDE7 DQ0KICAgIH0NDQoNDQogIHdoaWxlICghcXVpdCkNDQogICAgew0NCiAgICBw cmludGYoImhlcmUgd2UgZ29cbiIpOw0NCiANDQojaWZkZWYgUFJGQUlMDQ0K ICAgIHByaW50ZigiY3JlYXRpbmcgdGhyZWFkXG4iKTsNDQojZW5kaWYNDQog ICAgcmM9cHRocmVhZF9jcmVhdGUoJnRocmVhZElkLCAmdGEsIGZvcmtpdDJt ZSwgcHJvZzJydW4pOw0NCiAgICBpZiAocmMpDQ0KICAgICAgew0NCiAgICAg IHByaW50ZigicHRocmVhZF9jcmVhdGUgZmFpbGVkOiByYyAoJWQpXG4iLHJj KTsNDQogICAgICBicmVhazsNDQogICAgICB9DQ0KI2lmZGVmIFBSRkFJTA0N CiAgICBwcmludGYoImNyZWF0ZWRcbiIpOw0NCiNlbmRpZg0NCiAgICB9DQ0K DQ0KICByZXR1cm4gMDsNDQogIH0NDQoNDQo= ---559023410-961103355-1170254760=:3176 Content-Type: text/plain; charset=us-ascii -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/ ---559023410-961103355-1170254760=:3176--