Hi,
On Wed, Jul 17, 2024 at 06:34:04PM -0400, Aaron Merey wrote:
> From: Heather McIntyre <[email protected]>
>
> Signed-off-by: Heather S. McIntyre <[email protected]>
> Signed-off-by: Aaron Merey <[email protected]>
> Signed-off-by: Mark Wielaard <[email protected]>
>
> ---
>
> v2 changes:
> This replaces patch "libdw: Add locking around __libdw_dieabbrev for
> dwarf_hasattr". Mark suggested that we remove lazy abbrev reading
> in order to simplify the locking of __libdw_dieabbrev. This is
> a fair bit of work so for now lets just put a write lock around all
> of __libdw_dieabbrev. The removal of lazy reading of abbrev will be
> done in a future patch.
I have to think a bit about this. It sounds expensive to have to wrap
each abbrev read in a lock.
> diff --git a/libdw/dwarf_setalt.c b/libdw/dwarf_setalt.c
> index dc9b61cb..f7d70d9d 100644
> --- a/libdw/dwarf_setalt.c
> +++ b/libdw/dwarf_setalt.c
> @@ -35,6 +35,8 @@
> void
> dwarf_setalt (Dwarf *main, Dwarf *alt)
> {
> + rwlock_wrlock(main->dwarf_lock);
> +
> if (main->alt_fd != -1)
> {
> INTUSE(dwarf_end) (main->alt_dwarf);
> @@ -43,5 +45,7 @@ dwarf_setalt (Dwarf *main, Dwarf *alt)
> }
>
> main->alt_dwarf = alt;
> +
> + rwlock_unlock(main->dwarf_lock);
> }
> INTDEF (dwarf_setalt)
This part should go with the previous patch "libdw: make dwarf_getalt
thread-safe".
Cheers,
Mark