Hi Ivan,

On Mon, Sep 05, 2022 at 12:17:10AM +0300, Ivan Maidanski wrote:
> Let me go thru all items you warry about. Please be sure both Ian and I pay 
> attention to the quality of the prepared releases. Sometimes mistakes happen 
> — it is essential to promptly react and think of the proper fix or workaround 
> in such situations.

Thank you. I concur. Please upload a fixed version quickly. This
currently breaks half of the bootstrap ci jobs, which makes me blind to
breakage in other packages. Urgency is needed here.

> The builds fail because of a change in some mangled names — probably the 
> reason is changing of noexcept/throw() specification in operator delete 
> (libgc tries to follow C++ standard but if this breaks some ABI, it could be 
> configured at build time thru macros). I need more time to check the 
> situation deeper.

That would sound reasonable if the upload had been done to experimental.
The combination of urgency and "need more time" is unfortunate. I fear
that doing it improperly would be making it worse as symbol issues can
have a rippling effect. Admittedly all missing symbols on the most
recent upload seem to be C++ symbols. That much is plausible at least.

To make your (and my) life easier, I suggest that you use modern symbol
features (man deb-src-symbols). In particular, you can restrict symbols
to 32bit or 64bit using "(arch-bits=32)symbol..." and you can use C++
symbol mangling using "(c++)unmangled...".

> > its symbol handling is essentially stripped of all the 
> >architecture-specific patterns that we have accumulated over the years
>  
> These stripped symbols are actually «leaked» internal symbols of libgc, 
> additionally I am not aware of any libgc client S/W which relies on these 
> internal symbols. Let me know please if someone is using any of the stripped 
> symbols. There is no practical reason of keeping these symbols in libgc 
> except for a formal one. Please correct me if I am wrong.

I happen to not understand which symbols are internal and which are not.
I really cannot tell. I'm more than happy if those really are unused.

> >  * Lots of symbols were dropped from the symbols file without bumping 
> >soname. Possibly, this may lead to incorrect dependencies on libgc in 
> >downstream builds.
>  
> Bumping soname indicates no backward compatibility. This has some negative 
> drawback (e.g. system should have 2 versions of libraries, client S/W does 
> not benefit from the new library version until client binary is rebuilt). I 
> avoid deletion or incompatible changes of API symbols between libgc releases. 
> (Unfortunately there’s an issues with a mangled name I wrote above.) I’ve 
> explained the situation about dropping of lots of symbols above. My opinion 
> this should not lead to incorrect dependencies on libgc but how could we 
> figure it out practically. If it would turn out later that some of dropped 
> symbols are nonetheless in use, then I think it would not be complicated to 
> fix it on the libgc side.  

If you look into the differences, it's not just C++ symbols that have
been dropped. Here is a list of dropped symbols:

<  GC_FirstDLOpenedLinkMap@Base 1:7.2d
<  (arch=kfreebsd-amd64 kfreebsd-i386)GC_FreeBSDGetDataStart@Base 1:7.2d
<  (arch=sparc sparc64)GC_SysVGetDataStart@Base 1:7.2d
<  (arch=!nios2 !sh4)GC_acquire_mark_lock@Base 1:8.0
<  (arch=!nios2 !sh4)GC_active_count@Base 1:8.0
<  GC_add_ext_descriptor@Base 1:7.2d
<  GC_add_map_entry@Base 1:7.2d
<  GC_add_roots_inner@Base 1:7.2d
<  GC_add_smashed@Base 1:7.2d
<  GC_add_to_black_list_normal@Base 1:7.2d
<  GC_add_to_black_list_stack@Base 1:7.2d
<  GC_add_to_fl@Base 1:7.2d
<  GC_add_to_heap@Base 1:7.2d
<  GC_adj_bytes_allocd@Base 1:7.2d
<  GC_all_bottom_indices@Base 1:7.2d
<  GC_all_bottom_indices_end@Base 1:7.2d
<  GC_alloc_large@Base 1:7.2d
<  GC_alloc_large_and_clear@Base 1:7.2d
<  GC_alloc_reclaim_list@Base 1:7.2d
<  GC_allocate_ml@Base 1:8.0
<  GC_allochblk@Base 1:7.2d
<  GC_allochblk_nth@Base 1:7.2d
<  GC_allocobj@Base 1:7.2d
<  GC_apply_to_all_blocks@Base 1:7.2d
<  GC_approx_sp@Base 1:7.2d
<  GC_array_kind@Base 1:7.2d
<  GC_array_mark_proc@Base 1:7.2d
<  GC_array_mark_proc_index@Base 1:7.2d
<  GC_avail_descr@Base 1:7.2d
<  GC_bl_init@Base 1:7.2d
<  GC_bl_init_no_interiors@Base 1:7.2d
<  GC_black_list_spacing@Base 1:7.2d
<  GC_block_empty@Base 1:7.2d
<  GC_block_nearly_full@Base 1:7.2d
<  GC_block_was_dirty@Base 1:7.2d
<  GC_bm_table@Base 1:7.2d
<  (arch=!kfreebsd-amd64 !kfreebsd-i386)GC_brief_async_signal_safe_sleep@Base 
1:7.6.4
<  GC_build_fl2@Base 1:7.2d
<  GC_build_fl4@Base 1:7.2d
<  GC_build_fl@Base 1:7.2d
<  GC_build_fl_clear2@Base 1:7.2d
<  GC_build_fl_clear4@Base 1:7.2d
<  (arch=!nios2 !sh4)GC_bytes_allocd_tmp@Base 1:8.0
<  GC_bytes_found@Base 1:7.2d
<  GC_check_annotated_obj@Base 1:7.2d
<  GC_check_finalizer_nested@Base 1:7.2d
<  GC_check_heap@Base 1:7.2d
<  GC_check_heap_block@Base 1:7.2d
<  GC_check_heap_proc@Base 1:7.2d
<  GC_check_leaked@Base 1:7.2d
<  GC_clear_a_few_frames@Base 1:7.2d
<  GC_clear_bl@Base 1:7.2d
<  GC_clear_fl_links@Base 1:7.2d
<  GC_clear_fl_marks@Base 1:7.2d
<  GC_clear_hdr_marks@Base 1:7.2d
<  GC_clear_marks@Base 1:7.2d
<  GC_clear_stack_inner@Base 1:7.2d
<  GC_clear_togglerefs@Base 1:7.6.4
<  GC_collect_a_little_inner@Base 1:7.2d
<  GC_collect_at_heapsize@Base 1:7.2d
<  GC_collect_or_expand@Base 1:7.2d
<  GC_collecting@Base 1:7.2d
<  GC_collection_in_progress@Base 1:7.2d
<  GC_compute_large_free_bytes@Base 1:7.4.2
<  GC_compute_root_size@Base 1:7.4.2
<  GC_cond_register_dynamic_libraries@Base 1:7.2d
<  GC_continue_reclaim@Base 1:7.2d
<  GC_copy_bl@Base 1:7.2d
<  GC_copyright@Base 1:7.2d
<  GC_core_gcj_malloc@Base 1:8.0
<  GC_current_warn_proc@Base 1:7.2d
<  (arch=!arm64 !nios2 !kfreebsd-amd64 !kfreebsd-i386 !mips !mips64el !mipsel 
!riscv64 !s390 !s390x !sparc !sparc64)GC_data_start@Base 1:7.2d
<  GC_debug_generic_malloc@Base 1:7.6.4
<  GC_debug_invoke_finalizer@Base 1:7.2d
<  GC_debug_print_heap_obj_proc@Base 1:7.2d
<  GC_debugging_started@Base 1:7.2d
<  GC_default_is_valid_displacement_print_proc@Base 1:7.2d
<  GC_default_is_visible_print_proc@Base 1:7.2d
<  GC_default_on_abort@Base 1:7.4.2
<  GC_default_oom_fn@Base 1:7.2d
<  GC_default_print_heap_obj_proc@Base 1:7.2d
<  GC_default_push_other_roots@Base 1:7.2d
<  GC_default_same_obj_print_proc@Base 1:7.2d
<  GC_default_stop_func@Base 1:7.2d
<  GC_default_warn_proc@Base 1:7.2d
<  GC_deficit@Base 1:7.2d
<  GC_delete_gc_thread@Base 1:7.2d
<  GC_delete_thread@Base 1:7.2d
<  GC_descr_obj_size@Base 1:7.2d
<  GC_describe_type_fns@Base 1:7.2d
<  GC_destroy_thread_local@Base 1:8.0
<  GC_dirty_init@Base 1:7.2d
<  GC_dirty_inner@Base 1:8.0
<  GC_disclaim_and_reclaim@Base 1:7.4.2
<  GC_disclaim_and_reclaim_or_free_small_block@Base 1:7.4.2
<  GC_dl_hashtbl@Base 1:7.4.2
<  GC_do_blocking_inner@Base 1:7.2d
<  GC_do_enumerate_reachable_objects@Base 1:7.6.4
<  (arch=!nios2 !sh4)GC_do_local_mark@Base 1:8.0
<  (arch=!nios2 !sh4)GC_do_parallel_mark@Base 1:8.0
<  GC_double_descr@Base 1:7.2d
<  GC_dump_finalization_links@Base 1:7.4.2
<  GC_dump_regularly@Base 1:7.2d
<  GC_ed_size@Base 1:7.2d
<  (arch=ia64)GC_enclosing_mapping@Base 1:7.2d
<  GC_enqueue_all_finalizers@Base 1:7.2d
<  GC_eobjfreelist@Base 1:7.2d
<  GC_err_puts@Base 1:7.2d
<  GC_excl_table_entries@Base 1:7.2d
<  GC_exclude_static_roots_inner@Base 1:7.2d
<  GC_exit_check@Base 1:7.2d
<  GC_expand_hp_inner@Base 1:7.2d
<  GC_explicit_kind@Base 1:7.2d
<  GC_explicit_typing_initialized@Base 1:7.2d
<  GC_ext_descriptors@Base 1:7.2d
<  GC_extend_size_map@Base 1:7.2d
<  GC_fail_count@Base 1:7.2d
<  (arch=!arm64 !nios2 !mips !mips64el !mipsel !riscv64 !s390 
!s390x)GC_fault_handler@Base 1:7.2d
<  (arch=sh4)GC_fault_handler_lock@Base 1:8.0
<  GC_finalize@Base 1:7.2d
<  GC_finalized_disclaim@Base 1:7.4.2
<  GC_finalized_kind@Base 1:7.4.2
<  GC_find_header@Base 1:7.2d
<  (arch=!arm64 !nios2 !mips !mips64el !mipsel !riscv64 !s390 
!s390x)GC_find_limit@Base 1:7.2d
<  (arch=!arm64 !nios2 !mips !mips64el !mipsel !riscv64 !s390 
!s390x)GC_find_limit_with_bound@Base 1:7.2d
<  GC_findleak_delay_free@Base 1:7.2d
<  GC_finish_collection@Base 1:7.2d
<  (arch=!nios2 !sh4)GC_first_nonempty@Base 1:8.0
<  (arch=!nios2 !sh4)GC_fl_builder_count@Base 1:8.0
<  GC_fnlz_roots@Base 1:7.6.4
<  GC_fo_entries@Base 1:7.2d
<  GC_force_unmap_on_gcollect@Base 1:7.2d
<  GC_free_block_ending_at@Base 1:7.2d
<  GC_free_bytes@Base 1:7.2d
<  GC_free_inner@Base 1:7.2d
<  (arch=kfreebsd-amd64 kfreebsd-i386)GC_freebsd_main_stack_base@Base 1:7.2d
<  GC_freehblk@Base 1:7.2d
<  GC_gcj_fake_mark_proc@Base 1:7.2d
<  GC_gcj_malloc_initialized@Base 1:7.2d
<  GC_gcjobjfreelist@Base 1:7.2d
<  GC_generic_lock@Base 1:8.0
<  GC_generic_malloc_inner@Base 1:7.2d
<  GC_generic_malloc_inner_ignore_off_page@Base 1:7.2d
<  (arch=!hurd-i386 !kfreebsd-amd64 !kfreebsd-i386)GC_get_file_len@Base 1:7.2d
<  GC_get_first_part@Base 1:7.2d
<  GC_get_main_stack_base@Base 1:7.2d
<  (arch=!hurd-i386 !kfreebsd-amd64 !kfreebsd-i386)GC_get_maps@Base 1:7.2d
<  (arch=!hurd-i386 !kfreebsd-amd64 !kfreebsd-i386)GC_get_maps_len@Base 1:7.2d
<  (arch=!hurd-i386)GC_get_nprocs@Base 1:7.4.2
<  (arch=armel armhf)GC_get_nprocs_present@Base 1:7.2d
<  (arch=ia64)GC_get_register_stack_base@Base 1:7.2d
<  (arch=ia64)GC_greatest_stack_base_below@Base 1:7.2d
<  GC_grow_table@Base 1:7.2d
<  GC_handle_fork@Base 1:7.4.2
<  GC_has_other_debug_info@Base 1:7.2d
<  GC_has_static_roots@Base 1:7.2d
<  (arch=alpha amd64 i386 ia64 m68k x32)GC_has_unmapped_memory@Base 1:8.0
<  GC_have_errors@Base 1:7.2d
<  GC_hblk_fl_from_blocks@Base 1:7.2d
<  GC_hblkfreelist@Base 1:7.2d
<  GC_header_cache_miss@Base 1:7.2d
<  GC_heapsize_at_forced_unmap@Base 1:7.6.4
<  (arch=!nios2 !sh4)GC_help_marker@Base 1:8.0
<  (arch=!nios2 !sh4)GC_help_wanted@Base 1:8.0
<  (arch=!nios2 !sh4)GC_helper_count@Base 1:8.0
<  GC_ignore_self_finalize_mark_proc@Base 1:7.2d
<  GC_in_thread_creation@Base 1:7.2d
<  GC_incomplete_normal_bl@Base 1:7.2d
<  GC_incomplete_stack_bl@Base 1:7.2d
<  GC_incremental@Base 1:7.2d
<  GC_init_explicit_typing@Base 1:7.2d
<  GC_init_headers@Base 1:7.2d
<  (arch=!arm64 !nios2 !kfreebsd-amd64 !kfreebsd-i386 !mips !mips64el !mipsel 
!riscv64 !s390 !s390x !sparc !sparc64)GC_init_linux_data_start@Base 1:7.2d
<  GC_init_parallel@Base 1:7.2d
<  GC_init_size_map@Base 1:7.2d
<  GC_init_thread_local@Base 1:8.0
<  GC_init_time@Base 1:8.0
<  GC_initialize_offsets@Base 1:7.2d
<  GC_initiate_gc@Base 1:7.2d
<  GC_inner_start_routine@Base 1:7.2d
<  GC_install_counts@Base 1:7.2d
<  GC_install_header@Base 1:7.2d
<  GC_invalidate_mark_state@Base 1:7.2d
<  GC_is_black_listed@Base 1:7.2d
<  GC_is_full_gc@Base 1:7.2d
<  GC_is_initialized@Base 1:7.2d
<  (arch=!kfreebsd-amd64 !kfreebsd-i386)GC_is_thread_suspended@Base 1:7.6.4
<  (arch=!arm64 !nios2 !mips !mips64el !mipsel !riscv64 !s390 
!s390x)GC_jmp_buf@Base 1:7.2d
<  (arch=hurd-i386)GC_key_create_inner@Base 1:7.4.2
<  GC_large_alloc_warn_interval@Base 1:7.2d
<  GC_large_alloc_warn_suppressed@Base 1:7.2d
<  GC_leaked@Base 1:7.2d
<  (arch=!hurd-i386 !kfreebsd-amd64 
!kfreebsd-i386)GC_linux_main_stack_base@Base 1:7.2d
<  GC_ll_hashtbl@Base 1:7.4.2
<  GC_lock@Base 1:7.2d
<  GC_log@Base 1:7.2d
<  GC_lookup_thread@Base 1:7.2d
<  GC_make_array_descriptor@Base 1:7.2d
<  GC_make_closure@Base 1:7.2d
<  GC_make_sequence_descriptor@Base 1:7.2d
<  GC_manual_vdb@Base 1:8.0
<  GC_mark_and_push_stack@Base 1:7.2d
<  GC_mark_from@Base 1:7.2d
<  GC_mark_init@Base 1:7.2d
<  (arch=!nios2 !sh4)GC_mark_local@Base 1:8.0
<  (arch=!nios2 !sh4)GC_mark_no@Base 1:8.0
<  GC_mark_some@Base 1:7.2d
<  GC_mark_stack_size@Base 1:7.2d
<  GC_mark_stack_too_small@Base 1:7.2d
<  GC_mark_state@Base 1:7.2d
<  (arch=!nios2 !sh4)GC_mark_thread@Base 1:8.0
<  GC_mark_thread_local_fls_for@Base 1:8.0
<  GC_mark_thread_local_free_lists@Base 1:8.0
<  (arch=!nios2 !sh4)GC_mark_threads@Base 1:8.0
<  GC_mark_togglerefs@Base 1:7.6.4
<  GC_max_heapsize@Base 1:7.4.2
<  GC_maybe_gc@Base 1:7.2d
<  GC_merge_unmapped@Base 1:8.0
<  GC_move_disappearing_link_inner@Base 1:7.4.2
<  (arch=alpha amd64 i386 ia64 m68k x32)GC_mprotect_dirty_init@Base 1:8.0
<  GC_n_attempts@Base 1:7.2d
<  GC_n_heap_sects@Base 1:7.2d
<  GC_n_kinds@Base 1:7.2d
<  GC_n_leaked@Base 1:7.2d
<  GC_n_mark_procs@Base 1:7.2d
<  GC_n_rescuing_pages@Base 1:7.2d
<  GC_n_set_marks@Base 1:7.2d
<  GC_n_smashed@Base 1:7.2d
<  GC_need_full_gc@Base 1:7.2d
<  GC_need_to_lock@Base 1:7.2d
<  GC_never_stop_func@Base 1:7.2d
<  GC_new_hblk@Base 1:7.2d
<  GC_new_thread@Base 1:7.2d
<  GC_next_block@Base 1:8.0.6
<  GC_next_exclusion@Base 1:7.2d
<  GC_non_gc_bytes_at_gc@Base 1:7.4.2
<  GC_noop6@Base 1:7.4.2
<  GC_noop_sink@Base 1:7.2d
<  GC_normal_finalize_mark_proc@Base 1:7.2d
<  (arch=!nios2 !sh4)GC_notify_all_builder@Base 1:8.0
<  (arch=!nios2 !sh4)GC_notify_all_marker@Base 1:8.0
<  GC_notify_or_invoke_finalizers@Base 1:7.2d
<  GC_nprocs@Base 1:7.2d
<  GC_null_finalize_mark_proc@Base 1:7.2d
<  GC_number_stack_black_listed@Base 1:7.2d
<  GC_obj_kinds@Base 1:7.2d
<  GC_object_finalized_proc@Base 1:7.6.4
<  GC_objects_are_marked@Base 1:7.2d
<  (arch=alpha amd64 i386 ia64 m68k x32)GC_old_bus_handler@Base 1:7.2d
<  GC_old_dl_entries@Base 1:7.2d
<  GC_old_ll_entries@Base 1:7.4.2
<  GC_old_normal_bl@Base 1:7.2d
<  (arch=alpha amd64 i386 ia64 m68k x32)GC_old_segv_handler@Base 1:7.2d
<  (arch=alpha amd64 i386 ia64 m68k x32)GC_old_segv_handler_used_si@Base 1:7.2d
<  GC_old_stack_bl@Base 1:7.2d
<  GC_on_collection_event@Base 1:7.6.4
<  GC_on_thread_event@Base 1:7.6.4
<  GC_page_size@Base 1:7.2d
<  GC_page_was_dirty@Base 1:7.2d
<  GC_pages_executable@Base 1:7.2d
<  (arch=ia64)GC_parse_map_entry@Base 1:7.6.4
<  GC_parse_mem_size_arg@Base 1:7.2d
<  GC_pause@Base 1:7.2d
<  GC_prev_block@Base 1:7.2d
<  (arch=!hurd-i386 !kfreebsd-amd64 !kfreebsd-i386)GC_print_address_map@Base 
1:7.2d
<  GC_print_all_errors@Base 1:7.2d
<  GC_print_all_smashed@Base 1:7.2d
<  GC_print_all_smashed_proc@Base 1:7.2d
<  GC_print_back_height@Base 1:7.2d
<  GC_print_block_descr@Base 1:7.2d
<  GC_print_block_list@Base 1:7.2d
<  (arch=ia64)GC_print_callers@Base 1:7.2d
<  GC_print_finalization_stats@Base 1:7.2d
<  GC_print_hblkfreelist@Base 1:7.2d
<  GC_print_heap_obj@Base 1:7.2d
<  GC_print_heap_sects@Base 1:7.2d
<  GC_print_obj@Base 1:7.2d
<  GC_print_smashed_obj@Base 1:7.2d
<  GC_print_static_roots@Base 1:7.2d
<  GC_print_stats@Base 1:7.2d
<  GC_process_togglerefs@Base 1:7.6.4
<  GC_promote_black_lists@Base 1:7.2d
<  (arch=alpha amd64 i386 ia64 m68k x32)GC_protect_heap@Base 1:7.2d
<  (arch=!hurd-i386 !kfreebsd-amd64 !kfreebsd-i386)GC_pthread_cancel@Base 1:7.2d
<  (arch=!hurd-i386 !kfreebsd-amd64 !kfreebsd-i386)GC_pthread_exit@Base 1:7.2d
<  (arch=ia64)GC_push_all_register_sections@Base 1:7.2d
<  GC_push_all_stack@Base 1:7.2d
<  GC_push_all_stack_sections@Base 1:7.2d
<  GC_push_all_stacks@Base 1:7.2d
<  GC_push_complex_descriptor@Base 1:7.2d
<  GC_push_conditional_with_exclusions@Base 1:7.2d
<  GC_push_current_stack@Base 1:7.2d
<  GC_push_gc_structures@Base 1:7.2d
<  (arch=nios2 sh4)GC_push_marked1@Base 1:7.4.2
<  (arch=!alpha !amd64 !arm64 !armel !armhf !hppa !hurd-i386 !i386 !ia64 
!kfreebsd-amd64 !kfreebsd-i386 !m68k !mips !mips64el !mipsel !powerpc 
!powerpcspe !ppc64 !ppc64el !riscv64 !s390x !sparc !sparc64 
!x32)GC_push_marked2@Base 1:7.4.2
<  (arch=!alpha !amd64 !arm64 !armel !armhf !hppa !hurd-i386 !i386 !ia64 
!kfreebsd-amd64 !kfreebsd-i386 !m68k !mips !mips64el !mipsel !powerpc 
!powerpcspe !ppc64 !ppc64el !riscv64 !s390x !sparc !sparc64 
!x32)GC_push_marked4@Base 1:7.4.2
<  GC_push_marked@Base 1:7.2d
<  GC_push_next_marked@Base 1:7.2d
<  GC_push_next_marked_dirty@Base 1:7.2d
<  GC_push_next_marked_uncollectable@Base 1:7.2d
<  GC_push_one@Base 1:7.2d
<  GC_push_regs_and_stack@Base 1:7.2d
<  GC_push_roots@Base 1:7.2d
<  GC_push_selected@Base 1:7.2d
<  GC_push_thread_structures@Base 1:7.2d
<  GC_push_typed_structures@Base 1:7.2d
<  GC_push_typed_structures_proc@Base 1:7.2d
<  GC_push_unconditionally@Base 1:7.4.2
<  GC_quiet@Base 1:7.2d
<  GC_rate@Base 1:8.0
<  GC_read_dirty@Base 1:7.2d
<  GC_rebuild_root_index@Base 1:7.2d
<  GC_reclaim_all@Base 1:7.2d
<  GC_reclaim_block@Base 1:7.2d
<  GC_reclaim_check@Base 1:7.2d
<  GC_reclaim_clear@Base 1:7.2d
<  GC_reclaim_generic@Base 1:7.2d
<  GC_reclaim_small_nonempty_block@Base 1:7.2d
<  GC_reclaim_unconditionally_marked@Base 1:7.4.2
<  GC_reclaim_uninit@Base 1:7.2d
<  GC_reclaimed_bytes_before_gc@Base 1:7.4.2
<  GC_register_data_segments@Base 1:7.2d
<  GC_register_disappearing_link_inner@Base 1:7.4.2
<  GC_register_displacement_inner@Base 1:7.2d
<  GC_register_dynamic_libraries@Base 1:7.2d
<  GC_register_dynamic_libraries_dl_iterate_phdr@Base 1:7.2d
<  GC_register_dynlib_callback@Base 1:7.2d
<  GC_register_finalizer_inner@Base 1:7.2d
<  GC_register_main_static_data@Base 1:7.2d
<  GC_register_my_thread_inner@Base 1:7.2d
<  (arch=ia64)GC_register_stackbottom@Base 1:7.2d
<  (arch=!nios2 !sh4)GC_release_mark_lock@Base 1:8.0
<  GC_remap@Base 1:8.0
<  GC_remove_all_threads_but_me@Base 1:7.4.2
<  GC_remove_allowed_signals@Base 1:7.2d
<  GC_remove_counts@Base 1:7.2d
<  GC_remove_from_fl_at@Base 1:7.4.2
<  GC_remove_header@Base 1:7.2d
<  GC_remove_protection@Base 1:7.2d
<  GC_remove_root_at_pos@Base 1:7.2d
<  GC_remove_roots_inner@Base 1:7.2d
<  (arch=hurd-i386)GC_remove_specific_after_fork@Base 1:7.6.4
<  GC_remove_tmp_roots@Base 1:7.2d
<  (arch=!hurd-i386 !kfreebsd-amd64 !kfreebsd-i386)GC_repeat_read@Base 1:7.2d
<  (arch=!arm64 !nios2 !mips !mips64el !mipsel !riscv64 !s390 
!s390x)GC_reset_fault_handler@Base 1:7.2d
<  GC_reset_finalizer_nested@Base 1:7.2d
<  GC_restart_all@Base 1:8.0
<  GC_restart_handler@Base 1:7.2d
<  (arch=!kfreebsd-amd64 !kfreebsd-i386)GC_resume_thread@Base 1:7.6.4
<  GC_retry_signals@Base 1:7.2d
<  (arch=!nios2 !sh4)GC_return_mark_stack@Base 1:8.0
<  GC_root_size@Base 1:7.2d
<  GC_roots_present@Base 1:7.2d
<  (arch=ia64 sparc sparc64)GC_save_regs_in_stack@Base 1:7.2d
<  (arch=ia64 sparc sparc64)GC_save_regs_ret_val@Base 1:7.2d
<  GC_scratch_alloc@Base 1:7.2d
<  GC_scratch_recycle_inner@Base 1:7.6.4
<  GC_set_and_save_fault_handler@Base 1:7.2d
<  GC_set_fl_marks@Base 1:7.2d
<  GC_set_hdr_marks@Base 1:7.2d
<  GC_setpagesize@Base 1:7.2d
<  (arch=hurd-i386)GC_setspecific@Base 1:7.4.2
<  (arch=!arm64 !nios2 !mips !mips64el !mipsel !riscv64 !s390 
!s390x)GC_setup_temporary_fault_handler@Base 1:7.2d
<  GC_should_collect@Base 1:7.2d
<  GC_sig_suspend@Base 1:7.4.2
<  GC_sig_thr_restart@Base 1:7.4.2
<  GC_signal_mark_stack_overflow@Base 1:7.2d
<  (arch=hurd-i386)GC_slow_getspecific@Base 1:7.4.2
<  GC_smashed@Base 1:7.2d
<  GC_split_block@Base 1:7.2d
<  GC_start_call_back@Base 1:7.2d
<  GC_start_debugging_inner@Base 1:7.4.2
<  (arch=!sh4)GC_start_mark_threads_inner@Base 1:8.0
<  GC_start_reclaim@Base 1:7.2d
<  GC_start_routine@Base 1:7.2d
<  GC_start_rtn_prepare_thread@Base 1:7.2d
<  GC_start_time@Base 1:7.2d
<  GC_start_world@Base 1:7.2d
<  GC_stderr@Base 1:7.2d
<  GC_stdout@Base 1:7.2d
<  (arch=!nios2 !sh4)GC_steal_mark_stack@Base 1:8.0
<  GC_stop_count@Base 1:7.2d
<  GC_stop_init@Base 1:7.2d
<  GC_stop_world@Base 1:7.2d
<  GC_stopped_mark@Base 1:7.2d
<  GC_store_debug_info_inner@Base 1:7.2d
<  GC_suspend_ack_sem@Base 1:7.2d
<  GC_suspend_all@Base 1:7.2d
<  GC_suspend_handler@Base 1:7.2d
<  GC_suspend_handler_inner@Base 1:7.2d
<  (arch=!kfreebsd-amd64 !kfreebsd-i386)GC_suspend_thread@Base 1:7.6.4
<  GC_thr_init@Base 1:7.2d
<  GC_thr_initialized@Base 1:7.2d
<  GC_thread_exit_proc@Base 1:7.2d
<  GC_thread_key@Base 1:8.0
<  GC_threads@Base 1:7.2d
<  GC_timeout_stop_func@Base 1:7.2d
<  GC_toggleref_arr@Base 1:7.6.4
<  GC_toggleref_array_capacity@Base 1:7.6.4
<  GC_toggleref_array_size@Base 1:7.6.4
<  GC_toggleref_callback@Base 1:7.6.4
<  GC_total_stack_black_listed@Base 1:7.2d
<  GC_total_stacksize@Base 1:7.2d
<  GC_try_to_collect_general@Base 1:7.2d
<  GC_try_to_collect_inner@Base 1:7.2d
<  GC_typed_mark_proc@Base 1:7.2d
<  GC_typed_mark_proc_index@Base 1:7.2d
<  GC_unblock_gc_signals@Base 1:8.0
<  GC_unix_get_mem@Base 1:7.2d
<  GC_unix_mmap_get_mem@Base 1:7.6.4
<  GC_unmap@Base 1:8.0
<  GC_unmap_gap@Base 1:8.0
<  GC_unmap_old@Base 1:8.0
<  GC_unmap_start@Base 1:8.0
<  GC_unmap_threshold@Base 1:8.0
<  GC_unpromote_black_lists@Base 1:7.2d
<  GC_unreachable_finalize_mark_proc@Base 1:7.2d
<  GC_unregister_my_thread_inner@Base 1:7.2d
<  GC_used_heap_size_after_full@Base 1:7.2d
<  GC_version@Base 1:7.2d
<  (arch=!nios2 !sh4)GC_wait_builder@Base 1:8.0
<  GC_wait_for_gc_completion@Base 1:7.2d
<  (arch=!sh4)GC_wait_for_markers_init@Base 1:8.0
<  (arch=!nios2 !sh4)GC_wait_for_reclaim@Base 1:8.0
<  (arch=!nios2 !sh4)GC_wait_marker@Base 1:8.0
<  GC_with_callee_saves_pushed@Base 1:7.2d
<  GC_world_is_stopped@Base 1:7.2d
<  GC_world_stopped@Base 1:8.0
<  GC_write@Base 1:7.2d
<  (arch=alpha amd64 i386 ia64 m68k x32)GC_write_fault_handler@Base 1:7.2d
<  (arch=sparc sparc64)_etext@Base 1:7.2d
<  (arch=kfreebsd-amd64 kfreebsd-i386)etext@Base 1:7.2d
<  (arch-bits=32)_ZdaPvj@Base 1:7.6.4
<  (arch-bits=64)_ZdaPvm@Base 1:7.6.4
<  (arch-bits=32)_ZdlPvj@Base 1:7.6.4
<  (arch-bits=64)_ZdlPvm@Base 1:7.6.4
<  (arch-bits=32)_Znaj@Base 1:7.6.4
<  (arch-bits=64)_Znam@Base 1:7.6.4
<  (arch-bits=32)_Znwj@Base 1:7.6.4
<  (arch-bits=64)_Znwm@Base 1:7.6.4
<  (arch=sparc sparc64)_etext@Base 1:7.2d
<  (arch=kfreebsd-amd64 kfreebsd-i386)etext@Base 1:7.2d

It seemed implausible to me that most of these would be internal.
However, when I looked up a not so random sample of them using
codesearch.debian.net, all of the ones I tried were only found in vendor
copies of libgc. If all of these really are internal, that'd be great
indeed.

However, if downstreams actually do use any of these symbols, they may
now end up with a weak dependency.

Also note the (arch-bits=...) handling for C++ mangled symbols. I
suspect that putting this back fixes the FTBFS already.

> >  * debian/changelog says that you removed libatomic_ops handling, but for 
> >every new architecture libatomic_ops is still opted in leading to 
> >unnecessary porting work even though built-in atomics generally work well.
>  
> Yes, libatomic_ops is not needed any more, since libgc-8.0.0, provided you 
> have you build with gcc or clang.
> Do you mean we should delete libatomic_ops from Build-Depends in 
> debian/control file?

That and the handling in debian/rules. In particular, the handling of
ATOMIC_BUILTIN_ARCHS is relevant to porting. Essentially, we'd want that
to be opt-out rather than opt-in. Basically every new architecture has
to add itself there, which seems useless busywork.

> > I am also wondering whether this actually is a package hijack as there is 
> >no visible acknowledgement from any existing maintainers to adding Ian to 
> >uploaders.
>  
> A year ago I asked Ian to handle libgc release at Debian side. The reason for 
> this step had been silence for a month (!) from previous Debian maintainers 
> of libgc.

That makes some sense. However, we do have processes when it comes to
taking over a package. In particular, there is ITS, see
https://wiki.debian.org/PackageSalvaging. Using the process makes it
very transparent to others. Evidently that process wasn't used here. I
also note that one of the involved maintainers had issues with his MTA
lately (bouncing mail). Did you encounter that problem?

Please let me know how we can resolve the situation for 32bit archs in a
timely manner. Let me know if you need a sponsored upload. This bug is
eligible for a 0-day NMU soon given the lack of maintainer responses.

Helmut

Reply via email to