This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug dynamic-link/23790] New: Data race in _dl_profile_fixup with reloc_result update from multiple threads.


https://sourceware.org/bugzilla/show_bug.cgi?id=23790

            Bug ID: 23790
           Summary: Data race in _dl_profile_fixup with reloc_result
                    update from multiple threads.
           Product: glibc
           Version: 2.30
            Status: NEW
          Severity: normal
          Priority: P2
         Component: dynamic-link
          Assignee: unassigned at sourceware dot org
          Reporter: carlos at redhat dot com
  Target Milestone: ---

There is a data race in _dl_profile_fixup where multiple threads may enter from
the same PLT entry, and update the same reloc_result index entry.

This is similar to the data dependency issues from bug 23690, but there we only
look to solve the issue for threads that find the guard variable indicating the
structure is initialized only to see incomplete writes to the structure and
crash.

The fix is for _dl_profile_fixup to be rewritten such that the threads work on
a local copy of a struct reloc_result and then use a RMW sequence to place it
into the final array, and thus we avoid the data races.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]