> On Mar 31, 2016, at 11:15 AM, Zachary Turner via lldb-commits 
> <lldb-commits@lists.llvm.org> wrote:
> 
> I think it depends on how bad the thing that happens is.  If you are out of 
> memory, sure you can assert.  If a syscall fails that is supposed to never 
> fail, you can assert. 

Admittedly, if you’re out of memory there’s not much forward progress you’re 
going to be able to make. But, in general, I’d argue that a library shouldn’t 
assert. The process that is using LLDB might actually know how to deal with an 
out-of-memory, and it’s not our job as a library to say otherwise.

lldbassert() is what you should be using - it will assert() in a debug build, 
which is what you want - but in a release build, it will print out some spiel 
about what happened, where it happened, and asking to file a bug against lldb - 
and then continue. Admittedly, you might crash somewhere down the road anyway, 
but that crash should be considered a bug.

> But if one piece of debug info appears corrupt, I don't think it's worth 
> bringing down the whole process, which could be an entire IDE.  (FWIW yes I 
> agree that having LLDB out of process would be an even better solution to 
> this, but that's quite a large undertaking).  You could be debugging other 
> processes using other debug info which is not corrupt, but you terminate all 
> those sessions because one piece of unrelated debug info in an unrelated 
> process is bad.  Doesn't seem right to me.
> 

+100

> debug info is program input, and you would never assert on program input, you 
> have to be able to handle unreasonable values gracefully.
> 

+200

> On Thu, Mar 31, 2016 at 11:06 AM Jim Ingham via lldb-commits 
> <lldb-commits@lists.llvm.org <mailto:lldb-commits@lists.llvm.org>> wrote:
> jingham added a subscriber: jingham.
> jingham added a comment.
> 
> I don't agree that asserts are good in released code unless you have no way 
> of backing out of the situation you find yourself in.  After all, you are 
> saying to some unlucky user out there that they can't use the debugger on 
> their app and in general there's nothing they can do about it.  Greg's 
> suggestion is for this low-level API to say "I couldn't find this DIE" and 
> then if that's something higher layers can work around - by saying "Yeah I 
> couldn't find that type" then you've allowed the user to continue their debug 
> session instead of stopping them cold.
> 
> Not asserting prematurely is particularly important for handling debug 
> information; since we don't control the compiler we need to handle as much 
> junk information as gracefully as possible.
> 
> Also, asserts, especially for debug information, don't tend to be very 
> helpful in the field.  You get a crash trace which really doesn't tell you 
> the important stuff - what debug file was this, what DIE was bad, etc...  And 
> given the nature of life, this error is going to occur for a user who can't 
> give you their project to repro the bug and can't reduce it to a smaller test 
> case.  Logs are pretty much all you have to go on.  So an un-annotated assert 
> like this is not a good idea.
> 
> So orthogonal to the assert issue, if you find something not copacetic in the 
> debug information, you should log out as much local information as you can 
> regardless of what you are going to do with the error.
> 
> Jim
> 
> 
> Repository:
>   rL LLVM
> 
> http://reviews.llvm.org/D18646 <http://reviews.llvm.org/D18646>
> 
> 
> 
> _______________________________________________
> lldb-commits mailing list
> lldb-commits@lists.llvm.org <mailto:lldb-commits@lists.llvm.org>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits 
> <http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits>
> _______________________________________________
> lldb-commits mailing list
> lldb-commits@lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits


Thanks,
- Enrico
📩 egranata@.com ☎️ 27683

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to