X-Recipient: archive-cygwin AT delorie DOT com X-SWARE-Spam-Status: No, hits=-1.3 required=5.0 tests=AWL,BAYES_00,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org MIME-Version: 1.0 Date: Tue, 2 Jun 2009 16:11:39 +0200 Message-ID: <9bfd07db0906020711p328add96h4314d412b817048c@mail.gmail.com> Subject: [1.7] pthread_mutex_lock/pthread_mutex_unlock strange blocking problem From: Thomas Stalder To: cygwin AT cygwin DOT com Content-Type: multipart/mixed; boundary=001636c5b68018751a046b5e1f4f X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: 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 --001636c5b68018751a046b5e1f4f Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hello, Sometimes pthread_mutex_lock ou pthread_mutex_unlock block. In order to reproduce the problem, I have made a test application (test.c) who always block $ gcc test.c -o test $ ./test thread id=1 after pthread_create 1 after pthread_create 2 thread id=2 thread id=3 after pthread_create 3 after pthread_create 4 thread id=4 thread id=5 after pthread_create 5 thread id=6 after pthread_create 6 after pthread_create 7 The application can create 1,2,3 threads or many more before blocking. -- Thomas --001636c5b68018751a046b5e1f4f Content-Type: text/plain; charset=US-ASCII; name="test.c" Content-Disposition: attachment; filename="test.c" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fvgoiiuw0 I2luY2x1ZGUgPHN0ZGlvLmg+IAojaW5jbHVkZSA8c3RkbGliLmg+IAojaW5j bHVkZSA8cHRocmVhZC5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CgoKc3RhdGlj IHB0aHJlYWRfbXV0ZXhfdCBteV9tdXRleCA9IFBUSFJFQURfTVVURVhfSU5J VElBTElaRVI7CnN0YXRpYyBwdGhyZWFkX211dGV4X3QgbXlfbXV0ZXgyID0g UFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsKaW50IG5iX3RocmVhZD0wOwoK dm9pZCAqdGhyZWFkX2Z1bmModm9pZCAqcGFybSkKewoJaW50IGlkOwoJcHRo cmVhZF9tdXRleF9sb2NrKCZteV9tdXRleCk7CgluYl90aHJlYWQrKzsKCWlk ID0gbmJfdGhyZWFkOwoJcHRocmVhZF9tdXRleF91bmxvY2soJm15X211dGV4 KTsKCQoJcHRocmVhZF9tdXRleF9sb2NrKCZteV9tdXRleDIpOwoJcHJpbnRm KCJ0aHJlYWQgaWQ9JWRcbiIsIGlkKTsKCXB0aHJlYWRfbXV0ZXhfdW5sb2Nr KCZteV9tdXRleDIpOwoKCXB0aHJlYWRfZXhpdCgwKTsKCXJldHVybiBOVUxM Owp9CgppbnQgbWFpbih2b2lkKQp7CglpbnQgdG1wX25iPTA7Cgl3aGlsZSgx KQoJewoJCWludCBlcnIgPSAwOwoJCXB0aHJlYWRfYXR0cl90ICBhdHRyOwoJ CXB0aHJlYWRfdCB0aHJlYWRfaWQ7CgoJCS8qICBJbml0aWFsaXplIHRoZSBh dHRyaWJ1dGUgKi8KCQllcnIgPSBwdGhyZWFkX2F0dHJfaW5pdCgmYXR0cik7 CgkJaWYgKGVycikKCQl7CgkJCXByaW50ZigicHRocmVhZF9hdHRyX2luaXQg ZXJyPSVkXG4iLCBlcnIpOwoJCX0KCQllcnIgPSBwdGhyZWFkX2F0dHJfc2V0 aW5oZXJpdHNjaGVkKCZhdHRyLCBQVEhSRUFEX0lOSEVSSVRfU0NIRUQpOwoJ CWlmIChlcnIpCgkJewoJCQlwcmludGYoInB0aHJlYWRfYXR0cl9zZXRpbmhl cml0c2NoZWQgZXJyb3JcbiIpOwoJCX0KCgkJZXJyID0gcHRocmVhZF9hdHRy X3NldGRldGFjaHN0YXRlKCZhdHRyLFBUSFJFQURfQ1JFQVRFX0RFVEFDSEVE KTsKCQlpZiAoZXJyKQoJCXsKCQkJcHJpbnRmKCJwdGhyZWFkX2F0dHJfc2V0 ZGV0YWNoc3RhdGUgZXJyb3JcbiIpOwoJCX0KCgkJLyogIENyZWF0ZSB0aGUg dGhyZWFkIHdpdGggb3VyIGF0dHJpYnV0ZSAqLwoJCQoJCWVyciA9IHB0aHJl YWRfY3JlYXRlKCZ0aHJlYWRfaWQsICZhdHRyLCB0aHJlYWRfZnVuYywgTlVM TCk7CgkJaWYgKGVycikKCQl7CgkJCXByaW50ZigicHRocmVhZF9jcmVhdGUg ZXJyb3JcbiIpOwoJCX0JCgkJcHRocmVhZF9tdXRleF9sb2NrKCZteV9tdXRl eDIpOwoJCXByaW50ZigiYWZ0ZXIgcHRocmVhZF9jcmVhdGUgJWRcbiIsICsr dG1wX25iKTsKCQlwdGhyZWFkX211dGV4X3VubG9jaygmbXlfbXV0ZXgyKTsK CQlwdGhyZWFkX2F0dHJfZGVzdHJveSgmYXR0cik7Cgl9Cn0K --001636c5b68018751a046b5e1f4f 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/ --001636c5b68018751a046b5e1f4f--