This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
| Author | dripton |
|---|---|
| Recipients | dripton |
| Date | 2007年09月20日.19:35:41 |
| SpamBayes Score | 0.0472304 |
| Marked as misclassified | No |
| Message-id | <1190316942.33.0.242562253308.issue1183@psf.upfronthosting.co.za> |
| In-reply-to |
| Content | |
|---|---|
CentOS Linux 5, Python 2.4.3 (but code appears unchanged in 2.5 and trunk, so I don't believe this bug has already been fixed) We have an xmlrpc server that subclasses DocXMLRPCServer.DocXMLRPCServer and SocketServer.ForkingMixIn. Under load, it sometimes crashes with an error in SocketServer.ForkingMixIn.collect_children The bug is that collect_children calls os.waitpid with pid 0, so it waits for any child. But then it assumes that the pid found was in the list self.active_children, and attempts to remove it from that list without a try block. However, another call to collect_children could have already removed it, so we get "ValueError: list.remove(x): x not in list" The fix is just adding a try/except block around the attempt to remove pid from self.active children. diff -u SocketServer.py /tmp/SocketServer.py --- SocketServer.py 2007年08月27日 10:52:24.000000000 -0400 +++ /tmp/SocketServer.py 2007年09月20日 15:34:00.000000000 -0400 @@ -421,7 +421,10 @@ except os.error: pid = None if not pid: break - self.active_children.remove(pid) + try: + self.active_children.remove(pid) + except ValueError: + pass def process_request(self, request, client_address): """Fork a new subprocess to process the request.""" |
|
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2007年09月20日 19:35:42 | dripton | set | spambayes_score: 0.0472304 -> 0.0472304 recipients: + dripton |
| 2007年09月20日 19:35:42 | dripton | set | spambayes_score: 0.0472304 -> 0.0472304 messageid: <1190316942.33.0.242562253308.issue1183@psf.upfronthosting.co.za> |
| 2007年09月20日 19:35:42 | dripton | link | issue1183 messages |
| 2007年09月20日 19:35:41 | dripton | create | |