<html><body><p><tt><font size="2">genivi-projects-bounces@lists.genivi.org wrote on 10/16/2015 10:10:41 AM:<br><br>> From: "Andersson, Gunnar" <gunnar.x.andersson@volvocars.com></font></tt><br><tt><font size="2">> To: Derek Foreman <derekf@osg.samsung.com>, "dev@lists.tizen.org" <br>> <dev@lists.tizen.org>, "ivi@lists.tizen.org" <ivi@lists.tizen.org>, <br>> "genivi-projects@lists.genivi.org" <genivi-<br>> projects@lists.genivi.org>, "automotive-<br>> discussions@lists.linuxfoundation.org" <automotive-<br>> discussions@lists.linuxfoundation.org>, Leon Anavi <leon.anavi@konsulko.com></font></tt><br><tt><font size="2">> Date: 10/16/2015 10:11 AM</font></tt><br><tt><font size="2">> Subject: RE: Asserts? (was: RE: Keyboard issues with Weston and AGL <br>> application suite)</font></tt><br><tt><font size="2">> Sent by: genivi-projects-bounces@lists.genivi.org</font></tt><br><tt><font size="2">> <br>> A more general follow-up<br>> <br>> Is there any tool that can instrument C-code to introduce null-<br>> pointer checks, say for a subset, like all pointer accesses within <br>> the relatively complex structure datatype used in the example below?</font></tt><br><br><tt><font size="2">I think modern compiler's address sanitizer will catch that, plus</font></tt><br><tt><font size="2">other interesting memory access bugs.</font></tt><br><a href="https://en.wikipedia.org/wiki/AddressSanitizer"><tt><font size="2">https://en.wikipedia.org/wiki/AddressSanitizer</font></tt></a><br><tt><font size="2">I've heard suggestions to use this in test setups. It is probably</font></tt><br><tt><font size="2">too much performance overhead to use in production.</font></tt><br><tt><font size="2"><br>> <br>> Surprisingly I received several personal replies - AFAICT no mailing<br>> list on CC?<br>> Public thanks here to those of you who chose to answer off-list.  <br>> (And if it was not deliberate, feel free to post your email and my response)<br></font></tt><br><tt><font size="2">Not deliberate. Just my usual issues with mutt's "UI".</font></tt><br><tt><font size="2">Here's me giving up and using an email client for humble people:</font></tt><br><br><tt><font size="2">"Andersson, Gunnar" <gunnar.x.andersson@volvocars.com> wrote on 10/16/2015 10:10:41 AM:<br>> From: "Andersson, Gunnar" <gunnar.x.andersson@volvocars.com></font></tt><br><tt><font size="2">> To: Frederico Cadete <frederico.cadete@awtce.be></font></tt><br><tt><font size="2">> Date: 10/16/2015 10:10 AM</font></tt><br><tt><font size="2">> Subject: RE: [agl-discussions] Asserts? (was: RE: Keyboard issues <br>> with Weston and AGL application suite)</font></tt><br><tt><font size="2">> <br>> Hi Frederico!<br>> <br>> >From: Frederico Cadete [</font></tt><a href="mailto:frederico.cadete@awtce.be"><tt><font size="2">mailto:frederico.cadete@awtce.be</font></tt></a><tt><font size="2">]<br>> >Sent: den 15 oktober 2015 18:47<br>> >To: Andersson, Gunnar<br>> >Subject: Re: [agl-discussions] Asserts? (was: RE: Keyboard issues <br>> with Weston and AGL application suite)<br>> ><br>> >On Thu, Oct 15, 2015 at 04:26:05PM +0000, Andersson, Gunnar wrote:<br>...<br>> >><br>> >> So, opinion question... why do people not use asserts?   Is it not a<br>> >> worthwhile trade-off?<br>> ><br>> >In my humble and very gratuitous opinion:<br>> ><br>> >Asserts should only be kept in production code when they check<br>> >irrecoverable logical preconditions for the code that follows.<br>> <br>> Yep.<br>> <br>> >If it's for checking non-NULL pointers, well, SIGSEGV aborts as well as an<br>> >assert, and does not pollute my code source. Granted, SIGSEGV will not<br>> >tell you where it triggered, but in a development environment that's<br>> >easily found with gdb.<br>> <br>> I think you are right - developers need a reasonable debugger setup anyhow. <br>> <br>> >In production it's harder.<br>> ><br>> >For the specific case in point, the policy of not asserting every pointer<br>> >dereference in the code base seems sane to me. Asserts and pointer checks<br>> >should be done when the NULL pointer has a logical meaning.<br>> <br>> Agree with you for pointer checks.  But if it is expected that it<br>> can be NULL I suppose you do an explicit if statement, not an assert?<br>> For me asserts are more for "this should never happen" (well strictly<br>> speaking they say the opposite - "this should always be true")<br>> <br>> ><br>> >In this case the pointer check was added when it was recognized that the<br>> >NULL pointer could validly happen. The developer decided to just call<br>> >return, failing more graciously than an assert. End result is better.<br>> <br>> Of course, as I said, I think the bug fix is absolutely correct.  Any<br>> asserting would have happened earlier.  I was wondering if it would have<br>> been a worthwhile tradeoff to do it earlier.  A certain amount of time was<br>> spent finding where the error was.   The reporter did not have enough<br>> knowledge to find/fix it himself but maybe with an assert showing the file<br>> and line, he could have. These are just the things I was thinking about,<br>> and I can imagine it is not a worthwhile tradeoff.<br>> <br>> ><br>> >TLDR: I prefer to crash, debug and fix, because the alternative is<br>> >spamming asserts.<br>> <br>> Got it, and this is the kind of understanding I wanted - what other<br>> Developers prefer and have found is the best way.<br>> <br>> ><br>> >Regards,<br>> >Frederico</font></tt><br><tt><font size="2"><br>> <br>> -----Original Message-----<br>> From: genivi-projects-bounces@lists.genivi.org [<a href="mailto:genivi-">mailto:genivi-</a><br>> projects-bounces@lists.genivi.org] On Behalf Of Derek Foreman<br>> Sent: den 15 oktober 2015 19:22<br>> To: Andersson, Gunnar; dev@lists.tizen.org; ivi@lists.tizen.org; <br>> genivi-projects@lists.genivi.org; automotive-<br>> discussions@lists.linuxfoundation.org; Leon Anavi<br>> Subject: Re: Asserts? (was: RE: Keyboard issues with Weston and AGL <br>> application suite)<br>> <br>> On 15/10/15 11:26 AM, Andersson, Gunnar wrote:<br>> > This is not really on topic...<br>> > <br>> > But seeing this issue just reminds me of a question that nags me. <br>> > <br>> > Why do people not use asserts in most projects?   Is it considered <br>> > to be ugly noise, is it not "cool" to use them, ... or what?<br>> > <br>> > It's just that in a line like the original one (this is just an example)<br>> >    <br>> >    &context->input_method->seat->keyboard->input_method_grab;<br>> > <br>> > at least my brain *cannot* avoid asking if every pointer is valid...<br>> [trimmed]<br>> <br>> _______________________________________________<br>> genivi-projects mailing list<br>> genivi-projects@lists.genivi.org<br>> <a href="https://lists.genivi.org/mailman/listinfo/genivi-projects">https://lists.genivi.org/mailman/listinfo/genivi-projects</a><br></font></tt><font face="sans-serif">


This mail, and any attachments thereto, is intended only for use by the addressee(s) named herein and may contain legally privileged and/or confidential information.  If you are not the intended recipient, please note that any review, dissemination, disclosure, alteration, printing, copying or transmission of this mail and/or any file transmitted with it, is strictly prohibited and may be unlawful.  If you have received this mail by mistake, please immediately notify the sender as well as our mail administrator at postmaster@aweurope.be, and permanently destroy the original as well as any copy thereof.
</font>
</body></html>