[Patches] Fix for deadlock on OS/2 python

Michael Muller mmuller@enduden.com
Thu, 22 Jun 2000 20:09:36 -0400


This is a MIME/Multipart message.

--192.168.100.3.501.15379.961719655.001.19084
Content-type: text/plain


Hi guys,

I recently ran into a really cool deadlock condition in OS/2 Python.  It
occurs when fdopen() is called from within a critical section in the OS/2
popen() function in posixmodule when an fflush() is occuring in another
thread.  I'm guessing that the high-level IO functions in Visual Age have
some sort of semaphore protection: fdopen() remains blocked until fflush()
finishes, but fflush can't finish because another thread is in a critical
section.

Unfortunately, I am unable to create a small script to reproduce this.  It
occurs consistantly in the program where I discovered it (which is, of
course, property of IBM).  However, you may be able to get it to occur in
the debugger.

The enclosed patch fixes it.

=============================================================================
michaelMuller = mmuller@enduden.com | http://www.cloud9.net/~proteus
-----------------------------------------------------------------------------
We are explorers in the further reaches of experience: demons to some, angels
to others.  - "Pinhead" from "Hellraiser"
=============================================================================

--192.168.100.3.501.15379.961719655.001.19084
Content-type: text/plain; charset="us-ascii"
Content-disposition: attachment; filename="posixmodule-2000-06-20.patch"
Content-description: fdopen deadlock fix
Content-Transfer-Encoding: base64

LS0tIHBvc2l4bW9kdWxlLmMub3JnCVR1ZSBKdW4gMjAgMDg6NTM6MTQgMjAwMAorKysgcG9zaXht
b2R1bGUuYwlUdWUgSnVuIDIwIDA4OjU2OjU4IDIwMDAKQEAgLTE5MDYsMTMgKzE5MDYsMTUgQEAK
ICAgICAgICAgaWYgKGR1cDIod2hhbiwgMSkgPT0gMCkgeyAgICAgIC8qIENvbm5lY3QgU1RET1VU
IHRvIFBpcGUgV3JpdGUgU2lkZSAqLwogICAgICAgICAgICAgRG9zQ2xvc2Uod2hhbik7ICAgICAg
ICAgICAgLyogQ2xvc2UgTm93LVVudXNlZCBQaXBlIFdyaXRlIEhhbmRsZSAqLwogCi0gICAgICAg
ICAgICBpZiAoYXN5bmNfc3lzdGVtKGNvbW1hbmQpID09IE5PX0VSUk9SKQotICAgICAgICAgICAg
ICAgIHJldGZkID0gZmRvcGVuKHJoYW4sIG1vZGUpOyAvKiBBbmQgUmV0dXJuIFBpcGUgUmVhZCBI
YW5kbGUgKi8KKyAgICAgICAgICAgIHJjID0gYXN5bmNfc3lzdGVtKGNvbW1hbmQpOwogICAgICAg
ICB9CiAKICAgICAgICAgZHVwMihvbGRmZCwgMSk7ICAgICAgICAgIC8qIFJlY29ubmVjdCBTVERP
VVQgdG8gT3JpZ2luYWwgSGFuZGxlICovCiAgICAgICAgIERvc0V4aXRDcml0U2VjKCk7ICAgICAg
ICAvKiBOb3cgQWxsb3cgT3RoZXIgVGhyZWFkcyB0byBSdW4gKi8KIAorICAgICAgICBpZiAocmMg
PT0gTk9fRVJST1IpCisgICAgICAgICAgICByZXRmZCA9IGZkb3BlbihyaGFuLCBtb2RlKTsgLyog
QW5kIFJldHVybiBQaXBlIFJlYWQgSGFuZGxlICovCisKICAgICAgICAgY2xvc2Uob2xkZmQpOyAg
ICAgICAgICAgIC8qIEFuZCBDbG9zZSBTYXZlZCBTVERPVVQgSGFuZGxlICovCiAgICAgICAgIHJl
dHVybiByZXRmZDsgICAgICAgICAgICAvKiBSZXR1cm4gZmQgb2YgUGlwZSBvciBOVUxMIGlmIEVy
cm9yICovCiAKQEAgLTE5MjUsMTIgKzE5MjcsMTQgQEAKICAgICAgICAgaWYgKGR1cDIocmhhbiwg
MCkgPT0gMCkgICAgIHsgLyogQ29ubmVjdCBTVERJTiB0byBQaXBlIFJlYWQgU2lkZSAqLwogICAg
ICAgICAgICAgRG9zQ2xvc2Uocmhhbik7ICAgICAgICAgICAvKiBDbG9zZSBOb3ctVW51c2VkIFBp
cGUgUmVhZCBIYW5kbGUgKi8KIAotICAgICAgICAgICAgaWYgKGFzeW5jX3N5c3RlbShjb21tYW5k
KSA9PSBOT19FUlJPUikKLSAgICAgICAgICAgICAgICByZXRmZCA9IGZkb3Blbih3aGFuLCBtb2Rl
KTsgLyogQW5kIFJldHVybiBQaXBlIFdyaXRlIEhhbmRsZSAqLworICAgICAgICAgICAgcmMgPSBh
c3luY19zeXN0ZW0oY29tbWFuZCk7CiAgICAgICAgIH0KIAogICAgICAgICBkdXAyKG9sZGZkLCAw
KTsgICAgICAgICAgLyogUmVjb25uZWN0IFNURElOIHRvIE9yaWdpbmFsIEhhbmRsZSAqLwogICAg
ICAgICBEb3NFeGl0Q3JpdFNlYygpOyAgICAgICAgLyogTm93IEFsbG93IE90aGVyIFRocmVhZHMg
dG8gUnVuICovCisKKyAgICAgICAgaWYgKHJjID09IE5PX0VSUk9SKQorICAgICAgICAgICAgcmV0
ZmQgPSBmZG9wZW4od2hhbiwgbW9kZSk7IC8qIEFuZCBSZXR1cm4gUGlwZSBXcml0ZSBIYW5kbGUg
Ki8KIAogICAgICAgICBjbG9zZShvbGRmZCk7ICAgICAgICAgICAgLyogQW5kIENsb3NlIFNhdmVk
IFNURElOIEhhbmRsZSAqLwogICAgICAgICByZXR1cm4gcmV0ZmQ7ICAgICAgICAgICAgLyogUmV0
dXJuIGZkIG9mIFBpcGUgb3IgTlVMTCBpZiBFcnJvciAqLwo=

--192.168.100.3.501.15379.961719655.001.19084--