Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RecursionError when connecting to qemu target #954

Closed
justfoxing opened this issue Sep 2, 2021 · 34 comments
Closed

RecursionError when connecting to qemu target #954

justfoxing opened this issue Sep 2, 2021 · 34 comments
Labels

Comments

@justfoxing
Copy link

Description

  • pwndbg after commit dc0e1f4 (including current latest 2bef07f) continuously throws RecursionErrors when connecting to a qemu target (qemu-arm and qemu-x86_64 both show the same behaviour) and doesn't display the pwndbg UI.
  • Before commit dc0e1f4, no errors occur. This commit is "elf.py: optimize get_ehdr" and adds the pwndbg.vmmap.find() call into get_ehdr(), which is where the recursion seems to come into play, so I'm pretty sure it's the problem.
  • Using a non-qemu target (including a native one running under gdbserver), no errors occur.

Steps to reproduce

qemu-x86_64 -g 1234 `which ps`
gdb `which ps` # note: need to provide the target binary on the command line or the issue won't trigger.
pwndbg> target remote :1234

Output is then:

Remote debugging using :1234
0x0000004000846100 in ?? ()
Exception occurred: Error: maximum recursion depth exceeded in comparison (<class 'RecursionError'>)
For more info invoke `set exception-verbose on` and rerun the command
or debug it by yourself with `set exception-debugger on`
Exception occurred: Error: maximum recursion depth exceeded in comparison (<class 'RecursionError'>)
For more info invoke `set exception-verbose on` and rerun the command
or debug it by yourself with `set exception-debugger on`
Python Exception <class 'RecursionError'> maximum recursion depth exceeded in comparison:
Exception occurred: Error: maximum recursion depth exceeded while calling a Python object (<class 'RecursionError'>)
For more info invoke `set exception-verbose on` and rerun the command
or debug it by yourself with `set exception-debugger on`
Python Exception <class 'RecursionError'> maximum recursion depth exceeded while calling a Python object:
Exception occurred: Error: maximum recursion depth exceeded while calling a Python object (<class 'RecursionError'>)
For more info invoke `set exception-verbose on` and rerun the command
or debug it by yourself with `set exception-debugger on`
Python Exception <class 'RecursionError'> maximum recursion depth exceeded while calling a Python object:
Exception occurred: Error: maximum recursion depth exceeded while calling a Python object (<class 'RecursionError'>)
For more info invoke `set exception-verbose on` and rerun the command
or debug it by yourself with `set exception-debugger on`
Python Exception <class 'RecursionError'> maximum recursion depth exceeded while calling a Python object:
Exception occurred: Error: maximum recursion depth exceeded in comparison (<class 'RecursionError'>)
For more info invoke `set exception-verbose on` and rerun the command
or debug it by yourself with `set exception-debugger on`
Python Exception <class 'RecursionError'> maximum recursion depth exceeded in comparison:
pwndbg>

With set exception-debugger on, the partial traceback is:

Traceback (most recent call last):
  File "/home/user/Tools/pwndbg/pwndbg/events.py", line 165, in caller
    func()
  File "/home/user/Tools/pwndbg/pwndbg/memoize.py", line 194, in __reset_on_base
    base = pwndbg.elf.exe().address if pwndbg.elf.exe() else None
  File "/home/user/Tools/pwndbg/pwndbg/proc.py", line 71, in wrapper
    return func(*a, **kw)
  File "/home/user/Tools/pwndbg/pwndbg/memoize.py", line 46, in __call__
    value = self.func(*args, **kwargs)
  File "/home/user/Tools/pwndbg/pwndbg/elf.py", line 182, in exe
    return load(e)
  File "/home/user/Tools/pwndbg/pwndbg/elf.py", line 220, in load
    return get_ehdr(pointer)[1]
  File "/home/user/Tools/pwndbg/pwndbg/elf.py", line 237, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/home/user/Tools/pwndbg/pwndbg/memoize.py", line 46, in __call__
    value = self.func(*args, **kwargs)
  File "/home/user/Tools/pwndbg/pwndbg/vmmap.py", line 72, in find
    for page in get():
  File "/home/user/Tools/pwndbg/pwndbg/memoize.py", line 46, in __call__
    value = self.func(*args, **kwargs)
  File "/home/user/Tools/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/home/user/Tools/pwndbg/pwndbg/memoize.py", line 46, in __call__
    value = self.func(*args, **kwargs)
  File "/home/user/Tools/pwndbg/pwndbg/vmmap.py", line 404, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/home/user/Tools/pwndbg/pwndbg/elf.py", line 326, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/home/user/Tools/pwndbg/pwndbg/elf.py", line 237, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/home/user/Tools/pwndbg/pwndbg/memoize.py", line 46, in __call__
    value = self.func(*args, **kwargs)
  File "/home/user/Tools/pwndbg/pwndbg/vmmap.py", line 72, in find
    for page in get():
  File "/home/user/Tools/pwndbg/pwndbg/memoize.py", line 46, in __call__
    value = self.func(*args, **kwargs)
  File "/home/user/Tools/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/home/user/Tools/pwndbg/pwndbg/memoize.py", line 46, in __call__
    value = self.func(*args, **kwargs)
  File "/home/user/Tools/pwndbg/pwndbg/vmmap.py", line 404, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/home/user/Tools/pwndbg/pwndbg/elf.py", line 326, in map
    ei_class, ehdr         = get_ehdr(pointer)
... repeat until RecursionError.

(If you want the full traceback for some reason, let me know, but it's just recursing through the same functions until it falls over).

My setup

pwndbg> version
Gdb: 9.2
Python: 3.8.2 (default, Jul 16 2020, 14:00:26) [GCC 9.3.0]
Pwndbg: 1.1.0 build: 2bef07f
Capstone: 4.0.1024
Unicorn: 1.0.2

Running on Ubuntu

@justfoxing justfoxing added the bug label Sep 2, 2021
@disconnect3d
Copy link
Member

disconnect3d commented Sep 2, 2021

Hey, thanks for reporting this. I'll try to investigate this issue

@disconnect3d
Copy link
Member

note: need to provide the target binary on the command line or the issue won't trigger.

Interesting, it seems this could be some caching issue, but when we disable memoization/caching with memoize command (or by changing pwndbg/memoize.py caching=False) this still triggers.

@disconnect3d
Copy link
Member

This can maybe be diagnosed/compared by using set debug-events on in config.

@disconnect3d
Copy link
Member

The issue is that I introduced a cyclic dependency between pwndbg.vmmap.find and get_ehdr functions in some cases: when vmmap.find can't use proc_pid_maps (e.g. on qemu-user) it tries to fetch things via AUXV: if it doesn't find it, it will use pwndbg.vmmap.info_files function which parses the info files command from GDB and may then execute pwndbg.elf.map function which then uses get_ehdr which uses vmmap.find and we get the recursion.

Now:

  • if we launch gdb <file> -ex 'target remote :1234' - info files will return data which will be processed and pwndbg.elf.map is executed - causing recursion error
  • if we launch gdb -ex 'target remote :1234 - pwndbg does not crash, but our vmmap information is still bad (we only get them through register exploration :/)

FWIW gef also did not figure this out: they only have a single vmmap page: 0-xffff.... on qemu-user targets.

@disconnect3d
Copy link
Member

disconnect3d commented Sep 5, 2021

@justfoxing this should be fixed with the recent commit.

Although its not ideal: I made it so we just return a Page(0, 0xfffffffff...) which is not quite correct.

@justfoxing
Copy link
Author

Cheers, confirmed working for me, thanks for the quick fix.

@stong
Copy link

stong commented Oct 4, 2021

This is still happening on ARM64

Exception occurred: Error: maximum recursion depth exceeded in comparison (<class 'RecursionError'>)
For more info invoke `set exception-verbose on` and rerun the command
or debug it by yourself with `set exception-debugger on`
Python Exception <class 'RecursionError'> maximum recursion depth exceeded in comparison:
pwndbg> set exception-verbose on
Set whether to print a full stacktrace for exceptions raised in Pwndbg commands to True
Traceback (most recent call last):
  File "/root/pwndbg/pwndbg/events.py", line 165, in caller
    func()
  File "/root/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/root/pwndbg/pwndbg/stack.py", line 79, in update
    page  = pwndbg.memory.Page(start, stop-start, 6 if not is_executable() else 7, 0, '[stack]')
  File "/root/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/root/pwndbg/pwndbg/stack.py", line 127, in is_executable
    ehdr         = pwndbg.elf.exe()
  File "/root/pwndbg/pwndbg/proc.py", line 82, in wrapper
    return func(*a, **kw)
  File "/root/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/root/pwndbg/pwndbg/elf.py", line 182, in exe
    return load(e)
  File "/root/pwndbg/pwndbg/elf.py", line 220, in load
    return get_ehdr(pointer)[1]
  File "/root/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/root/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/root/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/root/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/root/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/root/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/root/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/root/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/root/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/root/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/root/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/root/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/root/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/root/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/root/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv

...

  File "/root/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/root/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/root/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/root/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/root/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/root/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/root/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/root/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/root/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/root/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/root/pwndbg/pwndbg/elf.py", line 239, in get_ehdr
    if pwndbg.qemu.is_qemu():
  File "/root/pwndbg/pwndbg/memoize.py", line 41, in __call__
    if not isinstance(args, Hashable):
  File "/usr/lib/python3.8/abc.py", line 98, in __instancecheck__
    return _abc_instancecheck(cls, instance)
RecursionError: maximum recursion depth exceeded in comparison

If that is an issue, you can report it on https://github.com/pwndbg/pwndbg/issues
(Please don't forget to search if it hasn't been reported before)
To generate the report and open a browser, you may run `bugreport --run-browser`
PS: Pull requests are welcome

@disconnect3d
Copy link
Member

disconnect3d commented Oct 5, 2021

@stong eh, can you see if this fixed your issue? e239e9c

Is this a qemu user mode or qemu kernel?

Can you provide a testcase so I can improve this?

@stong
Copy link

stong commented Oct 5, 2021

Actually this binary is not qemu whatsoever. It is just a normal ELF compiled by clang.

By the way, I forgot to say this but thank you @justfoxing for the accurate issue description with the offending commit hashes. I was able to workaround by checking out commits prior to that

@disconnect3d
Copy link
Member

Is this on ARM64 linux then? Or is it a binfmt misc that actually runs qemu user mode under th hood?

@stong
Copy link

stong commented Oct 5, 2021

Yes, it's running on a Raspberry Pi.

root@ubuntu:~# uname -a
Linux ubuntu 5.4.0-1042-raspi #46-Ubuntu SMP PREEMPT Fri Jul 30 00:35:40 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux
root@ubuntu:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.3 LTS
Release:        20.04
Codename:       focal
# ldd --version
ldd (Ubuntu GLIBC 2.31-0ubuntu9.2) 2.31
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

Something else I might add --- commands like bins and tcache don't seem to work as these values got optimized out and pwndbg can't find them by symbol -- unfortunate :( But that is a separate issue.

@disconnect3d
Copy link
Member

disconnect3d commented Oct 5, 2021

Can you show output of this command?: gdb --quiet /bin/ls -ex 'set context-sections ""' -ex entry -ex 'info proc mapping' -ex vmmap

@stong
Copy link

stong commented Oct 5, 2021

Ah, interesting it seems to be an issue specific to core files.

root@ubuntu:~# cat test2.c
#include <stdlib.h>
int main() { abort(); }
root@ubuntu:~# clang -pthread -O3 test2.c
root@ubuntu:~# ./a.out
Aborted (core dumped)
root@ubuntu:~# gdb --quiet ./a.out core -ex 'set context-sections ""' -ex entry -ex 'info proc mapping' -ex vmmap
pwndbg: loaded 198 commands. Type pwndbg [filter] for a list.
pwndbg: created $rebase, $ida gdb functions (can be used with print/break)
Reading symbols from ./a.out...
(No debugging symbols found in ./a.out)
[New LWP 2323474]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
Core was generated by `./a.out'.
Program terminated with signal SIGABRT, Aborted.
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
Sections set to be empty. FYI valid values are: regs, disasm, args, code, stack, backtrace, expressions, ghidra
Temporary breakpoint 1 at 0x4004f0
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".

Temporary breakpoint 1, 0x00000000004004f0 in _start ()
process 2323489
Mapped address spaces:

          Start Addr           End Addr       Size     Offset objfile
            0x400000           0x401000     0x1000        0x0 /root/a.out
            0x410000           0x411000     0x1000        0x0 /root/a.out
            0x411000           0x412000     0x1000     0x1000 /root/a.out
            0x412000           0x433000    0x21000        0x0 [heap]
      0xfffff7b71000     0xfffff7b73000     0x2000        0x0
      0xfffff7b73000     0xfffff7ccd000   0x15a000        0x0 /usr/lib/aarch64-linux-gnu/libc-2.31.so
      0xfffff7ccd000     0xfffff7cdd000    0x10000   0x15a000 /usr/lib/aarch64-linux-gnu/libc-2.31.so
      0xfffff7cdd000     0xfffff7ce0000     0x3000   0x15a000 /usr/lib/aarch64-linux-gnu/libc-2.31.so
      0xfffff7ce0000     0xfffff7ce3000     0x3000   0x15d000 /usr/lib/aarch64-linux-gnu/libc-2.31.so
      0xfffff7ce3000     0xfffff7ce6000     0x3000        0x0
      0xfffff7ce6000     0xfffff7d00000    0x1a000        0x0 /usr/lib/aarch64-linux-gnu/libpthread-2.31.so
      0xfffff7d00000     0xfffff7d10000    0x10000    0x1a000 /usr/lib/aarch64-linux-gnu/libpthread-2.31.so
      0xfffff7d10000     0xfffff7d11000     0x1000    0x1a000 /usr/lib/aarch64-linux-gnu/libpthread-2.31.so
      0xfffff7d11000     0xfffff7d12000     0x1000    0x1b000 /usr/lib/aarch64-linux-gnu/libpthread-2.31.so
      0xfffff7d12000     0xfffff7d16000     0x4000        0x0
      0xfffff7d16000     0xfffff7d29000    0x13000        0x0 /usr/lib/aarch64-linux-gnu/libgcc_s.so.1
      0xfffff7d29000     0xfffff7d38000     0xf000    0x13000 /usr/lib/aarch64-linux-gnu/libgcc_s.so.1
      0xfffff7d38000     0xfffff7d39000     0x1000    0x12000 /usr/lib/aarch64-linux-gnu/libgcc_s.so.1
      0xfffff7d39000     0xfffff7d3a000     0x1000    0x13000 /usr/lib/aarch64-linux-gnu/libgcc_s.so.1
      0xfffff7d3a000     0xfffff7dd5000    0x9b000        0x0 /usr/lib/aarch64-linux-gnu/libm-2.31.so
      0xfffff7dd5000     0xfffff7de5000    0x10000    0x9b000 /usr/lib/aarch64-linux-gnu/libm-2.31.so
      0xfffff7de5000     0xfffff7de6000     0x1000    0x9b000 /usr/lib/aarch64-linux-gnu/libm-2.31.so
      0xfffff7de6000     0xfffff7de7000     0x1000    0x9c000 /usr/lib/aarch64-linux-gnu/libm-2.31.so
      0xfffff7de7000     0xfffff7fac000   0x1c5000        0x0 /usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.28
      0xfffff7fac000     0xfffff7fbb000     0xf000   0x1c5000 /usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.28
      0xfffff7fbb000     0xfffff7fc6000     0xb000   0x1c4000 /usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.28
      0xfffff7fc6000     0xfffff7fc9000     0x3000   0x1cf000 /usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.28
      0xfffff7fc9000     0xfffff7fcc000     0x3000        0x0
      0xfffff7fcc000     0xfffff7fed000    0x21000        0x0 /usr/lib/aarch64-linux-gnu/ld-2.31.so
      0xfffff7fee000     0xfffff7ff2000     0x4000        0x0
      0xfffff7ffb000     0xfffff7ffc000     0x1000        0x0 [vvar]
      0xfffff7ffc000     0xfffff7ffd000     0x1000        0x0 [vdso]
      0xfffff7ffd000     0xfffff7ffe000     0x1000    0x21000 /usr/lib/aarch64-linux-gnu/ld-2.31.so
      0xfffff7ffe000     0xfffff8000000     0x2000    0x22000 /usr/lib/aarch64-linux-gnu/ld-2.31.so
      0xfffffffdf000    0x1000000000000    0x21000        0x0 [stack]
LEGEND: STACK | HEAP | CODE | DATA | RWX | RODATA
          0x400000           0x401000 r-xp     1000 0      /root/a.out
          0x410000           0x411000 r--p     1000 0      /root/a.out
          0x411000           0x412000 rw-p     1000 1000   /root/a.out
          0x412000           0x433000 rw-p    21000 0      [heap]
    0xfffff7b71000     0xfffff7b73000 rw-p     2000 0      [anon_fffff7b71]
    0xfffff7b73000     0xfffff7ccd000 r-xp   15a000 0      /usr/lib/aarch64-linux-gnu/libc-2.31.so
    0xfffff7ccd000     0xfffff7cdd000 ---p    10000 15a000 /usr/lib/aarch64-linux-gnu/libc-2.31.so
    0xfffff7cdd000     0xfffff7ce0000 r--p     3000 15a000 /usr/lib/aarch64-linux-gnu/libc-2.31.so
    0xfffff7ce0000     0xfffff7ce3000 rw-p     3000 15d000 /usr/lib/aarch64-linux-gnu/libc-2.31.so
    0xfffff7ce3000     0xfffff7ce6000 rw-p     3000 0      [anon_fffff7ce3]
    0xfffff7ce6000     0xfffff7d00000 r-xp    1a000 0      /usr/lib/aarch64-linux-gnu/libpthread-2.31.so
    0xfffff7d00000     0xfffff7d10000 ---p    10000 1a000  /usr/lib/aarch64-linux-gnu/libpthread-2.31.so
    0xfffff7d10000     0xfffff7d11000 r--p     1000 1a000  /usr/lib/aarch64-linux-gnu/libpthread-2.31.so
    0xfffff7d11000     0xfffff7d12000 rw-p     1000 1b000  /usr/lib/aarch64-linux-gnu/libpthread-2.31.so
    0xfffff7d12000     0xfffff7d16000 rw-p     4000 0      [anon_fffff7d12]
    0xfffff7d16000     0xfffff7d29000 r-xp    13000 0      /usr/lib/aarch64-linux-gnu/libgcc_s.so.1
    0xfffff7d29000     0xfffff7d38000 ---p     f000 13000  /usr/lib/aarch64-linux-gnu/libgcc_s.so.1
    0xfffff7d38000     0xfffff7d39000 r--p     1000 12000  /usr/lib/aarch64-linux-gnu/libgcc_s.so.1
    0xfffff7d39000     0xfffff7d3a000 rw-p     1000 13000  /usr/lib/aarch64-linux-gnu/libgcc_s.so.1
    0xfffff7d3a000     0xfffff7dd5000 r-xp    9b000 0      /usr/lib/aarch64-linux-gnu/libm-2.31.so
    0xfffff7dd5000     0xfffff7de5000 ---p    10000 9b000  /usr/lib/aarch64-linux-gnu/libm-2.31.so
    0xfffff7de5000     0xfffff7de6000 r--p     1000 9b000  /usr/lib/aarch64-linux-gnu/libm-2.31.so
    0xfffff7de6000     0xfffff7de7000 rw-p     1000 9c000  /usr/lib/aarch64-linux-gnu/libm-2.31.so
    0xfffff7de7000     0xfffff7fac000 r-xp   1c5000 0      /usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.28
    0xfffff7fac000     0xfffff7fbb000 ---p     f000 1c5000 /usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.28
    0xfffff7fbb000     0xfffff7fc6000 r--p     b000 1c4000 /usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.28
    0xfffff7fc6000     0xfffff7fc9000 rw-p     3000 1cf000 /usr/lib/aarch64-linux-gnu/libstdc++.so.6.0.28
    0xfffff7fc9000     0xfffff7fcc000 rw-p     3000 0      [anon_fffff7fc9]
    0xfffff7fcc000     0xfffff7fed000 r-xp    21000 0      /usr/lib/aarch64-linux-gnu/ld-2.31.so
    0xfffff7fee000     0xfffff7ff2000 rw-p     4000 0      [anon_fffff7fee]
    0xfffff7ffb000     0xfffff7ffc000 r--p     1000 0      [vvar]
    0xfffff7ffc000     0xfffff7ffd000 r-xp     1000 0      [vdso]
    0xfffff7ffd000     0xfffff7ffe000 r--p     1000 21000  /usr/lib/aarch64-linux-gnu/ld-2.31.so
    0xfffff7ffe000     0xfffff8000000 rw-p     2000 22000  /usr/lib/aarch64-linux-gnu/ld-2.31.so
    0xfffffffdf000    0x1000000000000 rw-p    21000 0      [stack]
pwndbg>

@disconnect3d
Copy link
Member

disconnect3d commented Oct 5, 2021

Wait, why doesn't it trigger now?

EDIT: Btw it may be better to communicate via Discord: we have a Pwndbg server at https://discord.gg/pNhrz52s

@stong
Copy link

stong commented Oct 5, 2021

OK, will do. It seems to happen when I do gdb a.out core but indeed doesn't happen with the above command line

@Sparrrgh
Copy link

I'm getting this same error, in the same parts of the code, but on an amd64 binary. It happens inside of a recursive function, after the first level of recursion

@Sparrrgh
Copy link

  File "/opt/pwndbg/pwndbg/events.py", line 169, in caller
    raise e
  File "/opt/pwndbg/pwndbg/events.py", line 165, in caller
    func()
  File "/opt/pwndbg/pwndbg/vmmap.py", line 466, in mark_pc_as_executable
    mapping = find(pwndbg.regs.pc)
  File "/opt/pwndbg/pwndbg/memoize.py", line 46, in __call__
    value = self.func(*args, **kwargs)
  File "/opt/pwndbg/pwndbg/vmmap.py", line 72, in find
    for page in get():
  File "/opt/pwndbg/pwndbg/memoize.py", line 46, in __call__
    value = self.func(*args, **kwargs)
  File "/opt/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/opt/pwndbg/pwndbg/memoize.py", line 46, in __call__
    value = self.func(*args, **kwargs)
  File "/opt/pwndbg/pwndbg/vmmap.py", line 404, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/opt/pwndbg/pwndbg/elf.py", line 326, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/opt/pwndbg/pwndbg/elf.py", line 237, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/opt/pwndbg/pwndbg/memoize.py", line 46, in __call__
    value = self.func(*args, **kwargs)
  File "/opt/pwndbg/pwndbg/vmmap.py", line 72, in find
    for page in get():
  File "/opt/pwndbg/pwndbg/memoize.py", line 46, in __call__
    value = self.func(*args, **kwargs)
  File "/opt/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/opt/pwndbg/pwndbg/memoize.py", line 46, in __call__
    value = self.func(*args, **kwargs)
  File "/opt/pwndbg/pwndbg/vmmap.py", line 404, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/opt/pwndbg/pwndbg/elf.py", line 326, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/opt/pwndbg/pwndbg/elf.py", line 237, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/opt/pwndbg/pwndbg/memoize.py", line 46, in __call__
    value = self.func(*args, **kwargs)
  File "/opt/pwndbg/pwndbg/vmmap.py", line 72, in find
    for page in get():
  File "/opt/pwndbg/pwndbg/memoize.py", line 46, in __call__
    value = self.func(*args, **kwargs)
  File "/opt/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/opt/pwndbg/pwndbg/memoize.py", line 46, in __call__
    value = self.func(*args, **kwargs)
  File "/opt/pwndbg/pwndbg/vmmap.py", line 404, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/opt/pwndbg/pwndbg/elf.py", line 326, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/opt/pwndbg/pwndbg/elf.py", line 237, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/opt/pwndbg/pwndbg/memoize.py", line 46, in __call__
    value = self.func(*args, **kwargs)
  File "/opt/pwndbg/pwndbg/vmmap.py", line 72, in find
    for page in get():

Just to make sure it's exactly the same issue

@disconnect3d disconnect3d reopened this Oct 28, 2021
@disconnect3d
Copy link
Member

@Sparrrgh can u show how we can reproduce this? e.g. exact binary/setup?

@cnwangjihe
Copy link
Contributor

have the same issue when loading coredump.
using gdb ./test ./core
test.tar.gz

@disconnect3d
Copy link
Member

disconnect3d commented Nov 7, 2021

@cnwangjihe are u using latest pwndbg? and which version of gdb? for @Sparrrgh it seemed that a gdb or pwndbg update helped..

Can u show output of the version command?

@cnwangjihe
Copy link
Contributor

On ubuntu 20.04 LTS

Gdb:      9.2
Python:   3.8.10 (default, Sep 28 2021, 16:10:42)  [GCC 9.3.0]
Pwndbg:   1.1.0 build: 5c0627d
Capstone: 4.0.1024
Unicorn:  1.0.2
Exception occurred: Error: maximum recursion depth exceeded in comparison (<class 'RecursionError'>)

On arch linux, with gdb 11.1, encounter the same issue

Gdb:      11.1
Python:   3.9.7 (default, Oct 10 2021, 15:13:22)  [GCC 11.1.0]
Pwndbg:   1.1.0 build: 5c0627d
Capstone: 4.0.1024
Unicorn:  1.0.3

@kleest
Copy link

kleest commented Feb 11, 2022

This happens when trying to debug a coredump:

$ cat test.c     
int main(int argc, char **argv) {
    char *c = 0;
    *c = 5;
    return 0;
}
$ gcc test.c
$ ./a.out 
[1]    6867 segmentation fault (core dumped)  ./a.out
$  gdb -c core.6867 a.out
GNU gdb (GDB) 11.2
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from a.out...
(No debugging symbols found in a.out)
[New LWP 6867]

warning: Section `.reg-xstate/6867' in core file too small.
Core was generated by `./a.out'.
Program terminated with signal SIGSEGV, Segmentation fault.

warning: Section `.reg-xstate/6867' in core file too small.
#0  0x000056135e2af130 in main ()

(gdb) source /usr/share/pwndbg/gdbinit.py
pwndbg: loaded 193 commands. Type pwndbg [filter] for a list.
pwndbg: created $rebase, $ida gdb functions (can be used with print/break)
Exception occurred: Error: maximum recursion depth exceeded in comparison (<class 'RecursionError'>)
For more info invoke `set exception-verbose on` and rerun the command
or debug it by yourself with `set exception-debugger on`
Python Exception <class 'RecursionError'>: maximum recursion depth exceeded in comparison

bugreport

Platform: Linux-5.16.8-arch1-1-x86_64-with-glibc2.33
Gdb: 11.2
Python: 3.10.2 (main, Jan 15 2022, 19:56:27) [GCC 11.1.0]
Pwndbg: 1.1.0
Capstone: 4.0.1024
Unicorn: 1.0.3
This GDB was configured as follows:
configure --host=x86_64-pc-linux-gnu --target=x86_64-pc-linux-gnu
--with-auto-load-dir=$debugdir:$datadir/auto-load
--with-auto-load-safe-path=$debugdir:$datadir/auto-load
--with-expat
--with-gdb-datadir=/usr/share/gdb (relocatable)
--with-jit-reader-dir=/usr/lib/gdb (relocatable)
--without-libunwind-ia64
--with-lzma
--without-babeltrace
--without-intel-pt
--with-mpfr
--without-xxhash
--with-python=/usr (relocatable)
--with-python-libdir=/usr/lib (relocatable)
--with-debuginfod
--with-guile
--enable-source-highlight
--with-separate-debug-dir=/usr/lib/debug (relocatable)
--with-system-gdbinit=/etc/gdb/gdbinit

("Relocatable" means the directory can be moved with the GDB installation
tree, and GDB will still find it.)

Traceback

Traceback (most recent call last):
  File "/usr/share/pwndbg/pwndbg/prompt.py", line 30, in prompt_hook
    pwndbg.events.after_reload(start=cur is None)
  File "/usr/share/pwndbg/pwndbg/events.py", line 216, in after_reload
    f()
  File "/usr/share/pwndbg/pwndbg/events.py", line 169, in caller
    raise e
  File "/usr/share/pwndbg/pwndbg/events.py", line 165, in caller
    func()
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/stack.py", line 79, in update
    page  = pwndbg.memory.Page(start, stop-start, 6 if not is_executable() else 7, 0, '[stack]')
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/stack.py", line 127, in is_executable
    ehdr         = pwndbg.elf.exe()
  File "/usr/share/pwndbg/pwndbg/proc.py", line 82, in wrapper
    return func(*a, **kw)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 182, in exe
    return load(e)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 220, in load
    return get_ehdr(pointer)[1]
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 242, in get_ehdr
    vmmap = pwndbg.vmmap.find(pointer)
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 78, in find
    for page in get():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 53, in get
    pages.extend(info_auxv())
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 52, in __call__
    value = self.func(*args, **kwargs)
  File "/usr/share/pwndbg/pwndbg/vmmap.py", line 410, in info_auxv
    pages.extend(pwndbg.elf.map(entry or phdr, exe_name))
  File "/usr/share/pwndbg/pwndbg/elf.py", line 331, in map
    ei_class, ehdr         = get_ehdr(pointer)
  File "/usr/share/pwndbg/pwndbg/elf.py", line 239, in get_ehdr
    if pwndbg.qemu.is_qemu():
  File "/usr/share/pwndbg/pwndbg/memoize.py", line 41, in __call__
    if not isinstance(args, Hashable):
  File "/usr/lib/python3.10/abc.py", line 119, in __instancecheck__
    return _abc_instancecheck(cls, instance)
RecursionError: maximum recursion depth exceeded in comparison

disconnect3d added a commit that referenced this issue Aug 20, 2022
This commit fixes our headaches with core files debugging.

The TL;DR is that we will now try to parse `info proc mappings` and
`maintenance info sections` to give users best possible UX/vmmaps
information.

Related:
* https://sourceware.org/bugzilla/show_bug.cgi?id=29508
* #985
* #954
disconnect3d added a commit that referenced this issue Aug 20, 2022
* Fix coredump debugging

This commit fixes our headaches with core files debugging.

The TL;DR is that we will now try to parse `info proc mappings` and
`maintenance info sections` to give users best possible UX/vmmaps
information.

Related:
* https://sourceware.org/bugzilla/show_bug.cgi?id=29508
* #985
* #954

* cleanup

* cleanup

* Fix core dbg when EHDR map is not mapped
@disconnect3d
Copy link
Member

Hey,

There are three separate issues here:

  1. Us not handling some cases gracefully, and so crashing on them
  2. Getting memory maps info when debugging core dumps
  3. Getting memory maps info when debugging a QEMU user emulated process

The first case has hopefully been resolved with #1079 and a recent commit.

The 2nd case has been mainly resolved in #1079. However, this is not perfect: it does not give 100% accurate vmmap info because the data we fetch vmmap information from, namely: info proc mappings and maintenance info sections commands, may not give us ALL information.

For what is worth, the GDB's generate-core-file command has also this problem where it does not provide all possible info into the generated corefile. I have filled a GDB bugzilla issue about it here: https://sourceware.org/bugzilla/show_bug.cgi?id=29508

For the 3rd case, the problem is related to the QEMU user emulation's gdbstub being underdeveloped. It lacks a few features related to getting files from the debugged target. I have been working some time ago on a patch to fix that in QEMU, which you can find here: https://lore.kernel.org/all/20220221030910.3203063-1-dominik.b.czarnota@gmail.com/ and while it works, it need a few improvements and tests. I hope to find some time in the soonish future to work on that and finish that.

In theory, for 3rd we could parse the QEMU's process memory maps and filter them by ourselves. However, this would only work if the QEMU process is run locally and would not work if it hosts its gdbstub from a remote server.

Anyway, I am closing this issue for now, as the main problem, which is recursion error - should now be fixed.

@Erebua
Copy link

Erebua commented Aug 30, 2022

have the same issue,but I use qemu-system

https://people.debian.org/~aurel32/qemu/mipsel/
debian_squeeze_mipsel_standard.qcow2
vmlinux-3.2.0-4-4kc-malta

bin: https://github.com/praetorian-inc/DVRF/blob/master/Pwnable%20Source/Intro/stack_bof_01.c

ubuntu 18.04

Gdb:      8.1.1
Python:   3.6.9 (default, Nov  7 2019, 10:44:02)  [GCC 8.3.0]
Pwndbg:   1.1.0 build: f2fcc95
Capstone: 4.0.1024
Unicorn:  2.0.7

@disconnect3d
Copy link
Member

@kevinpark1217 hey, can you try updating ur pwndbg version? The f2fcc95 version is from may and we have had some fixes to this problem recently. Please, let me know if the latest dev branch or current release (those are the same version fwiw) work for you.

@Erebua
Copy link

Erebua commented Aug 30, 2022

@kevinpark1217 hey, can you try updating ur pwndbg version? The f2fcc95 version is from may and we have had some fixes to this problem recently. Please, let me know if the latest dev branch or current release (those are the same version fwiw) work for you.

Gdb:      8.1.1
Python:   3.6.9 (default, Nov  7 2019, 10:44:02)  [GCC 8.3.0]
Pwndbg:   1.1.1 (https://github.com/pwndbg/pwndbg/releases/tag/2022.08.30)
Capstone: 4.0.1024
Unicorn:  2.0.7

still have this issue

Exception occurred: Error: No auxiliary vector found, or failed reading it. (<class 'gdb.error'>)
For more info invoke `set exception-verbose on` and rerun the command
or debug it by yourself with `set exception-debugger on`
Python Exception <class 'gdb.error'> No auxiliary vector found, or failed reading it.: 

Exception occurred: Error: No auxiliary vector found, or failed reading it. (<class 'gdb.error'>)
For more info invoke `set exception-verbose on` and rerun the command
or debug it by yourself with `set exception-debugger on`
Python Exception <class 'gdb.error'> No auxiliary vector found, or failed reading it.: 

Exception occurred: Error: No auxiliary vector found, or failed reading it. (<class 'gdb.error'>)
For more info invoke `set exception-verbose on` and rerun the command
or debug it by yourself with `set exception-debugger on`
Python Exception <class 'gdb.error'> No auxiliary vector found, or failed reading it.: 

Exception occurred: Error: No auxiliary vector found, or failed reading it. (<class 'gdb.error'>)
For more info invoke `set exception-verbose on` and rerun the command
or debug it by yourself with `set exception-debugger on`
Python Exception <class 'gdb.error'> No auxiliary vector found, or failed reading it.: 
0x772bea80 in _start () from target:/lib/ld-uClibc.so.0
Exception occurred: Error: No auxiliary vector found, or failed reading it. (<class 'gdb.error'>)
For more info invoke `set exception-verbose on` and rerun the command
or debug it by yourself with `set exception-debugger on`
Python Exception <class 'gdb.error'> No auxiliary vector found, or failed reading it.: 

@disconnect3d
Copy link
Member

disconnect3d commented Aug 30, 2022

That's interesting, thanks, we will have to fix this:

Exception occurred: Error: No auxiliary vector found, or failed reading it. (<class 'gdb.error'>)
For more info invoke `set exception-verbose on` and rerun the command
or debug it by yourself with `set exception-debugger on`
Python Exception <class 'gdb.error'> No auxiliary vector found, or failed reading it.: 

@disconnect3d disconnect3d reopened this Aug 30, 2022
@disconnect3d
Copy link
Member

disconnect3d commented Aug 30, 2022

@Erebua just to be sure, you installed pwndbg inside the qemu system image, right?

If you have direct steps how to reproduce ur case I'd appreciate that

disconnect3d added a commit that referenced this issue Aug 30, 2022
This may or may not fix the issue described in #954 (comment)
disconnect3d added a commit that referenced this issue Aug 30, 2022
This may or may not fix the issue described in #954 (comment)
@disconnect3d
Copy link
Member

@Erebua #1107 may have fixed your cause, but I still haven't been able to reproduce it so I can't really check

@Erebua
Copy link

Erebua commented Aug 31, 2022

@Erebua just to be sure, you installed pwndbg inside the qemu system image, right?

If you have direct steps how to reproduce ur case I'd appreciate that

I installed pwndbg in attifyos
I also installed qemu-system in this system.

qemu-system

chroot . ./gdbserver 192.168.134.143:6666 ./pwnable/Intro/stack_bof_01 "aaaa"

attifyos

gdb-multiarch
set arch mips
target remote 192.168.134.143:6666

@Erebua
Copy link

Erebua commented Aug 31, 2022

@Erebua #1107 may have fixed your cause, but I still haven't been able to reproduce it so I can't really check

It wokred! thanks u!

pwndbg> vmmap
LEGEND: STACK | HEAP | CODE | DATA | RWX | RODATA
       0x0       0x5a r--p       5a d38    .comment
      0x5a       0x5a r--p        0 d92    .mdebug.abi32
  0x4000f4   0x400108 rw-p       14 f4     .interp
  0x400108   0x400120 rw-p       18 108    .reginfo
  0x400120   0x400218 rw-p       f8 120    .dynamic
  0x400218   0x4002c4 rw-p       ac 218    .hash
  0x4002c4   0x400444 rw-p      180 2c4    .dynsym
  0x400444   0x40054a rw-p      106 444    .dynstr
  0x40054a   0x40057a rw-p       30 54a    .gnu.version
  0x40057c   0x40059c rw-p       20 57c    .gnu.version_r
  0x40059c   0x400624 r-xp       88 59c    .init
  0x400630   0x400a30 r-xp      400 630    .text
  0x400a30   0x400ab0 r-xp       80 a30    .MIPS.stubs
  0x400ab0   0x400b08 r-xp       58 ab0    .fini
  0x400b10   0x400c90 rw-p      180 b10    .rodata
  0x400c90   0x400c94 rw-p        4 c90    .eh_frame
  0x440c94   0x440c9c -w-p        8 c94    .ctors
  0x440c9c   0x440ca4 -w-p        8 c9c    .dtors
  0x440ca4   0x440ca8 -w-p        4 ca4    .jcr
  0x440cb0   0x440cd0 -w-p       20 cb0    .data
  0x440cd0   0x440cd4 -w-p        4 cd0    .rld_map
  0x440ce0   0x440d34 -w-p       54 ce0    .got
  0x440d34   0x440d38 -w-p        4 d34    .sdata
  0x440d40   0x440d60 ---p       20 d38    .bss
0x7743e000 0x77443000 rwxp     5000 0      <explored>
0x7f776000 0x7fb77000 rwxp   401000 0      <explored>

but what is the 'explored' mean?
Is there some way to get the libc path?

@disconnect3d
Copy link
Member

disconnect3d commented Aug 31, 2022

Wait, how exactly are u running all this? How do u run the qemu-system? Can u give commands for that?

The vmmap u showed is a bit weird: that's what you usually may get if we can't get memory maps information, e.g. when debugging a core dump.

but what is the 'explored' mean?

The <explored> part is memory map created by exploring the addresses your registers were pointing at and which were not mapped in any other existing memory map. To be honest that's still not ideal and I thought to remove this functionality at one point but it seems it is helpful here, heh.

Is there some way to get the libc path?

Usually, the GDB's info sharedlibrary should show you something like this:

pwndbg> info sharedlibrary
From                To                  Syms Read   Shared Object Library
0x00007ffff7dd3f10  0x00007ffff7df4550  Yes         /lib64/ld-linux-x86-64.so.2
0x00007ffff7bb1210  0x00007ffff7bc84cf  Yes (*)     /lib/x86_64-linux-gnu/libselinux.so.1
0x00007ffff77db360  0x00007ffff7953afc  Yes         /lib/x86_64-linux-gnu/libc.so.6
0x00007ffff754a570  0x00007ffff759b35d  Yes (*)     /lib/x86_64-linux-gnu/libpcre.so.3
0x00007ffff7345e50  0x00007ffff7346bee  Yes         /lib/x86_64-linux-gnu/libdl.so.2
0x00007ffff712bbb0  0x00007ffff713a1f1  Yes         /lib/x86_64-linux-gnu/libpthread.so.0
(*): Shared library is missing debugging information.

But given your vmmap output the info sharedlibrary command from GDB will likely not work? :(

@disconnect3d
Copy link
Member

@Erebua since this is not anymore about a recursion error, can you provide all necessary information to reproduce your issue in a new one and I will close this one?

@Erebua
Copy link

Erebua commented Aug 31, 2022

@Erebua since this is not anymore about a recursion error, can you provide all necessary information to reproduce your issue in a new one and I will close this one?

sure,just wait a minute

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Development

No branches or pull requests

7 participants