[lldb-dev] Stackoverflow crash when evaluating an invalid expression

Ben Ruthig via lldb-dev lldb-dev at lists.llvm.org
Thu Mar 7 10:21:15 PST 2019


Ah I see what happened.  My original e-mail was delayed because it was too
large but it was recently accepted by a moderator.

On Thu, Mar 7, 2019 at 1:19 PM Ben Ruthig <bruthig at google.com> wrote:

> Hey Raphael,
>
> Yes, you did advise me to drop a D->dumpColor() call in to
> getASTRecordLayout().  For frustrating reasons I still haven't been able to
> capture those logs but when I do I will report back.
>
> Thanks so much for your help and quick response!
>
> Ben
>
> On Thu, Mar 7, 2019 at 12:56 PM Raphael Isemann <teemperor at gmail.com>
> wrote:
>
>> Hi Ben,
>>
>> I think I already answered this last week:
>> http://lists.llvm.org/pipermail/lldb-dev/2019-February/014789.html
>>
>> I don't think you'll get an answer here without posting the
>> problematic source or giving any more information as I described in my
>> mail.
>>
>> Cheers,
>> - Raphael
>>
>> Am Do., 7. März 2019 um 18:13 Uhr schrieb Ben Ruthig via lldb-dev
>> <lldb-dev at lists.llvm.org>:
>> >
>> > Hello all,
>> >
>> > I am currently investigating an issue where LLDB is crashing due to a
>> stack overflow when attempting to evaluate an expression.  I have seen the
>> same issue in 6.0.1 and have reproduced it in 7.0.1.  Any help to diagnose
>> and fix would be greatly appreciated as I am trying to meet a release
>> deadline early next week!
>> >
>> > The facts:
>> > - The expression being evaluated is not a valid expression in the C++
>> domain. For example the expression is a datatype like 'Foobar'.  (For
>> reasons unexplained I am constrained to supporting this use case.)
>> > - The crash occurs when using the C++ LLDB API but not when trying to
>> evaluate the expression via the LLDB shell or the LLDB Python script
>> shell.  However, when doing 'expr Foobar' there is no output and the
>> operation is completely silent.  It is similar when trying to do
>> 'lldb.frame.EvaluateExpression("Foobar")' in the Python shell as well.  I
>> would expect to get some error output or an SbValue in an error state but
>> no such luck.
>> > - I was able to capture a stack trace (attached) and it seems to be a
>> recursive loop bottoming out.  For brevity two 'loops' of stacktrace are
>> included here:
>> >
>> > 3387.      liblldb.dll!clang::ASTContext::getASTRecordLayout(const
>> clang::RecordDecl * D) Line 2965    C++
>> > 3388.      liblldb.dll!`anonymous
>> namespace'::EmptySubobjectMap::ComputeEmptySubobjectSizes() Line 216    C++
>> > 3389.      liblldb.dll!`anonymous
>> namespace'::EmptySubobjectMap::EmptySubobjectMap(const clang::ASTContext &
>> Context, const clang::CXXRecordDecl * Class) Line 172    C++
>> > 3390.      liblldb.dll!clang::ASTContext::getASTRecordLayout(const
>> clang::RecordDecl * D) Line 2965    C++
>> > 3391.      liblldb.dll!`anonymous
>> namespace'::EmptySubobjectMap::ComputeEmptySubobjectSizes() Line 216    C++
>> > 3392.      liblldb.dll!`anonymous
>> namespace'::EmptySubobjectMap::EmptySubobjectMap(const clang::ASTContext &
>> Context, const clang::CXXRecordDecl * Class) Line 172    C++
>> > 3393.      liblldb.dll!clang::ASTContext::getASTRecordLayout(const
>> clang::RecordDecl * D) Line 2965    C++
>> >
>> > Help please :S
>> >
>> > Thanks,
>> > Ben
>> >
>> >
>> > _______________________________________________
>> > lldb-dev mailing list
>> > lldb-dev at lists.llvm.org
>> > https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>>
>
>
> --
> "Sometimes I've believed as many as six impossible things before
> breakfast" - Alice in Wonderland
>


-- 
"Sometimes I've believed as many as six impossible things before breakfast"
- Alice in Wonderland
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20190307/6cef87bf/attachment.html>


More information about the lldb-dev mailing list