[llvm] r268111 - [Orc] Make sure we don't drop the internal error in OrcRemoteTargetClient when
David Blaikie via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 29 16:55:28 PDT 2016
On Fri, Apr 29, 2016 at 4:49 PM, Lang Hames <lhames at gmail.com> wrote:
> Hi Dave,
>
> The noisy error checking guarantees can only check code that's traversed
> at runtime, and this is the first time we'd traversed this particular
> error-dropping path.
>
> Specifically: ORCRemoteTarget has an 'ExistingError' field that all
> clients were checking correctly, but when the constructor failed today (the
> first time this had happened) none of the clients got a copy of
> ORCRemoteTargetClient to check - it was destructed inside the
> ORCRemoteTargetClient::Create method, and its (unchecked) ExistingError
> field blew up.
>
The usual follow-up - is this being/can this be tested (it's not clear
(perhaps I've missed the details in other patches) whether "today" means
"in some out of tree/untested use" or "in a case I committed earlier but
didn't notice the failure until the buildbots ran it"?)?
>
> I don't like the Error-as-member style that ORCRemoteTargetClient is using
> - I feel like it's prone to these kinds of mistakes, but I haven't got a
> better solution yet.
>
> - Lang.
>
> On Fri, Apr 29, 2016 at 3:35 PM, David Blaikie <dblaikie at gmail.com> wrote:
>
>> was there some reason this wasn't caught before by the noisy checked
>> error handling?
>>
>> On Fri, Apr 29, 2016 at 2:29 PM, Lang Hames via llvm-commits <
>> llvm-commits at lists.llvm.org> wrote:
>>
>>> Author: lhames
>>> Date: Fri Apr 29 16:29:48 2016
>>> New Revision: 268111
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=268111&view=rev
>>> Log:
>>> [Orc] Make sure we don't drop the internal error in
>>> OrcRemoteTargetClient when
>>> the constructor fails, as this would lead to an 'unchecked error' crash.
>>>
>>> Modified:
>>> llvm/trunk/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h
>>>
>>> Modified:
>>> llvm/trunk/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h?rev=268111&r1=268110&r2=268111&view=diff
>>>
>>> ==============================================================================
>>> --- llvm/trunk/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h
>>> (original)
>>> +++ llvm/trunk/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h
>>> Fri Apr 29 16:29:48 2016
>>> @@ -693,8 +693,9 @@ private:
>>> std::tie(RemoteTargetTriple, RemotePointerSize, RemotePageSize,
>>> RemoteTrampolineSize, RemoteIndirectStubSize) = *RIOrErr;
>>> Err = Error::success();
>>> - } else
>>> - Err = RIOrErr.takeError();
>>> + } else {
>>> + Err = joinErrors(RIOrErr.takeError(), std::move(ExistingError));
>>> + }
>>> }
>>>
>>> Error deregisterEHFrames(TargetAddress Addr, uint32_t Size) {
>>>
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160429/341ef362/attachment.html>
More information about the llvm-commits
mailing list