<div dir="ltr"><div dir="ltr">On Tue, May 21, 2019 at 9:49 AM Mutz, Marc via Development <<a href="mailto:development@qt-project.org" target="_blank">development@qt-project.org</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Oh, a nullptr deref is pretty clear in a backtrace.</blockquote><div><br>Indeed, but my point is that it's relatively useless for the user (or for the developer for that matter). As you pointed out the dev sees the nullptr dereferencing instantly, the user just gets a crash. The assert is just superfluous is what I'm saying.<br> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Even in a release <br>
build, if you installed the debug symbol package that does with the <br>
distribution's version of Qt.<br></blockquote><div><br>Humor me, will you? [1]<br> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Please, you debug against a release build, and complain that you don't <br>
get debug checks?<br></blockquote><div><br>To take your previous example.  <br><br>QPen pen1 = ~~~;<br>QPen pen2 = std::move(pen1);<br><br>// ... Some code<br><br></div><div>pen1.color(); // Ooops<br><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">You're missing out on 4000 other checks that way, too!<br></blockquote><div><br></div><div>Yes, I already aknowledged that. And it's fine if I'm debugging into Qt. If not, I get segfault. And as it happens I have enough builds, so even if that happens and I can't switch kits and step into Qt, not every one user does have that at their fingertips, however.<br>Having documentation that spells such behaviour clearly, would be satisfactory to me, that's why I was inquiring on *how* the problem, which is a real one, can be mitigated.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
That said, I'm pretty sure that a static analyzer can find uses of <br>
objects in partially-formed state with local analysis.<br></blockquote><div><br>QPen pen;<br>QColor color = pen.color();<br><br>If the analyzer can see the above as dangerous, i.e. touching an object with an invalid state (i.e. d-ptr is null) as dangerous, I'm satisfied.<br><br>[1]: <a href="https://packages.debian.org/search?suite=testing&section=all&arch=any&searchon=names&keywords=libqt5core">https://packages.debian.org/search?suite=testing&section=all&arch=any&searchon=names&keywords=libqt5core</a><br></div></div></div>