Skip to content

objdump becomes zombie when running make check on linux-arm64 #38

Closed

Description

@illwieckz

When working on the CI:

I tried linux-arm64 and macos-arm64 runners. The macos-arm64 finished properly, but the linux-arm64 went stuck.

I reproduced it on an Orange PI 5:

$ pstree
make─┬─test-driver───exploitability_───objdump
     ├─test-driver───minidump_proces───objdump
     └─test-driver───disassembler_ob───objdump

$ ps a
   6474 pts/0    S+     0:00 /bin/bash -c set +e; bases='src/common/safe_math_unittest.log src/common/test_assembler_unittest.log src/common/dwarf/dwarf2reader_lineinfo_unittest.log src/common/dwarf/dwarf2reader_splitfunctions_unittest.log src/processor/address_map_unittest.log src/processor/basic_source_line_resolver_unittest.log src/processor/cfi_frame_info_unittest.log src/processor/contained_range_map_unittest.log src/processor/disassembler_x86_unittest.log src/processor/exploitability_unittest.log src/processor/fast_source_line_resolver_unittest.log src/processor/map_serializers_unittest.log src/processor/microdump_processor_unittest.log src/processor/minidump_processor_unittest.log src/processor/minidump_unittest.log src/processor/static_address_map_unittest.log src/processor/static_contained_range_map_unittest.log src/processor/static_map_unittest.log src/processor/static_range_map_unittest.log src/processor/pathname_stripper_unittest.log src/processor/postfix_evaluator_unittest.log src/processor/proc_maps_linux_unittest.log src/processor/range_map_truncate_lower_unittest.log src/processor/range_map_truncate_upper_unittest.log src/processor/range_map_unittest.log src/processor/stackwalker_amd64_unittest.log src/processor/stackwalker_arm_unittest.log src/processor/stackwalker_arm64_unittest.log src/processor/stackwalker_address_list_unittest.log src/processor/stackwalker_mips_unittest.log src/processor/stackwalker_mips64_unittest.log src/processor/stackwalker_riscv_unittest.log src/processor/stackwalker_riscv64_unittest.log src/processor/stackwalker_x86_unittest.log src/processor/synth_minidump_unittest.log src/processor/disassembler_objdump_unittest.log src/common/linux/scoped_pipe_unittest.log src/common/linux/scoped_tmpfile_unittest.log src/client/linux/linux_client_unittest.log src/common/linux/google_crashdump_uploader_test.log src/common/dumper_unittest.log src/tools/linux/md2core/minidump_2_core_unittest.log src/tools/linux/dump_syms/dump_syms_test.log src/tools/windows/dump_syms_dwarf/dump_syms_dwarf_test.log'; bases=`for i in $bases; do echo $i; done | sed 's/\.log$//'`; bases=`echo $bases`; \ log_list=`for i in $bases; do echo $i.log; done`; \ trs_list=`for i in $bases; do echo $i.trs; done`; \ log_list=`echo $log_list`; trs_list=`echo $trs_list`; \ make  test-suite.log TEST_LOGS="$log_list"; \ exit $?;
   6483 pts/0    S+     0:00 make test-suite.log TEST_LOGS=src/common/safe_math_unittest.log src/common/test_assembler_unittest.log src/common/dwarf/dwarf2reader_lineinfo_unittest.log src/common/dwarf/dwarf2reader_splitfunctions_unittest.log src/processor/address_map_unittest.log src/processor/basic_source_line_resolver_unittest.log src/processor/cfi_frame_info_unittest.log src/processor/contained_range_map_unittest.log src/processor/disassembler_x86_unittest.log src/processor/exploitability_unittest.log src/processor/fast_source_line_resolver_unittest.log src/processor/map_serializers_unittest.log src/processor/microdump_processor_unittest.log src/processor/minidump_processor_unittest.log src/processor/minidump_unittest.log src/processor/static_address_map_unittest.log src/processor/static_contained_range_map_unittest.log src/processor/static_map_unittest.log src/processor/static_range_map_unittest.log src/processor/pathname_stripper_unittest.log src/processor/postfix_evaluator_unittest.log src/processor/proc_maps_linux_unittest.log src/processor/range_map_truncate_lower_unittest.log src/processor/range_map_truncate_upper_unittest.log src/processor/range_map_unittest.log src/processor/stackwalker_amd64_unittest.log src/processor/stackwalker_arm_unittest.log src/processor/stackwalker_arm64_unittest.log src/processor/stackwalker_address_list_unittest.log src/processor/stackwalker_mips_unittest.log src/processor/stackwalker_mips64_unittest.log src/processor/stackwalker_riscv_unittest.log src/processor/stackwalker_riscv64_unittest.log src/processor/stackwalker_x86_unittest.log src/processor/synth_minidump_unittest.log src/processor/disassembler_objdump_unittest.log src/common/linux/scoped_pipe_unittest.log src/common/linux/scoped_tmpfile_unittest.log src/client/linux/linux_client_unittest.log src/common/linux/google_crashdump_uploader_test.log src/common/dumper_unittest.log src/tools/linux/md2core/minidump_2_core_unittest.log src/tools/linux/dump_syms/dump_syms_test.log src/tools/windows/dump_syms_dwarf/dump_syms_dwarf_test.log
   6760 pts/0    Z+     0:00 [objdump] <defunct>
   6773 pts/0    S+     0:00 /bin/sh ./autotools/test-driver --test-name src/processor/disassembler_objdump_unittest --log-file src/processor/disassembler_objdump_unittest.log --trs-file src/processor/disassembler_objdump_unittest.trs --color-tests yes --enable-hard-errors yes --expect-failure no -- ./src/processor/disassembler_objdump_unittest
   6781 pts/0    S+     0:00 ./src/processor/disassembler_objdump_unittest
   6796 pts/0    Z+     0:00 [objdump] <defunct>
   6865 pts/0    Z+     0:00 [objdump] <defunct>

I have no idea about what's going on there, objdump should not go zombie like that.

Activity

  1. illwieckz commented on Oct 11, 2026

    @illwieckz
    MemberAuthor

    When interrupting, it confirms the unittests going zombie:

    PASS: src/common/safe_math_unittest
    PASS: src/common/dwarf/dwarf2reader_lineinfo_unittest
    PASS: src/processor/address_map_unittest
    PASS: src/common/dwarf/dwarf2reader_splitfunctions_unittest
    PASS: src/processor/contained_range_map_unittest
    PASS: src/common/test_assembler_unittest
    PASS: src/processor/cfi_frame_info_unittest
    PASS: src/processor/disassembler_x86_unittest
    PASS: src/processor/basic_source_line_resolver_unittest
    PASS: src/processor/map_serializers_unittest
    PASS: src/processor/static_contained_range_map_unittest
    PASS: src/processor/static_address_map_unittest
    PASS: src/processor/static_map_unittest
    PASS: src/processor/static_range_map_unittest
    PASS: src/processor/pathname_stripper_unittest
    PASS: src/processor/minidump_unittest
    PASS: src/processor/fast_source_line_resolver_unittest
    PASS: src/processor/postfix_evaluator_unittest
    PASS: src/processor/range_map_truncate_lower_unittest
    PASS: src/processor/range_map_truncate_upper_unittest
    PASS: src/processor/proc_maps_linux_unittest
    PASS: src/processor/range_map_unittest
    PASS: src/processor/stackwalker_amd64_unittest
    PASS: src/processor/stackwalker_arm_unittest
    PASS: src/processor/stackwalker_address_list_unittest
    PASS: src/processor/stackwalker_mips_unittest
    PASS: src/processor/stackwalker_arm64_unittest
    PASS: src/processor/stackwalker_mips64_unittest
    PASS: src/processor/stackwalker_riscv64_unittest
    PASS: src/processor/stackwalker_riscv_unittest
    PASS: src/processor/synth_minidump_unittest
    PASS: src/common/linux/scoped_tmpfile_unittest
    PASS: src/processor/stackwalker_x86_unittest
    PASS: src/common/linux/scoped_pipe_unittest
    PASS: src/processor/microdump_processor_unittest
    PASS: src/common/linux/google_crashdump_uploader_test
    PASS: src/tools/linux/md2core/minidump_2_core_unittest
    PASS: src/tools/linux/dump_syms/dump_syms_test
    PASS: src/tools/windows/dump_syms_dwarf/dump_syms_dwarf_test
    PASS: src/common/dumper_unittest
    PASS: src/client/linux/linux_client_unittest
    ^C
    make[2]: *** Deleting file 'src/processor/disassembler_objdump_unittest.log'
    make[2]: *** Deleting file 'src/processor/minidump_processor_unittest.log'
    make[2]: *** Deleting file 'src/processor/exploitability_unittest.log'
    make[2]: *** [Makefile:9179: src/processor/minidump_processor_unittest.log] Error 130
    make[2]: *** [Makefile:9333: src/processor/disassembler_objdump_unittest.log] Error 130
    make[2]: *** [Makefile:9151: src/processor/exploitability_unittest.log] Error 130
    make[1]: *** [Makefile:9070: check-TESTS] Interrupt
    make: *** [Makefile:9604: check-am] Interrupt
    
  2. illwieckz commented on Oct 11, 2026

    @illwieckz
    MemberAuthor

    Now fixed in my CI branch:

    There was two bugs:

    • When objdump exits with an error, it hangs while reading its output pipe. The parent process still holds the pipe's write end open, preventing EOF from being detected. Closing the pipe in the parent process properly fixes the hang, but the tests still fail.
    • Breakpad invokes objdump with x86 disassembly options, but the default objdump on the non-x86 Linux system does not support the requested x86 target architectures. Using x86_64-linux-gnu-objdump instead of objdump when not running on x86 fixes it, the tests now runs properly.
  3. illwieckz commented on Oct 11, 2026

    @illwieckz
    MemberAuthor
    PASS: src/common/safe_math_unittest
    PASS: src/common/dwarf/dwarf2reader_lineinfo_unittest
    PASS: src/processor/address_map_unittest
    PASS: src/common/dwarf/dwarf2reader_splitfunctions_unittest
    PASS: src/processor/contained_range_map_unittest
    PASS: src/common/test_assembler_unittest
    PASS: src/processor/cfi_frame_info_unittest
    PASS: src/processor/disassembler_x86_unittest
    PASS: src/processor/map_serializers_unittest
    PASS: src/processor/basic_source_line_resolver_unittest
    PASS: src/processor/static_contained_range_map_unittest
    PASS: src/processor/static_map_unittest
    PASS: src/processor/static_address_map_unittest
    PASS: src/processor/minidump_unittest
    PASS: src/processor/static_range_map_unittest
    PASS: src/processor/fast_source_line_resolver_unittest
    PASS: src/processor/pathname_stripper_unittest
    PASS: src/processor/postfix_evaluator_unittest
    PASS: src/processor/proc_maps_linux_unittest
    PASS: src/processor/range_map_truncate_lower_unittest
    PASS: src/processor/range_map_truncate_upper_unittest
    PASS: src/processor/range_map_unittest
    PASS: src/processor/stackwalker_amd64_unittest
    PASS: src/processor/stackwalker_arm_unittest
    PASS: src/processor/stackwalker_address_list_unittest
    PASS: src/processor/stackwalker_arm64_unittest
    PASS: src/processor/stackwalker_mips_unittest
    PASS: src/processor/minidump_processor_unittest
    PASS: src/processor/stackwalker_mips64_unittest
    PASS: src/processor/synth_minidump_unittest
    PASS: src/processor/stackwalker_riscv_unittest
    PASS: src/processor/stackwalker_riscv64_unittest
    PASS: src/common/linux/scoped_pipe_unittest
    PASS: src/common/linux/scoped_tmpfile_unittest
    PASS: src/processor/stackwalker_x86_unittest
    PASS: src/processor/microdump_processor_unittest
    PASS: src/common/linux/google_crashdump_uploader_test
    PASS: src/processor/disassembler_objdump_unittest
    PASS: src/tools/linux/md2core/minidump_2_core_unittest
    PASS: src/common/mac/macho_reader_unittest
    PASS: src/tools/windows/dump_syms_dwarf/dump_syms_dwarf_test
    PASS: src/tools/mac/dump_syms/dump_syms_mac_test
    PASS: src/tools/linux/dump_syms/dump_syms_test
    PASS: src/processor/exploitability_unittest
    PASS: src/common/dumper_unittest
    PASS: src/client/linux/linux_client_unittest
    ============================================================================
    Testsuite summary for breakpad 0.1
    ============================================================================
    # TOTAL: 46
    # PASS:  46
    # SKIP:  0
    # XFAIL: 0
    # FAIL:  0
    # XPASS: 0
    # ERROR: 0
    ============================================================================
    
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions