Python sys._current_frames() Examples
The following are 30
code examples of sys._current_frames().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
sys
, or try the search function
.
Example #1
Source File: output.py From stem with GNU Lesser General Public License v3.0 | 7 votes |
def thread_stacktraces(): """ Provides a dump of the stacktrace information for all active threads. :returns: **dict** that maps thread names to their stacktrace """ stacktraces = {} for thread in threading.enumerate(): frame = sys._current_frames().get(thread.ident, None) if frame: stacktraces[thread.name] = ''.join(traceback.format_stack(frame)) else: stacktraces[thread.name] = 'No traceback available' return stacktraces
Example #2
Source File: stacktracer.py From newspaper-crawler-scripts with GNU General Public License v3.0 | 6 votes |
def stacktraces(): code = [] for threadId, stack in sys._current_frames().items(): code.append("\n# ThreadID: %s" % threadId) for filename, lineno, name, line in traceback.extract_stack(stack): code.append('File: "%s", line %d, in %s' % (filename, lineno, name)) if line: code.append(" %s" % (line.strip())) return highlight("\n".join(code), PythonLexer(), HtmlFormatter( full=False, # style="native", noclasses=True, )) # This part was made by nagylzs
Example #3
Source File: run.py From pyDcop with BSD 3-Clause "New" or "Revised" License | 6 votes |
def on_timeout(): if orchestrator is None: return # Timeout should have been handled by the orchestrator, if the cli timeout # has been reached, something is probably wrong : dump threads. for th in threading.enumerate(): print(th) traceback.print_stack(sys._current_frames()[th.ident]) print() if orchestrator is None: logger.debug("cli timeout with no orchestrator ?") return global timeout_stopped timeout_stopped = True # Stopping agents can be rather long, we need a big timeout ! orchestrator.stop_agents(20) orchestrator.stop() _results("TIMEOUT") sys.exit(0)
Example #4
Source File: orchestrator.py From pyDcop with BSD 3-Clause "New" or "Revised" License | 6 votes |
def on_timeout(): logger.debug("cli timeout ") # Timeout should have been handled by the orchestrator, if the cli timeout # has been reached, something is probably wrong : dump threads. for th in threading.enumerate(): print(th) traceback.print_stack(sys._current_frames()[th.ident]) print() if orchestrator is None: logger.debug("cli timeout with no orchestrator ?") return global timeout_stopped timeout_stopped = True orchestrator.stop_agents(20) orchestrator.stop() _results("TIMEOUT") sys.exit(0)
Example #5
Source File: solve.py From pyDcop with BSD 3-Clause "New" or "Revised" License | 6 votes |
def on_timeout(): logger.debug("cli timeout ") # Timeout should have been handled by the orchestrator, if the cli timeout # has been reached, something is probably wrong : dump threads. for th in threading.enumerate(): print(th) traceback.print_stack(sys._current_frames()[th.ident]) print() if orchestrator is None: logger.debug("cli timeout with no orchestrator ?") return global timeout_stopped timeout_stopped = True # Stopping agents can be rather long, we need a big timeout ! logger.debug("stop agent on cli timeout ") orchestrator.stop_agents(20) logger.debug("stop orchestrator on cli timeout ") orchestrator.stop() _results("TIMEOUT") # sys.exit(0) os._exit(2)
Example #6
Source File: util.py From benchexec with Apache License 2.0 | 6 votes |
def _debug_current_process(sig, current_frame): """Interrupt running process, and provide a python prompt for interactive debugging. This code is based on http://stackoverflow.com/a/133384/396730 """ # Import modules only if necessary, readline is for shell history support. import code, traceback, readline, threading # noqa: E401, F401 @UnresolvedImport @UnusedImport d = {"_frame": current_frame} # Allow access to frame object. d.update(current_frame.f_globals) # Unless shadowed by global d.update(current_frame.f_locals) i = code.InteractiveConsole(d) message = "Signal received : entering python shell.\n" threads = {thread.ident: thread for thread in threading.enumerate()} current_thread = threading.current_thread() for thread_id, frame in sys._current_frames().items(): if current_thread.ident != thread_id: message += "\nTraceback of thread {}:\n".format(threads[thread_id]) message += "".join(traceback.format_stack(frame)) message += "\nTraceback of current thread {}:\n".format(current_thread) message += "".join(traceback.format_stack(current_frame)) i.interact(message)
Example #7
Source File: distribute.py From pyDcop with BSD 3-Clause "New" or "Revised" License | 6 votes |
def on_timeout(): global result, output_file global start_t duration = time.time() - start_t print("TIMEOUT when distributing") logger.info("cli timeout when distributing") for th in threading.enumerate(): print(th) traceback.print_stack(sys._current_frames()[th.ident]) result["status"] = "TIMEOUT" result["inputs"]["duration"] = duration if output_file is not None: with open(output_file, encoding="utf-8", mode="w") as fo: fo.write(yaml.dump(result)) print(yaml.dump(result)) #os._exit(0) sys.exit(0)
Example #8
Source File: gunicorn.conf.py From torngas with BSD 3-Clause "New" or "Revised" License | 6 votes |
def worker_int(worker): worker.log.info("worker received INT or QUIT signal") ## get traceback info import threading, sys, traceback id2name = dict([(th.ident, th.name) for th in threading.enumerate()]) code = [] for threadId, stack in sys._current_frames().items(): code.append("\n# Thread: %s(%d)" % (id2name.get(threadId, ""), threadId)) for filename, lineno, name, line in traceback.extract_stack(stack): code.append('File: "%s", line %d, in %s' % (filename, lineno, name)) if line: code.append(" %s" % (line.strip())) worker.log.debug("\n".join(code))
Example #9
Source File: pydevd_additional_thread_info_regular.py From PyDev.Debugger with Eclipse Public License 1.0 | 6 votes |
def _current_frames(): as_array = thread_states.entrySet().toArray() ret = {} for thread_to_state in as_array: thread = thread_to_state.getKey() if thread is None: continue thread_state = thread_to_state.getValue() if thread_state is None: continue frame = thread_state.frame if frame is None: continue ret[thread.getId()] = frame return ret
Example #10
Source File: help_functions.py From pylane with GNU General Public License v3.0 | 6 votes |
def inspect_threads(thread_names=[]): """inspect_threads() -> {thread_name: {"locals": {}, "stack": ""}} : return threads' locals and stack""" import threading import sys import traceback pylane_thread_name = "pylane-shell-thread" stacks = {} frames = sys._current_frames() threads = threading.enumerate() for thread in threads: if thread.name == pylane_thread_name: continue if thread_names and thread.name not in thread_names: continue frame = frames.get(thread.ident) stack = ''.join(traceback.format_stack(frame)) if frame else '' stacks[thread.name] = { "locals": frame.f_locals, "stack": stack } return stacks
Example #11
Source File: reraiser_thread.py From Jandroid with BSD 3-Clause "New" or "Revised" License | 6 votes |
def LogThreadStack(thread, error_log_func=logging.critical): """Log the stack for the given thread. Args: thread: a threading.Thread instance. error_log_func: Logging function when logging errors. """ stack = sys._current_frames()[thread.ident] error_log_func('*' * 80) error_log_func('Stack dump for thread %r', thread.name) error_log_func('*' * 80) for filename, lineno, name, line in traceback.extract_stack(stack): error_log_func('File: "%s", line %d, in %s', filename, lineno, name) if line: error_log_func(' %s', line.strip()) error_log_func('*' * 80)
Example #12
Source File: reraiser_thread.py From Jandroid with BSD 3-Clause "New" or "Revised" License | 6 votes |
def LogThreadStack(thread, error_log_func=logging.critical): """Log the stack for the given thread. Args: thread: a threading.Thread instance. error_log_func: Logging function when logging errors. """ stack = sys._current_frames()[thread.ident] error_log_func('*' * 80) error_log_func('Stack dump for thread %r', thread.name) error_log_func('*' * 80) for filename, lineno, name, line in traceback.extract_stack(stack): error_log_func('File: "%s", line %d, in %s', filename, lineno, name) if line: error_log_func(' %s', line.strip()) error_log_func('*' * 80)
Example #13
Source File: test_threading.py From Fluid-Designer with GNU General Public License v3.0 | 6 votes |
def test_clear_threads_states_after_fork(self): # Issue #17094: check that threads states are cleared after fork() # start a bunch of threads threads = [] for i in range(16): t = threading.Thread(target=lambda : time.sleep(0.3)) threads.append(t) t.start() pid = os.fork() if pid == 0: # check that threads states have been cleared if len(sys._current_frames()) == 1: os._exit(0) else: os._exit(1) else: _, status = os.waitpid(pid, 0) self.assertEqual(0, status) for t in threads: t.join()
Example #14
Source File: pytrader.py From pytrader with MIT License | 6 votes |
def dump_all_stacks(): """dump a stack trace for all running threads for debugging purpose""" def get_name(thread_id): """return the human readable name that was assigned to a thread""" for thread in threading.enumerate(): if thread.ident == thread_id: return thread.name ret = "\n# Full stack trace of all running threads:\n" for thread_id, stack in sys._current_frames().items(): ret += "\n# %s (%s)\n" % (get_name(thread_id), thread_id) for filename, lineno, name, line in traceback.extract_stack(stack): ret += 'File: "%s", line %d, in %s\n' % (filename, lineno, name) if line: ret += " %s\n" % (line.strip()) return ret
Example #15
Source File: test_threading.py From ironpython3 with Apache License 2.0 | 6 votes |
def test_clear_threads_states_after_fork(self): # Issue #17094: check that threads states are cleared after fork() # start a bunch of threads threads = [] for i in range(16): t = threading.Thread(target=lambda : time.sleep(0.3)) threads.append(t) t.start() pid = os.fork() if pid == 0: # check that threads states have been cleared if len(sys._current_frames()) == 1: os._exit(0) else: os._exit(1) else: _, status = os.waitpid(pid, 0) self.assertEqual(0, status) for t in threads: t.join()
Example #16
Source File: block_profiler.py From stackimpact-python with BSD 3-Clause "New" or "Revised" License | 6 votes |
def process_sample(self, signal_frame, sample_time, main_thread_id): if self.profile: start = time.clock() current_frames = sys._current_frames() items = current_frames.items() for thread_id, thread_frame in items: if thread_id == main_thread_id: thread_frame = signal_frame stack = self.recover_stack(thread_frame) if stack: current_node = self.profile for frame in reversed(stack): current_node = current_node.find_or_add_child(str(frame)) current_node.set_type(Breakdown.TYPE_CALLSITE) current_node.increment(sample_time, 1) thread_id, thread_frame, stack = None, None, None items = None current_frames = None
Example #17
Source File: gunicorn_config.py From BentoML with Apache License 2.0 | 6 votes |
def worker_int(worker): worker.log.debug("worker received INT or QUIT signal") # get traceback info import threading import sys import traceback id2name = {th.ident: th.name for th in threading.enumerate()} code = [] for threadId, stack in sys._current_frames().items(): code.append("\n# Thread: %s(%d)" % (id2name.get(threadId, ""), threadId)) for filename, lineno, name, line in traceback.extract_stack(stack): code.append('File: "%s", line %d, in %s' % (filename, lineno, name)) if line: code.append(" %s" % (line.strip())) worker.log.debug("\n".join(code))
Example #18
Source File: signal_trace.py From luci-py with Apache License 2.0 | 6 votes |
def _dump(_sig, frame): """Dumps the stack trace of all threads.""" # traceback.print_stack uses bytes-like object in python2, but not in # python3 if six.PY2: buf = io.BytesIO() else: buf = io.StringIO() buf.write('** SIGUSR1 received **\n') for t in sorted(threading.enumerate(), key=lambda x: x.name): buf.write('%s:\n' % t.name) f = sys._current_frames()[t.ident] if t == threading.current_thread(): # Use 'frame' for the current thread to remove this very function from the # stack. f = frame traceback.print_stack(f, file=buf) buf.write('** SIGUSR1 end **') # Logging as error so that it'll be printed even if logging.basicConfig() is # used. Use logging instead of sys.stderr.write() because stderr could be # sink-holed and logging redirected to a file. logging.error('\n%s', buf.getvalue())
Example #19
Source File: cli.py From airflow with Apache License 2.0 | 6 votes |
def sigquit_handler(sig, frame): # pylint: disable=unused-argument """ Helps debug deadlocks by printing stacktraces when this gets a SIGQUIT e.g. kill -s QUIT <PID> or CTRL+\ """ print("Dumping stack traces for all threads in PID {}".format(os.getpid())) id_to_name = {th.ident: th.name for th in threading.enumerate()} code = [] for thread_id, stack in sys._current_frames().items(): # pylint: disable=protected-access code.append("\n# Thread: {}({})" .format(id_to_name.get(thread_id, ""), thread_id)) for filename, line_number, name, line in traceback.extract_stack(stack): code.append('File: "{}", line {}, in {}' .format(filename, line_number, name)) if line: code.append(" {}".format(line.strip())) print("\n".join(code))
Example #20
Source File: reraiser_thread.py From Jandroid with BSD 3-Clause "New" or "Revised" License | 6 votes |
def LogThreadStack(thread, error_log_func=logging.critical): """Log the stack for the given thread. Args: thread: a threading.Thread instance. error_log_func: Logging function when logging errors. """ stack = sys._current_frames()[thread.ident] error_log_func('*' * 80) error_log_func('Stack dump for thread %r', thread.name) error_log_func('*' * 80) for filename, lineno, name, line in traceback.extract_stack(stack): error_log_func('File: "%s", line %d, in %s', filename, lineno, name) if line: error_log_func(' %s', line.strip()) error_log_func('*' * 80)
Example #21
Source File: test_sys.py From Fluid-Designer with GNU General Public License v3.0 | 5 votes |
def test_getframe(self): self.assertRaises(TypeError, sys._getframe, 42, 42) self.assertRaises(ValueError, sys._getframe, 2000000000) self.assertTrue( SysModuleTest.test_getframe.__code__ \ is sys._getframe().f_code ) # sys._current_frames() is a CPython-only gimmick.
Example #22
Source File: profiling.py From CloudBot with GNU General Public License v3.0 | 5 votes |
def get_thread_dump(): code = [] threads = [(get_name(thread_id), traceback.extract_stack(stack)) for thread_id, stack in sys._current_frames().items()] for thread_name, stack in threads: code.append("# {}".format(thread_name)) for filename, line_num, name, line in stack: code.append("{}:{} - {}".format(filename, line_num, name)) if line: code.append(" {}".format(line.strip())) code.append("") # new line return web.paste("\n".join(code), ext='txt')
Example #23
Source File: test_sys.py From Fluid-Designer with GNU General Public License v3.0 | 5 votes |
def test_current_frames(self): have_threads = True try: import _thread except ImportError: have_threads = False if have_threads: self.current_frames_with_threads() else: self.current_frames_without_threads() # Test sys._current_frames() in a WITH_THREADS build.
Example #24
Source File: run.py From pyDcop with BSD 3-Clause "New" or "Revised" License | 5 votes |
def on_force_exit(sig, frame): if orchestrator is None: return orchestrator.status = "STOPPED" orchestrator.stop_agents(5) orchestrator.stop() _results("STOPPED") # for th in threading.enumerate(): # print(th) # traceback.print_stack(sys._current_frames()[th.ident]) # print()
Example #25
Source File: web.py From pyFileFixity with MIT License | 5 votes |
def get_traceback(threadid): threadid = int(threadid) frames = sys._current_frames() if threadid in frames: frame = frames[threadid] stack = getouterframes(frame, 5) stack.reverse() stack = [(get_ref(f[0].f_locals),)+f[1:] for f in stack] else: stack = [] return dict(stack=stack, threadid=threadid)
Example #26
Source File: pprofile.py From pyFileFixity with MIT License | 5 votes |
def run(self): current_frames = sys._current_frames test = self._test if test is None: test = lambda x, ident=self.ident: ident != x sample = self.profiler.sample stop_event = self._stop_event wait = partial(stop_event.wait, self._period) while self._can_run: for ident, frame in current_frames().iteritems(): if test(ident): sample(frame) frame = None wait() stop_event.clear()
Example #27
Source File: pytest_timeout.py From pytest-timeout with MIT License | 5 votes |
def dump_stacks(): """Dump the stacks of all threads except the current thread.""" current_ident = threading.current_thread().ident for thread_ident, frame in sys._current_frames().items(): if thread_ident == current_ident: continue for t in threading.enumerate(): if t.ident == thread_ident: thread_name = t.name break else: thread_name = "<unknown>" write_title("Stack of %s (%s)" % (thread_name, thread_ident)) write("".join(traceback.format_stack(frame)))
Example #28
Source File: easy.py From brozzler with Apache License 2.0 | 5 votes |
def dump_state(self, signum=None, frame=None): state_strs = [] for th in threading.enumerate(): state_strs.append(str(th)) stack = traceback.format_stack(sys._current_frames()[th.ident]) state_strs.append(''.join(stack)) logging.warning('dumping state (caught signal {})\n{}'.format( signum, '\n'.join(state_strs)))
Example #29
Source File: tools.py From rssant with BSD 3-Clause "New" or "Revised" License | 5 votes |
def print_stack(): # http://xiaorui.cc/2018/05/21/打印python线程stack分析当前上下文/ print("\n*** STACKTRACE - START ***\n") for th in threading.enumerate(): print(th) traceback.print_stack(sys._current_frames()[th.ident]) print("\n") print("\n*** STACKTRACE - END ***\n")
Example #30
Source File: gunicorn_config.py From notifications-api with MIT License | 5 votes |
def worker_abort(worker): worker.log.info("worker received ABORT {}".format(worker.pid)) for threadId, stack in sys._current_frames().items(): worker.log.error(''.join(traceback.format_stack(stack)))