From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: dhruva Newsgroups: gmane.emacs.devel Subject: Re: [andrew.maguire@ge.com: Emacs 22.1 hung after delete-process] Date: Sun, 19 Aug 2007 13:12:40 +0530 Message-ID: References: <46C404AD.8040908@gnu.org> <46C5A60D.5010108@gnu.org> <46C607B3.7060809@gnu.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_87219_21598961.1187509360395" X-Trace: sea.gmane.org 1187509373 30685 80.91.229.12 (19 Aug 2007 07:42:53 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Sun, 19 Aug 2007 07:42:53 +0000 (UTC) Cc: Glenn Morris , rms@gnu.org, emacs-devel@gnu.org To: "Jason Rumney" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Aug 19 09:42:51 2007 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1IMfQt-0001wg-Gz for ged-emacs-devel@m.gmane.org; Sun, 19 Aug 2007 09:42:47 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IMfQt-0004fT-2G for ged-emacs-devel@m.gmane.org; Sun, 19 Aug 2007 03:42:47 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IMfQp-0004dv-GV for emacs-devel@gnu.org; Sun, 19 Aug 2007 03:42:43 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IMfQp-0004dj-17 for emacs-devel@gnu.org; Sun, 19 Aug 2007 03:42:43 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IMfQo-0004dg-Un for emacs-devel@gnu.org; Sun, 19 Aug 2007 03:42:42 -0400 Original-Received: from mu-out-0910.google.com ([209.85.134.188]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IMfQp-0000AL-0N for emacs-devel@gnu.org; Sun, 19 Aug 2007 03:42:43 -0400 Original-Received: by mu-out-0910.google.com with SMTP id g7so1101278muf for ; Sun, 19 Aug 2007 00:42:40 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=cYm2eun+TLEVNmDQUpPOY6aqyfGp7j5oDbmMWD35QCl6o3Y3jhNkQg7SB8X8BNMCn2hcqNvqe3YNG6kExUahGciVzEuER5x3sES504eJOpiEtHkxQzkkOylqK81IWC2+EPBfWRp+1A0NGR3v/QSH7IZ/yeNOHcL0BUntp2QZIQU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=H9IeTDmMsTS7JDAsvYR/upHmcBibig/tMba4KQgtDKTzDpNiwaKINDvNoO0AAXRpxlK3wnggvATRM+IjPp/UeX9zhv+SM/0afPuUq9dZ8IONMcxNr3qKjjW2ETDoT4RKEv1x2z7YCMatV/tGIvfwYgSF3JCU1TSk6b2/tkEqmvU= Original-Received: by 10.78.107.8 with SMTP id f8mr1051988huc.1187509360440; Sun, 19 Aug 2007 00:42:40 -0700 (PDT) Original-Received: by 10.78.206.20 with HTTP; Sun, 19 Aug 2007 00:42:40 -0700 (PDT) In-Reply-To: <46C607B3.7060809@gnu.org> X-Detected-Kernel: Linux 2.6 (newer, 2) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:76741 Archived-At: ------=_Part_87219_21598961.1187509360395 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, On 8/18/07, Jason Rumney wrote: > dhruva wrote: > > It is the call to read in _sys_read_ahead which continues to block > > even after the sub process is killed. If we change that read to use > > ReadFile using OVERLAPPED structure, we could handle canceling of IO > > when we want to terminate the thread more elegantly. But, that would > > be more changes as we need to use the HANDLE and not fd. > > > > This would be a good change, not just here, but in sys_select in > w32proc.c, which is overcomplicated due to a past design decision to I have made a new patch using ASYNC Read in _sys_read_ahead. We now have an IO that can be canceled. With this, the call to TerminateThread in the delete_child in w32proc.c should ideally never happen. Once this gets well tested, I will try to implement similar ASYNC mechanisms in sys_select. In the patch, I have made a call to memset in the _sys_read_ahead. Since we read char at a time, this could be considered as an overhead. I did not want to Since I have XP, I request others to test the patch on different supported windows flavors of emacs. I have tested with the reproducer (calling perl), invoking a command shell and typing various dos commands. I have not noticed any failures so far. -dky -- Dhruva Krishnamurthy Contents reflect my personal views only! ------=_Part_87219_21598961.1187509360395 Content-Type: application/octet-stream; name="async.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="async.patch" X-Attachment-Id: f_f5j8edjh ZGlmZiAtciAwMGIyNTc0NDY0MmQgLXIgNmE3NzY4YTYwMTg2IHNyYy93MzIuYw0KLS0tIGEvc3Jj L3czMi5jCVNhdCBBdWcgMTggMDg6Mzg6MDUgMjAwNyArMDAwMA0KKysrIGIvc3JjL3czMi5jCVN1 biBBdWcgMTkgMTM6MDU6MzUgMjAwNyArMDUzMA0KQEAgLTM2NjIsNyArMzY2Miw3IEBAIF9zeXNf cmVhZF9haGVhZCAoaW50IGZkKQ0KIF9zeXNfcmVhZF9haGVhZCAoaW50IGZkKQ0KIHsNCiAgIGNo aWxkX3Byb2Nlc3MgKiBjcDsNCi0gIGludCByYzsNCisgIGludCByYyA9IC0xOw0KIA0KICAgaWYg KGZkIDwgMCB8fCBmZCA+PSBNQVhERVNDKQ0KICAgICByZXR1cm4gU1RBVFVTX1JFQURfRVJST1I7 DQpAQCAtMzY4Myw3ICszNjgzLDMwIEBAIF9zeXNfcmVhZF9haGVhZCAoaW50IGZkKQ0KIA0KICAg aWYgKGZkX2luZm9bZmRdLmZsYWdzICYgRklMRV9QSVBFKQ0KICAgICB7DQotICAgICAgcmMgPSBf cmVhZCAoZmQsICZjcC0+Y2hyLCBzaXplb2YgKGNoYXIpKTsNCisgICAgICBPVkVSTEFQUEVEIG92 Ow0KKyAgICAgIG92Lk9mZnNldD0wOw0KKyAgICAgIG92Lk9mZnNldEhpZ2g9MDsNCisgICAgICBv di5oRXZlbnQ9Y3AtPmNoYXJfYXZhaWw7DQorDQorICAgICAgLyogVXNlIGFzeW5jaHJvbm91cyBJ TyB0byBncmFjaW91c2x5IGhhbmRsZSBzdG9wIGV2ZW50cyAqLw0KKyAgICAgIEhBTkRMRSBoX2Zp bGU9X2dldF9vc2ZoYW5kbGUgKGZkKTsNCisgICAgICBpZihoX2ZpbGUgJiYgUmVhZEZpbGUgKGhf ZmlsZSwgJmNwLT5jaHIsIHNpemVvZihjaGFyKSwgTlVMTCwgJm92KSkNCisJew0KKwkgIC8qIFdh aXQgb24gbXVsdGlwbGUgZXZlbnRzIC0gQVNZTkMgcmVhZCAmIHN0b3AgZXZlbnQgKi8NCisJICBE V09SRCB3X3N0YXR1cyA9IDA7DQorCSAgSEFORExFIGFIYW5kbGVzWzJdID0ge2NwLT5jaGFyX2F2 YWlsLGNwLT5zdG9wX2V2ZW50fTsNCisJICB3X3N0YXR1cyA9IFdhaXRGb3JNdWx0aXBsZU9iamVj dHMgKDIsIGFIYW5kbGVzLCBGQUxTRSwgSU5GSU5JVEUpOw0KKwkgIGlmKFdBSVRfT0JKRUNUXzAg PT0gd19zdGF0dXMpDQorCSAgICB7DQorCSAgICAgIERXT1JEIGJ5dGVzUmVhZD0wOw0KKwkgICAg ICBpZihHZXRPdmVybGFwcGVkUmVzdWx0IChoX2ZpbGUsICZvdiwgJmJ5dGVzUmVhZCwgRkFMU0Up KQ0KKwkJcmM9KGludClieXRlc1JlYWQ7DQorCSAgICB9DQorCSAgZWxzZSBpZihXQUlUX09CSkVD VF8wKzEgPT0gd19zdGF0dXMpDQorCSAgICB7DQorCSAgICAgIENhbmNlbElvIChoX2ZpbGUpOw0K KwkgICAgfQ0KKwl9DQogDQogICAgICAgLyogR2l2ZSBzdWJwcm9jZXNzIHRpbWUgdG8gYnVmZmVy IHNvbWUgbW9yZSBvdXRwdXQgZm9yIHVzIGJlZm9yZQ0KIAkgcmVwb3J0aW5nIHRoYXQgaW5wdXQg aXMgYXZhaWxhYmxlOyB3ZSBuZWVkIHRoaXMgYmVjYXVzZSBXaW5kb3dzIDk1DQpkaWZmIC1yIDAw YjI1NzQ0NjQyZCAtciA2YTc3NjhhNjAxODYgc3JjL3czMi5oDQotLS0gYS9zcmMvdzMyLmgJU2F0 IEF1ZyAxOCAwODozODowNSAyMDA3ICswMDAwDQorKysgYi9zcmMvdzMyLmgJU3VuIEF1ZyAxOSAx MzowNTozNSAyMDA3ICswNTMwDQpAQCAtNjksNiArNjksNyBAQCB0eXBlZGVmIHN0cnVjdCBfY2hp bGRfcHJvY2Vzcw0KICAgaW50ICAgICAgICAgICAgICAgICAgIHBpZDsNCiAgIEhBTkRMRSAgICAg ICAgICAgICAgICBjaGFyX2F2YWlsOw0KICAgSEFORExFICAgICAgICAgICAgICAgIGNoYXJfY29u c3VtZWQ7DQorICBIQU5ETEUgICAgICAgICAgICAgICAgc3RvcF9ldmVudDsNCiAgIEhBTkRMRSAg ICAgICAgICAgICAgICB0aHJkOw0KICAgSFdORCAgICAgICAgICAgICAgICAgIGh3bmQ7DQogICBQ Uk9DRVNTX0lORk9STUFUSU9OICAgcHJvY2luZm87DQpkaWZmIC1yIDAwYjI1NzQ0NjQyZCAtciA2 YTc3NjhhNjAxODYgc3JjL3czMnByb2MuYw0KLS0tIGEvc3JjL3czMnByb2MuYwlTYXQgQXVnIDE4 IDA4OjM4OjA1IDIwMDcgKzAwMDANCisrKyBiL3NyYy93MzJwcm9jLmMJU3VuIEF1ZyAxOSAxMzow NTozNSAyMDA3ICswNTMwDQpAQCAtMTgzLDEwICsxODMsMTQgQEAgbmV3X2NoaWxkICh2b2lkKQ0K ICAgICB7DQogICAgICAgY3AtPmNoYXJfY29uc3VtZWQgPSBDcmVhdGVFdmVudCAoTlVMTCwgRkFM U0UsIEZBTFNFLCBOVUxMKTsNCiAgICAgICBpZiAoY3AtPmNoYXJfY29uc3VtZWQpDQotICAgICAg ICB7DQotCSAgY3AtPnRocmQgPSBDcmVhdGVUaHJlYWQgKE5VTEwsIDEwMjQsIHJlYWRlcl90aHJl YWQsIGNwLCAwLCAmaWQpOw0KLQkgIGlmIChjcC0+dGhyZCkNCi0JICAgIHJldHVybiBjcDsNCisJ ew0KKwkgIGNwLT5zdG9wX2V2ZW50ID0gQ3JlYXRlRXZlbnQgKE5VTEwsIFRSVUUsIEZBTFNFLCBO VUxMKTsNCisJICBpZiAoY3AtPnN0b3BfZXZlbnQpDQorCSAgICB7DQorCSAgICAgIGNwLT50aHJk ID0gQ3JlYXRlVGhyZWFkIChOVUxMLCAxMDI0LCByZWFkZXJfdGhyZWFkLCBjcCwgMCwgJmlkKTsN CisJICAgICAgaWYgKGNwLT50aHJkKQ0KKwkJcmV0dXJuIGNwOw0KKwkgICAgfQ0KIAl9DQogICAg IH0NCiAgIGRlbGV0ZV9jaGlsZCAoY3ApOw0KQEAgLTIxNSw2ICsyMTksOCBAQCBkZWxldGVfY2hp bGQgKGNoaWxkX3Byb2Nlc3MgKmNwKQ0KICAgICAgICAgew0KIAkgIC8qIGxldCB0aGUgdGhyZWFk IGV4aXQgY2xlYW5seSBpZiBwb3NzaWJsZSAqLw0KIAkgIGNwLT5zdGF0dXMgPSBTVEFUVVNfUkVB RF9FUlJPUjsNCisJICAvKiBJbmZvcm0gdGhlIHJlYWRlcl90aHJlYWQgYWJvdXQgaW50ZW50aW9u cyB0byBzaHV0ZG93biAqLw0KKwkgIFB1bHNlRXZlbnQgKGNwLT5zdG9wX2V2ZW50KTsNCiAJICBT ZXRFdmVudCAoY3AtPmNoYXJfY29uc3VtZWQpOw0KIAkgIGlmIChXYWl0Rm9yU2luZ2xlT2JqZWN0 IChjcC0+dGhyZCwgMTAwMCkgIT0gV0FJVF9PQkpFQ1RfMCkNCiAJICAgIHsNCkBAIC0yMzUsNiAr MjQxLDExIEBAIGRlbGV0ZV9jaGlsZCAoY2hpbGRfcHJvY2VzcyAqY3ApDQogICAgIHsNCiAgICAg ICBDbG9zZUhhbmRsZSAoY3AtPmNoYXJfY29uc3VtZWQpOw0KICAgICAgIGNwLT5jaGFyX2NvbnN1 bWVkID0gTlVMTDsNCisgICAgfQ0KKyAgaWYgKGNwLT5zdG9wX2V2ZW50KQ0KKyAgICB7DQorICAg ICAgQ2xvc2VIYW5kbGUgKGNwLT5zdG9wX2V2ZW50KTsNCisgICAgICBjcC0+c3RvcF9ldmVudCA9 IE5VTEw7DQogICAgIH0NCiANCiAgIC8qIHVwZGF0ZSBjaGlsZF9wcm9jX2NvdW50IChoaWdoZXN0 IG51bWJlcmVkIHNsb3QgaW4gdXNlIHBsdXMgb25lKSAqLw0K ------=_Part_87219_21598961.1187509360395 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel ------=_Part_87219_21598961.1187509360395--