[lld] r322264 - Fix thread race between SectionPiece's OutputOff and Live members

Dimitry Andric via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 11 04:01:52 PST 2018


Yes, I'll create a PR for it.

-Dimitry

> On 11 Jan 2018, at 10:53, Shoaib Meenai <smeenai at fb.com> wrote:
> 
> Should this be merged into 6.0?
> 
> From: llvm-commits <llvm-commits-bounces at lists.llvm.org <mailto:llvm-commits-bounces at lists.llvm.org>> on behalf of Dimitry Andric via llvm-commits <llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>>
> Reply-To: Dimitry Andric <dimitry at andric.com <mailto:dimitry at andric.com>>
> Date: Thursday, January 11, 2018 at 12:04 AM
> To: "llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>" <llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>>
> Subject: [lld] r322264 - Fix thread race between SectionPiece's OutputOff and Live members
> 
> Author: dim
> Date: Thu Jan 11 00:03:22 2018
> New Revision: 322264
> 
> URL: https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D322264-26view-3Drev&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=Xzeycr3aeaH2s-dbwn36tREoztaX3UBAqTs_Puspq3c&s=l5swfwKkexIb_mVxncjt1ygki08cGq_Xj6D46fD5OqM&e= <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D322264-26view-3Drev&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=Xzeycr3aeaH2s-dbwn36tREoztaX3UBAqTs_Puspq3c&s=l5swfwKkexIb_mVxncjt1ygki08cGq_Xj6D46fD5OqM&e=>
> Log:
> Fix thread race between SectionPiece's OutputOff and Live members
> 
> Summary:
> As reported in bug 35788, rL316280 reintroduces a race between two
> members of SectionPiece, which share the same 64 bit memory location.
> 
> To fix the race, check the hash before checking the Live member, as
> suggested by Rafael.
> 
> Reviewers: ruiu, rafael
> 
> Reviewed By: ruiu
> 
> Subscribers: smeenai, emaste, llvm-commits
> 
> Differential Revision: https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_D41884&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=Xzeycr3aeaH2s-dbwn36tREoztaX3UBAqTs_Puspq3c&s=dy5VuBxeCmtDUygIahWUYtVcPQTAypaA-1W-lJsyTMc&e= <https://urldefense.proofpoint.com/v2/url?u=https-3A__reviews.llvm.org_D41884&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=Xzeycr3aeaH2s-dbwn36tREoztaX3UBAqTs_Puspq3c&s=dy5VuBxeCmtDUygIahWUYtVcPQTAypaA-1W-lJsyTMc&e=>
> 
> Modified:
>     lld/trunk/ELF/SyntheticSections.cpp
> 
> Modified: lld/trunk/ELF/SyntheticSections.cpp
> URL: https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_lld_trunk_ELF_SyntheticSections.cpp-3Frev-3D322264-26r1-3D322263-26r2-3D322264-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=Xzeycr3aeaH2s-dbwn36tREoztaX3UBAqTs_Puspq3c&s=Y5724oLNQOEvmUSt4gRXiCeTBv9BgWDLqZc-WjB_LyQ&e= <https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_lld_trunk_ELF_SyntheticSections.cpp-3Frev-3D322264-26r1-3D322263-26r2-3D322264-26view-3Ddiff&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=Xzeycr3aeaH2s-dbwn36tREoztaX3UBAqTs_Puspq3c&s=Y5724oLNQOEvmUSt4gRXiCeTBv9BgWDLqZc-WjB_LyQ&e=>
> ==============================================================================
> --- lld/trunk/ELF/SyntheticSections.cpp (original)
> +++ lld/trunk/ELF/SyntheticSections.cpp Thu Jan 11 00:03:22 2018
> @@ -2451,10 +2451,8 @@ void MergeNoTailSection::finalizeContent
>    parallelForEachN(0, Concurrency, [&](size_t ThreadId) {
>      for (MergeInputSection *Sec : Sections) {
>        for (size_t I = 0, E = Sec->Pieces.size(); I != E; ++I) {
> -        if (!Sec->Pieces[I].Live)
> -          continue;
>          size_t ShardId = getShardId(Sec->Pieces[I].Hash);
> -        if ((ShardId & (Concurrency - 1)) == ThreadId)
> +        if ((ShardId & (Concurrency - 1)) == ThreadId && Sec->Pieces[I].Live)
>            Sec->Pieces[I].OutputOff = Shards[ShardId].add(Sec->getData(I));
>        }
>      }
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
> https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Dcommits&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=Xzeycr3aeaH2s-dbwn36tREoztaX3UBAqTs_Puspq3c&s=YZq7G3sWEhLNixHYrxl6zXBuu0ZSTRGlLhLss21Ce2E&e= <https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Dcommits&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=Xzeycr3aeaH2s-dbwn36tREoztaX3UBAqTs_Puspq3c&s=YZq7G3sWEhLNixHYrxl6zXBuu0ZSTRGlLhLss21Ce2E&e=>
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180111/c7611915/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 223 bytes
Desc: Message signed with OpenPGP
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180111/c7611915/attachment-0001.sig>


More information about the llvm-commits mailing list