pwndbg/pwndbg
GitHub で見るEnable skipped tests on aarch64 by making them architecture-agnostic (x86-64 & aarch64)
Open
#3,495 opened on 2025年12月13日
good first issuehelp wanted
Repository metrics
- Stars
- (5,820 stars)
- PR merge metrics
- (平均マージ 9d 8h) (30d で 46 merged PRs)
説明
A large number of tests under tests/library/dbg/tests/ are currently marked as SKIPPED when running the test suite on aarch64. These tests pass on x86-64, but their current implementation relies on x86-specific assumptions (e.g. registers, ABI details, instruction layout, or heap internals), which prevents them from running on aarch64.
The goal of this task is to rewrite or refactor these tests so that they are architecture-agnostic and can be executed on both x86-64 and aarch64, without unconditional pytest.skip based on the architecture.
Scope of work
- The work does not need to be completed in a single pull request — individual tests or small groups of tests can be refactored independently and submitted as separate PRs, allowing multiple contributors to work in parallel.
- Identify and remove x86-64–specific assumptions in the affected tests (e.g. register names, instruction encodings, ABI- or heap-layout details).
- Refactor tests to rely on pwndbg architecture abstractions where available.
- Use test parameterization or architecture-aware helpers instead of unconditional
pytest.skip. - Replace architecture-dependent assertions with conditional assertions when behavior is expected to differ.
- Keep
pytest.skiponly for cases where a feature is genuinely unavailable on a given architecture.
Acceptance criteria
- At least one previously skipped test is made to run successfully on aarch64 without breaking x86-64 support.
- Refactored tests are no longer marked as SKIPPED on aarch64.
- The test suite continues to pass on:
- x86-64
- aarch64
- No regressions are introduced for existing x86-64 test coverage.
- Tests remain readable, maintainable, and consistent with existing pwndbg test patterns.
Affected tests (currently skipped on aarch64)
tests/library/dbg/tests/heap/test_find_fake_fast.py::test_find_fake_fast_command
tests/library/dbg/tests/heap/test_heap.py::test_global_max_fast_heuristic
tests/library/dbg/tests/heap/test_heap.py::test_jemalloc_extent_info
tests/library/dbg/tests/heap/test_heap.py::test_jemalloc_find_extent
tests/library/dbg/tests/heap/test_heap.py::test_jemalloc_heap
tests/library/dbg/tests/heap/test_heap.py::test_malloc_chunk_command
tests/library/dbg/tests/heap/test_heap.py::test_malloc_chunk_command_heuristic
tests/library/dbg/tests/heap/test_heap.py::test_malloc_chunk_dump_command
tests/library/dbg/tests/heap/test_heap.py::test_thread_arena_heuristic
tests/library/dbg/tests/heap/test_heap.py::test_thread_cache_heuristic
tests/library/dbg/tests/heap/test_heap_bins.py::test_largebins_size_range_32bit_big
tests/library/dbg/tests/heap/test_heap_bins.py::test_largebins_size_range_64bit
tests/library/dbg/tests/heap/test_heap_bins.py::test_smallbins_sizes_32bit_big
tests/library/dbg/tests/heap/test_heap_bins.py::test_smallbins_sizes_64bit
tests/library/dbg/tests/heap/test_try_free.py::test_try_free_corrupted_consolidate_backward
tests/library/dbg/tests/heap/test_try_free.py::test_try_free_corrupted_unsorted_chunks
tests/library/dbg/tests/heap/test_try_free.py::test_try_free_double_free
tests/library/dbg/tests/heap/test_try_free.py::test_try_free_double_free_or_corruption_out
tests/library/dbg/tests/heap/test_try_free.py::test_try_free_double_free_or_corruption_prev
tests/library/dbg/tests/heap/test_try_free.py::test_try_free_double_free_or_corruption_top
tests/library/dbg/tests/heap/test_try_free.py::test_try_free_double_free_tcache
tests/library/dbg/tests/heap/test_try_free.py::test_try_free_invalid_fastbin_entry
tests/library/dbg/tests/heap/test_try_free.py::test_try_free_invalid_misaligned
tests/library/dbg/tests/heap/test_try_free.py::test_try_free_invalid_next_size_fast
tests/library/dbg/tests/heap/test_try_free.py::test_try_free_invalid_next_size_normal
tests/library/dbg/tests/heap/test_try_free.py::test_try_free_invalid_overflow
tests/library/dbg/tests/heap/test_try_free.py::test_try_free_invalid_size_minsize
tests/library/dbg/tests/heap/test_try_free.py::test_try_free_invalid_size_misaligned
tests/library/dbg/tests/heap/test_vis_heap_chunks.py::test_vis_heap_chunk_command
tests/library/dbg/tests/test_command_branch.py::test_command_break_if_x64
tests/library/dbg/tests/test_command_canary.py::test_command_canary
tests/library/dbg/tests/test_command_dt.py::test_command_dt_works_with_address
tests/library/dbg/tests/test_command_dt.py::test_command_dt_works_with_no_address
tests/library/dbg/tests/test_command_errno.py::test_command_errno
tests/library/dbg/tests/test_command_flags.py::test_flags_command
tests/library/dbg/tests/test_command_search.py::test_command_search_literal
tests/library/dbg/tests/test_command_stepsyscall.py::test_command_nextsyscall
tests/library/dbg/tests/test_command_stepsyscall.py::test_command_stepsyscall
tests/library/dbg/tests/test_command_stepuntilasm.py::test_command_untilasm_x64
tests/library/dbg/tests/test_command_tls.py::test_tls_address_and_command
tests/library/dbg/tests/test_commands_elf.py::test_command_elf
tests/library/dbg/tests/test_commands_elf.py::test_commands_plt_gotplt_got_when_no_sections
tests/library/dbg/tests/test_context_commands.py::test_context_disasm_call_instruction_split
tests/library/dbg/tests/test_context_commands.py::test_context_disasm_fsbase_annotations
tests/library/dbg/tests/test_context_commands.py::test_context_disasm_proper_render_on_mem_change_issue_1818
tests/library/dbg/tests/test_context_commands.py::test_context_disasm_syscalls_args_display
tests/library/dbg/tests/test_context_commands.py::test_context_disasm_syscalls_args_display_no_emulate
tests/library/dbg/tests/test_context_commands.py::test_context_disasm_works_properly_with_disasm_flavor_switch
tests/library/dbg/tests/test_context_commands.py::test_context_hide_sections
tests/library/dbg/tests/test_context_commands.py::test_context_history_prev_next
tests/library/dbg/tests/test_context_commands.py::test_context_history_search
tests/library/dbg/tests/test_emulate.py::test_emulate_disasm
tests/library/dbg/tests/test_emulate.py::test_emulate_disasm_loop
tests/library/dbg/tests/test_go.py::test_go_dumping
tests/library/dbg/tests/test_nearpc.py::test_nearpc_highlight_breakpoint
tests/library/dbg/tests/test_nearpc.py::test_nearpc_opcode_bytes
tests/library/dbg/tests/test_nearpc.py::test_nearpc_opcode_seperator
tests/library/dbg/tests/test_test.py::test_launch
tests/library/dbg/tests/test_windbg.py::test_windbg_commands_x86
tests/library/dbg/tests/test_windbg.py::test_windbg_dX_commands
tests/library/dbg/tests/test_windbg.py::test_windbg_eX_commands