✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ beluga.o2switch.net ​🇻​♯➤ 4.18.0-553.123.2.lve.el8.x86_64 #1 SMP 🇾​♯➤ 2026

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 185.154.139.77 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.216.84
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗙𝗙 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ 𝗔𝗟𝗟 𝗪𝗢𝗥𝗞𝗜𝗡𝗚....

𝗛𝗢𝗠𝗘
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /opt/alt/python27/lib64/python2.7/Tools/scripts//combinerefs.py
#! /opt/alt/python27/bin/python

"""
combinerefs path

A helper for analyzing PYTHONDUMPREFS output.

When the PYTHONDUMPREFS envar is set in a debug build, at Python shutdown
time Py_Finalize() prints the list of all live objects twice:  first it
prints the repr() of each object while the interpreter is still fully intact.
After cleaning up everything it can, it prints all remaining live objects
again, but the second time just prints their addresses, refcounts, and type
names (because the interpreter has been torn down, calling repr methods at
this point can get into infinite loops or blow up).

Save all this output into a file, then run this script passing the path to
that file.  The script finds both output chunks, combines them, then prints
a line of output for each object still alive at the end:

    address refcnt typename repr

address is the address of the object, in whatever format the platform C
produces for a %p format code.

refcnt is of the form

    "[" ref "]"

when the object's refcount is the same in both PYTHONDUMPREFS output blocks,
or

    "[" ref_before "->" ref_after "]"

if the refcount changed.

typename is object->ob_type->tp_name, extracted from the second PYTHONDUMPREFS
output block.

repr is repr(object), extracted from the first PYTHONDUMPREFS output block.
CAUTION:  If object is a container type, it may not actually contain all the
objects shown in the repr:  the repr was captured from the first output block,
and some of the containees may have been released since then.  For example,
it's common for the line showing the dict of interned strings to display
strings that no longer exist at the end of Py_Finalize; this can be recognized
(albeit painfully) because such containees don't have a line of their own.

The objects are listed in allocation order, with most-recently allocated
printed first, and the first object allocated printed last.


Simple examples:

    00857060 [14] str '__len__'

The str object '__len__' is alive at shutdown time, and both PYTHONDUMPREFS
output blocks said there were 14 references to it.  This is probably due to
C modules that intern the string "__len__" and keep a reference to it in a
file static.

    00857038 [46->5] tuple ()

46-5 = 41 references to the empty tuple were removed by the cleanup actions
between the times PYTHONDUMPREFS produced output.

    00858028 [1025->1456] str '<dummy key>'

The string '<dummy key>', which is used in dictobject.c to overwrite a real
key that gets deleted, grew several hundred references during cleanup.  It
suggests that stuff did get removed from dicts by cleanup, but that the dicts
themselves are staying alive for some reason. """

import re
import sys

# Generate lines from fileiter.  If whilematch is true, continue reading
# while the regexp object pat matches line.  If whilematch is false, lines
# are read so long as pat doesn't match them.  In any case, the first line
# that doesn't match pat (when whilematch is true), or that does match pat
# (when whilematch is false), is lost, and fileiter will resume at the line
# following it.
def read(fileiter, pat, whilematch):
    for line in fileiter:
        if bool(pat.match(line)) == whilematch:
            yield line
        else:
            break

def combine(fname):
    f = file(fname)
    fi = iter(f)

    for line in read(fi, re.compile(r'^Remaining objects:$'), False):
        pass

    crack = re.compile(r'([a-zA-Z\d]+) \[(\d+)\] (.*)')
    addr2rc = {}
    addr2guts = {}
    before = 0
    for line in read(fi, re.compile(r'^Remaining object addresses:$'), False):
        m = crack.match(line)
        if m:
            addr, addr2rc[addr], addr2guts[addr] = m.groups()
            before += 1
        else:
            print '??? skipped:', line

    after = 0
    for line in read(fi, crack, True):
        after += 1
        m = crack.match(line)
        assert m
        addr, rc, guts = m.groups() # guts is type name here
        if addr not in addr2rc:
            print '??? new object created while tearing down:', line.rstrip()
            continue
        print addr,
        if rc == addr2rc[addr]:
            print '[%s]' % rc,
        else:
            print '[%s->%s]' % (addr2rc[addr], rc),
        print guts, addr2guts[addr]

    f.close()
    print "%d objects before, %d after" % (before, after)

if __name__ == '__main__':
    combine(sys.argv[1])


Current_dir [ 𝗡𝗢𝗧 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
6 Feb 2025 1.58 PM
root / linksafe
0755
analyze_dxp.py
4.116 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
byext.py
3.861 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
byteyears.py
1.608 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
checkappend.py
4.558 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
checkpip.py
0.749 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
checkpyc.py
1.973 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
classfix.py
5.822 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
cleanfuture.py
8.386 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
combinerefs.py
4.287 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
copytime.py
0.657 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
crlf.py
0.605 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
cvsfiles.py
1.754 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
db2pickle.py
3.496 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
diff.py
2.027 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
dutree.py
1.587 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
eptags.py
1.458 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
find_recursionlimit.py
3.401 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
finddiv.py
2.468 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
findlinksto.py
1.054 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
findnocoding.py
2.752 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
fixcid.py
9.771 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
fixdiv.py
13.526 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
fixheader.py
1.171 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
fixnotice.py
2.989 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
fixps.py
0.882 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
google.py
0.517 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
gprof2html.py
2.126 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
h2py.py
5.823 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
hotshotmain.py
1.458 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
ifdef.py
3.641 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
lfcr.py
0.613 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
linktree.py
2.377 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
lll.py
0.734 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
logmerge.py
5.454 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
mailerdaemon.py
7.766 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
md5sum.py
2.339 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
methfix.py
5.344 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
mkreal.py
1.599 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
ndiff.py
3.729 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
nm2def.py
2.396 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
objgraph.py
5.886 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
parseentities.py
1.688 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
patchcheck.py
7.509 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
pathfix.py
4.237 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
pdeps.py
3.854 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
pickle2db.py
3.859 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
pindent.py
16.777 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
ptags.py
1.205 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
pysource.py
3.766 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
redemo.py
5.666 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
reindent-rst.py
0.28 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
reindent.py
11.159 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
rgrep.py
1.467 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
serve.py
1.13 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
setup.py
0.411 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
suff.py
0.616 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
svneol.py
2.871 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
texcheck.py
9.039 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
texi2html.py
68.198 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
treesync.py
5.657 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
untabify.py
1.196 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
which.py
1.602 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
win_add2path.py
1.582 KB
8 Jan 2025 10.43 AM
root / linksafe
0755
xxci.py
2.741 KB
8 Jan 2025 10.43 AM
root / linksafe
0755

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF