Mercurial > hg
annotate contrib/showstack.py @ 51948:ed90f4a1bb2c
tests: conditionalize `chmod` usage in `test-upgrade-repo.t`
While the command itself doesn't error out on Windows, it also doesn't make the
filesystem readonly. Therefore the repo gets altered to drop dirstate-v2, and
puts it out of sync with that happens on Linux.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Thu, 03 Oct 2024 19:49:05 -0400 |
parents | 6000f5b25c9b |
children |
rev | line source |
---|---|
26123
bdac264e5ed4
contrib: add showstack extension
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
1 # showstack.py - extension to dump a Python stack trace on signal |
bdac264e5ed4
contrib: add showstack extension
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
2 # |
bdac264e5ed4
contrib: add showstack extension
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
3 # binds to both SIGQUIT (Ctrl-\) and SIGINFO (Ctrl-T on BSDs) |
41548
6dae1f31c6c9
showstack: use raw docstring
Gregory Szorc <gregory.szorc@gmail.com>
parents:
40036
diff
changeset
|
4 r"""dump stack trace when receiving SIGQUIT (Ctrl-\) or SIGINFO (Ctrl-T on BSDs) |
35656
c9eb92fb87b7
showstack: add an extension docstring
Boris Feld <boris.feld@octobus.net>
parents:
28522
diff
changeset
|
5 """ |
26123
bdac264e5ed4
contrib: add showstack extension
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
6 |
28522
f2fe7b199bb4
showstack: use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26123
diff
changeset
|
7 import signal |
f2fe7b199bb4
showstack: use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26123
diff
changeset
|
8 import sys |
f2fe7b199bb4
showstack: use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
26123
diff
changeset
|
9 import traceback |
26123
bdac264e5ed4
contrib: add showstack extension
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
10 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41548
diff
changeset
|
11 |
26123
bdac264e5ed4
contrib: add showstack extension
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
12 def sigshow(*args): |
bdac264e5ed4
contrib: add showstack extension
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
13 sys.stderr.write("\n") |
bdac264e5ed4
contrib: add showstack extension
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
14 traceback.print_stack(args[1], limit=10, file=sys.stderr) |
bdac264e5ed4
contrib: add showstack extension
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
15 sys.stderr.write("----\n") |
bdac264e5ed4
contrib: add showstack extension
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
16 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41548
diff
changeset
|
17 |
40036
acf5dbe39478
showstack: also handle SIGALRM
Augie Fackler <augie@google.com>
parents:
35656
diff
changeset
|
18 def sigexit(*args): |
acf5dbe39478
showstack: also handle SIGALRM
Augie Fackler <augie@google.com>
parents:
35656
diff
changeset
|
19 sigshow(*args) |
acf5dbe39478
showstack: also handle SIGALRM
Augie Fackler <augie@google.com>
parents:
35656
diff
changeset
|
20 print('alarm!') |
acf5dbe39478
showstack: also handle SIGALRM
Augie Fackler <augie@google.com>
parents:
35656
diff
changeset
|
21 sys.exit(1) |
acf5dbe39478
showstack: also handle SIGALRM
Augie Fackler <augie@google.com>
parents:
35656
diff
changeset
|
22 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41548
diff
changeset
|
23 |
26123
bdac264e5ed4
contrib: add showstack extension
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
24 def extsetup(ui): |
bdac264e5ed4
contrib: add showstack extension
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
25 signal.signal(signal.SIGQUIT, sigshow) |
40036
acf5dbe39478
showstack: also handle SIGALRM
Augie Fackler <augie@google.com>
parents:
35656
diff
changeset
|
26 signal.signal(signal.SIGALRM, sigexit) |
26123
bdac264e5ed4
contrib: add showstack extension
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
27 try: |
bdac264e5ed4
contrib: add showstack extension
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
28 signal.signal(signal.SIGINFO, sigshow) |
bdac264e5ed4
contrib: add showstack extension
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
29 except AttributeError: |
bdac264e5ed4
contrib: add showstack extension
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
30 pass |