Re: __cxa_thread_call_dtors: dtr 0x........ from unloaded dso, skipping
Date: Thu, 29 Jun 2023 10:37:10 UTC
On 29 Jun 2023, at 12:25, Willem Jan Withagen <wjw@digiware.nl> wrote: > > On 26-6-2023 17:38, Dimitry Andric wrote: >> On 26 Jun 2023, at 17:29, Bjoern A. Zeeb <bzeeb-lists@lists.zabbadoz.net> wrote: >>> On Mon, 26 Jun 2023, Dimitry Andric wrote: >>> >>>> On 26 Jun 2023, at 17:00, Bjoern A. Zeeb <bzeeb-lists@lists.zabbadoz.net> wrote: >>>>> while building world and current I see a lot of: >>>>> >>>>> __cxa_thread_call_dtors: dtr 0x...... from unloaded dso, skipping >>>>> >>>>> Can anyone shed light on that? >>>> You need (thanks to Kostik): >>>> https://cgit.freebsd.org/src/commit/?id=42ceab3ea1a997db93b65404be0ee4b17b5382d7 >>>> >>>> Build libc and install it, then the messages should disappear. >>> Great! Basically update world and it'll go. >>> Do we add an UPDATING note for this or do we consider it developer noise? >> I think the message has been there for a long time, but was not often >> noticed. It happened when the buildworld bootstrap decides to build a >> static bootstrap lld ("SYSTEM_LINKER: libclang will be built for >> bootstrapping a cross-linker"), so usually when lld's version is bumped. >> And that is because lld is one of the few threaded build tools in the >> tree. >> >> The messages themselves are harmless and can be ignored. Feel free to >> add an UPDATING note to that effect, otherwise worried users might think >> something is off. :) > > Actually I had that in my Ceph-ports as well, and chose to ignore it.... > Looked into the difference between FreeBSD and Linux. > Linux prevents that message by counting the number of loads, and only unloads > when the counter hits zero. FreeBSD just seems to unload, and report illegal access. There is no "loading" and "unloading" going on, since this is about a static executable. What happened was that __cxa_thread_call_dtors() was giving a misleading message, because _rtld_addr_phdr() always returned 0. Kostik has now made it so _rtld_addr_phdr() does the right thing for static executables. -Dimitry