[MacPorts] #65945: jemalloc fails on 10.5.8: Undefined symbols: _malloc_default_purgeable_zone, __Unwind_Resume using a modified MacPorts setup on 10.5 that is defaulting to use gcc11

MacPorts noreply at macports.org
Mon Oct 10 17:47:02 UTC 2022


#65945: jemalloc fails on 10.5.8: Undefined symbols:
_malloc_default_purgeable_zone, __Unwind_Resume using a modified MacPorts
setup on 10.5 that is defaulting to use gcc11
---------------------------+-------------------------------------------
  Reporter:  barracuda156  |      Owner:  kencu
      Type:  defect        |     Status:  assigned
  Priority:  Normal        |  Milestone:
 Component:  ports         |    Version:  2.7.2
Resolution:                |   Keywords:  powerpc, leopard, snowleopard
      Port:  jemalloc      |
---------------------------+-------------------------------------------

Comment (by kencu):

 using gcc to do the link fails manually:
 {{{
 $ MACOSX_DEPLOYMENT_TARGET='10.5' /opt/local/bin/g++-mp-12 -shared
 -Wl,-install_name,/opt/local/lib/libjemalloc.2.dylib  -o
 lib/libjemalloc.2.dylib src/jemalloc.pic.o src/arena.pic.o
 src/background_thread.pic.o src/base.pic.o src/bin.pic.o
 src/bin_info.pic.o src/bitmap.pic.o src/buf_writer.pic.o
 src/cache_bin.pic.o src/ckh.pic.o src/counter.pic.o src/ctl.pic.o
 src/decay.pic.o src/div.pic.o src/ecache.pic.o src/edata.pic.o
 src/edata_cache.pic.o src/ehooks.pic.o src/emap.pic.o src/eset.pic.o
 src/exp_grow.pic.o src/extent.pic.o src/extent_dss.pic.o
 src/extent_mmap.pic.o src/fxp.pic.o src/san.pic.o src/san_bump.pic.o
 src/hook.pic.o src/hpa.pic.o src/hpa_hooks.pic.o src/hpdata.pic.o
 src/inspect.pic.o src/large.pic.o src/log.pic.o src/malloc_io.pic.o
 src/mutex.pic.o src/nstime.pic.o src/pa.pic.o src/pa_extra.pic.o
 src/pai.pic.o src/pac.pic.o src/pages.pic.o src/peak_event.pic.o
 src/prof.pic.o src/prof_data.pic.o src/prof_log.pic.o
 src/prof_recent.pic.o src/prof_stats.pic.o src/prof_sys.pic.o
 src/psset.pic.o src/rtree.pic.o src/safety_check.pic.o src/sc.pic.o
 src/sec.pic.o src/stats.pic.o src/sz.pic.o src/tcache.pic.o
 src/test_hooks.pic.o src/thread_event.pic.o src/ticker.pic.o src/tsd.pic.o
 src/witness.pic.o src/zone.pic.o src/jemalloc_cpp.pic.o -L/opt/local/lib
 -Wl,-headerpad_max_install_names -arch x86_64 -lstdc++ -pthread
 Kens-MacBook-Pro:jemalloc-5.3.0 cunningh$ MACOSX_DEPLOYMENT_TARGET='10.5'
 /opt/local/bin/gcc-mp-12 -shared
 -Wl,-install_name,/opt/local/lib/libjemalloc.2.dylib  -o
 lib/libjemalloc.2.dylib src/jemalloc.pic.o src/arena.pic.o
 src/background_thread.pic.o src/base.pic.o src/bin.pic.o
 src/bin_info.pic.o src/bitmap.pic.o src/buf_writer.pic.o
 src/cache_bin.pic.o src/ckh.pic.o src/counter.pic.o src/ctl.pic.o
 src/decay.pic.o src/div.pic.o src/ecache.pic.o src/edata.pic.o
 src/edata_cache.pic.o src/ehooks.pic.o src/emap.pic.o src/eset.pic.o
 src/exp_grow.pic.o src/extent.pic.o src/extent_dss.pic.o
 src/extent_mmap.pic.o src/fxp.pic.o src/san.pic.o src/san_bump.pic.o
 src/hook.pic.o src/hpa.pic.o src/hpa_hooks.pic.o src/hpdata.pic.o
 src/inspect.pic.o src/large.pic.o src/log.pic.o src/malloc_io.pic.o
 src/mutex.pic.o src/nstime.pic.o src/pa.pic.o src/pa_extra.pic.o
 src/pai.pic.o src/pac.pic.o src/pages.pic.o src/peak_event.pic.o
 src/prof.pic.o src/prof_data.pic.o src/prof_log.pic.o
 src/prof_recent.pic.o src/prof_stats.pic.o src/prof_sys.pic.o
 src/psset.pic.o src/rtree.pic.o src/safety_check.pic.o src/sc.pic.o
 src/sec.pic.o src/stats.pic.o src/sz.pic.o src/tcache.pic.o
 src/test_hooks.pic.o src/thread_event.pic.o src/ticker.pic.o src/tsd.pic.o
 src/witness.pic.o src/zone.pic.o src/jemalloc_cpp.pic.o -L/opt/local/lib
 -Wl,-headerpad_max_install_names -arch x86_64 -lstdc++ -pthread
 Undefined symbols for architecture x86_64:
   "__Unwind_Resume", referenced from:
       __ZL9handleOOMmb in jemalloc_cpp.pic.o
 ld: symbol(s) not found for architecture x86_64
 collect2: error: ld returned 1 exit status
 }}}

 but using gc++ to do the link succeeds as it should:
 {{{
 $ MACOSX_DEPLOYMENT_TARGET='10.5' /opt/local/bin/g++-mp-12 -shared
 -Wl,-install_name,/opt/local/lib/libjemalloc.2.dylib  -o
 lib/libjemalloc.2.dylib src/jemalloc.pic.o src/arena.pic.o
 src/background_thread.pic.o src/base.pic.o src/bin.pic.o
 src/bin_info.pic.o src/bitmap.pic.o src/buf_writer.pic.o
 src/cache_bin.pic.o src/ckh.pic.o src/counter.pic.o src/ctl.pic.o
 src/decay.pic.o src/div.pic.o src/ecache.pic.o src/edata.pic.o
 src/edata_cache.pic.o src/ehooks.pic.o src/emap.pic.o src/eset.pic.o
 src/exp_grow.pic.o src/extent.pic.o src/extent_dss.pic.o
 src/extent_mmap.pic.o src/fxp.pic.o src/san.pic.o src/san_bump.pic.o
 src/hook.pic.o src/hpa.pic.o src/hpa_hooks.pic.o src/hpdata.pic.o
 src/inspect.pic.o src/large.pic.o src/log.pic.o src/malloc_io.pic.o
 src/mutex.pic.o src/nstime.pic.o src/pa.pic.o src/pa_extra.pic.o
 src/pai.pic.o src/pac.pic.o src/pages.pic.o src/peak_event.pic.o
 src/prof.pic.o src/prof_data.pic.o src/prof_log.pic.o
 src/prof_recent.pic.o src/prof_stats.pic.o src/prof_sys.pic.o
 src/psset.pic.o src/rtree.pic.o src/safety_check.pic.o src/sc.pic.o
 src/sec.pic.o src/stats.pic.o src/sz.pic.o src/tcache.pic.o
 src/test_hooks.pic.o src/thread_event.pic.o src/ticker.pic.o src/tsd.pic.o
 src/witness.pic.o src/zone.pic.o src/jemalloc_cpp.pic.o -L/opt/local/lib
 -Wl,-headerpad_max_install_names -arch x86_64 -lstdc++ -pthread

 $ ls lib/*
 lib/libjemalloc.2.dylib lib/libjemalloc_pic.a

 }}}

 and the difference is that when you use g++-mp-12 to do the link, it adds
 these two extra libraries automatically, that are not added when you use
 gcc-mp-12 to do the link:
 {{
 -lgcc_s.1.1 -lgcc_s.10.5
 }}}


 So, as expected above, the issue is being caused by the build using the
 GCC C compiler instead of the GCC C++ compiler to link code that uses c++.

-- 
Ticket URL: <https://trac.macports.org/ticket/65945#comment:12>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list