Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Dec 2016 13:03:24 -0800
From:      Conrad Meyer <cem@freebsd.org>
To:        Andriy Gapon <avg@freebsd.org>
Cc:        Bryan Drewery <bdrewery@freebsd.org>, src-committers <src-committers@freebsd.org>,  svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   Re: svn commit: r310025 - head/libexec/rtld-elf
Message-ID:  <CAG6CVpVQwUWS-v8Nu2L6tRqeBX2YxG_5-VPYTWtpM5crSMA8oQ@mail.gmail.com>
In-Reply-To: <099725fe-af29-3f9d-852d-53357bb8e8fe@FreeBSD.org>
References:  <201612131805.uBDI5EDm054866@repo.freebsd.org> <099725fe-af29-3f9d-852d-53357bb8e8fe@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Dec 13, 2016 at 12:51 PM, Andriy Gapon <avg@freebsd.org> wrote:
> On 13/12/2016 20:05, Bryan Drewery wrote:
>> Author: bdrewery
>> Date: Tue Dec 13 18:05:14 2016
>> New Revision: 310025
>> URL: https://svnweb.freebsd.org/changeset/base/310025
>>
>> Log:
>>   Take write lock for rtld_bind before modifying obj_list in dl_iterate_phdr().
>
> What are typical callers of dl_iterate_phdr() ?

libunwind::UnwindCursor<libunwind::LocalAddressSpace,
libunwind::Registers_x86_64>::setInfoBasedOnIPRegister(bool) via
_pthread_exit.

> In what scenarios this bug would typically be hit?
> Thank you!

We mostly hit this during multi-threaded program teardown.  Exiting
threads would be in _pthread_exit -> libunwind -> dl_iterate_phdr at
the same time as the main thread was performing __cxa_finalize ->
_rtld_addr_phdr -> obj_from_addr.

Best,
Conrad



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAG6CVpVQwUWS-v8Nu2L6tRqeBX2YxG_5-VPYTWtpM5crSMA8oQ>