extras-buildsys/common DebugUtils.py, NONE, 1.1.2.1 HTTPServer.py, 1.6.2.1, 1.6.2.2 Makefile, 1.9, 1.9.2.1
Daniel Williams (dcbw)
fedora-extras-commits at redhat.com
Tue Nov 29 06:36:40 UTC 2005
- Previous message (by thread): extras-buildsys ChangeLog,1.126.2.24,1.126.2.25
- Next message (by thread): extras-buildsys/server BuildMaster.py, 1.35, 1.35.2.1 Builder.py, 1.20.2.3, 1.20.2.4 PackageJob.py, 1.31.2.6, 1.31.2.7 Repo.py, 1.16.2.2, 1.16.2.3 main.py, 1.14.2.1, 1.14.2.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: dcbw
Update of /cvs/fedora/extras-buildsys/common
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv27896/common
Modified Files:
Tag: STABLE_0_4
HTTPServer.py Makefile
Added Files:
Tag: STABLE_0_4
DebugUtils.py
Log Message:
2005-11-29 Dan Williams <dcbw at redhat.com>
* Add a traceback server that listens on a Unix socket
and writes backtraces for all threads to it. Disabled
by default.
--- NEW FILE DebugUtils.py ---
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Library General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# Copyright 2005 Dan Williams <dcbw at redhat.com> and Red Hat, Inc.
import sys
import SocketServer
import traceback
import os
import threading
import thread
import time
haveThreadframe = True
try:
import threadframe
except ImportError:
haveThreadframe = False
tlLock = threading.Lock()
threadList = {}
def registerThreadName(t):
name = t.getName()
if name and len(name) > 0:
tlLock.acquire()
threadList[thread.get_ident()] = name
tlLock.release()
class ThreadTracebackRequestHandler(SocketServer.StreamRequestHandler):
def handle(self):
if not haveThreadframe:
self.wfile.write("Threadframe not installed. No traceback available.")
return
# Python 2.2 does not support threadframe.dict()
if sys.version_info[:3] < (2, 3, 0):
frames = threadframe.threadframe()
for frame in frames:
self.wfile.write(('-' * 72) + '\n')
self.wfile.write('frame ref count = %d\n' % sys.getrefcount(frame))
traceback.print_stack(f=frame, limit=None, file=self.wfile)
self.wfile.write("\n")
else:
frames = threadframe.dict()
for thread_id, frame in frames.iteritems():
tlLock.acquire()
thread_name = ''
try:
thread_name = " (%s)" % threadList[thread_id]
except:
pass
tlLock.release()
self.wfile.write(('-' * 72) + '\n')
self.wfile.write('[%s%s] %d' % (thread_id, thread_name, sys.getrefcount(frame)))
traceback.print_stack(frame, limit=None, file=self.wfile)
self.wfile.write("\n")
class ThreadTracebackServer(threading.Thread):
def __init__(self, address="/tmp/plague-debug"):
if os.path.exists(address):
os.remove(address)
self._address = address
self._server = SocketServer.ThreadingUnixStreamServer(address, ThreadTracebackRequestHandler)
self._stop = False
threading.Thread.__init__(self)
self.setName("DebugUtilsTracebackServer")
def run(self):
print "Starting traceback server on %s." % self._address
registerThreadName(self)
while not self._stop:
self._server.handle_request()
def stop(self):
self._stop = True
self._server.server_close()
def main():
address = "/tmp/plague-debug"
server = ThreadTracebackServer(address)
server.start()
while True:
try:
time.sleep(1)
except KeyboardInterrupt:
server.stop()
print "Exiting..."
os._exit(0)
if __name__ == '__main__':
main()
Index: HTTPServer.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/common/HTTPServer.py,v
retrieving revision 1.6.2.1
retrieving revision 1.6.2.2
diff -u -r1.6.2.1 -r1.6.2.2
--- HTTPServer.py 18 Nov 2005 15:03:44 -0000 1.6.2.1
+++ HTTPServer.py 29 Nov 2005 06:36:38 -0000 1.6.2.2
@@ -26,6 +26,7 @@
import time
import socket
from OpenSSL import SSL
+import DebugUtils
class PlgHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
@@ -104,8 +105,10 @@
self._stop = False
self._stopped = False
threading.Thread.__init__(self)
+ self.setName("PlgHTTPServerManager: %s/%s" % (addr, http_dir))
def run(self):
+ DebugUtils.registerThreadName(self)
while not self._stop:
self._server.handle_request()
self._stopped = True
Index: Makefile
===================================================================
RCS file: /cvs/fedora/extras-buildsys/common/Makefile,v
retrieving revision 1.9
retrieving revision 1.9.2.1
diff -u -r1.9 -r1.9.2.1
--- Makefile 31 Aug 2005 01:56:38 -0000 1.9
+++ Makefile 29 Nov 2005 06:36:38 -0000 1.9.2.1
@@ -11,6 +11,7 @@
ArchUtils.py \
BaseConfig.py \
CommonErrors.py \
+ DebugUtils.py \
ExecUtils.py \
FileDownloader.py \
HTTPSURLopener.py \
- Previous message (by thread): extras-buildsys ChangeLog,1.126.2.24,1.126.2.25
- Next message (by thread): extras-buildsys/server BuildMaster.py, 1.35, 1.35.2.1 Builder.py, 1.20.2.3, 1.20.2.4 PackageJob.py, 1.31.2.6, 1.31.2.7 Repo.py, 1.16.2.2, 1.16.2.3 main.py, 1.14.2.1, 1.14.2.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list