This is a great catch. Could you file a bug for it?
My current theory: we don't have Debug coverage on CQ, but we enable DCHECKs in Release mode. However, in this case it's an assert (Assertion failed: (impl_.get() != nullptr), function operator->, file ../../base/memory/scoped_ptr.h, line 386) so it's not affected by this.Do you know why it's an assert (+chromium-dev)?
On Wed, Sep 2, 2015 at 4:07 PM Paweł Hajdan, Jr. <phajd...@chromium.org> wrote:This is a great catch. Could you file a bug for it?My current theory: we don't have Debug coverage on CQ, but we enable DCHECKs in Release mode. However, in this case it's an assert (Assertion failed: (impl_.get() != nullptr), function operator->, file ../../base/memory/scoped_ptr.h, line 386) so it's not affected by this.Do you know why it's an assert (+chromium-dev)?Nope!
Are there some additional #defines we could turn on the CQ trybots to enable asserts there if this can't be changed?PawełOn Wed, Sep 2, 2015 at 3:37 PM, Colin Blundell <blun...@chromium.org> wrote:Hi Pawel,I know that you're interested in discrepancies between the CQ and the waterfall, so I thought you might want to know about this issue.https://codereview.chromium.org/1313213005/ passed the CQ (and earlier trybot runs) with no problems. However, it had a bug: changes I made to browsertests resulted in them dereferencing a scoped_ptr that contained null. scoped_ptr.h has an assertion that fails in this case, which is indeed what got triggered on the main waterfall: http://build.chromium.org/p/chromium.mac/builders/Mac10.9%20Tests%20%28dbg%29/builds/11102/steps/browser_tests%20on%20Mac-10.9/logs/PolicyVariationsServiceTest.VariationsURLIsValid, for example.It's not obvious to me why the CQ/trybot runs succeeded in this case.Thanks,Colin
--
--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
On Wed, Sep 2, 2015 at 8:30 AM, Colin Blundell <blun...@chromium.org> wrote:On Wed, Sep 2, 2015 at 4:07 PM Paweł Hajdan, Jr. <phajd...@chromium.org> wrote:This is a great catch. Could you file a bug for it?My current theory: we don't have Debug coverage on CQ, but we enable DCHECKs in Release mode. However, in this case it's an assert (Assertion failed: (impl_.get() != nullptr), function operator->, file ../../base/memory/scoped_ptr.h, line 386) so it's not affected by this.Do you know why it's an assert (+chromium-dev)?Nope!I was wondering that the other day when I happened to step into that code.It looks like it might be to match the implementation that's internal to Google? +dcheng as original author https://chromium.googlesource.com/chromium/src/+/9961abd411eab6ec1cf9421078dfdaa001a7e2b5%5E%21/#F0It doesn't seem particularly valuable to maintain that, if that's the reason.
This is a great catch. Could you file a bug for it?My current theory: we don't have Debug coverage on CQ, but we enable DCHECKs in Release mode. However, in this case it's an assert (Assertion failed: (impl_.get() != nullptr), function operator->, file ../../base/memory/scoped_ptr.h, line 386) so it's not affected by this.Do you know why it's an assert (+chromium-dev)? Are there some additional #defines we could turn on the CQ trybots to enable asserts there if this can't be changed?PawełOn Wed, Sep 2, 2015 at 3:37 PM, Colin Blundell <blun...@chromium.org> wrote:Hi Pawel,I know that you're interested in discrepancies between the CQ and the waterfall, so I thought you might want to know about this issue.https://codereview.chromium.org/1313213005/ passed the CQ (and earlier trybot runs) with no problems. However, it had a bug: changes I made to browsertests resulted in them dereferencing a scoped_ptr that contained null. scoped_ptr.h has an assertion that fails
in this case, which is indeed what got triggered on the main waterfall: http://build.chromium.org/p/chromium.mac/builders/Mac10.9%20Tests%20%28dbg%29/builds/11102/steps/browser_tests%20on%20Mac-10.9/logs/PolicyVariationsServiceTest.VariationsURLIsValid, for example.It's not obvious to me why the CQ/trybot runs succeeded in this case.Thanks,Colin
On Wed, Sep 2, 2015 at 7:06 AM, Paweł Hajdan, Jr. <phajd...@chromium.org> wrote:This is a great catch. Could you file a bug for it?My current theory: we don't have Debug coverage on CQ, but we enable DCHECKs in Release mode. However, in this case it's an assert (Assertion failed: (impl_.get() != nullptr), function operator->, file ../../base/memory/scoped_ptr.h, line 386) so it's not affected by this.Do you know why it's an assert (+chromium-dev)? Are there some additional #defines we could turn on the CQ trybots to enable asserts there if this can't be changed?PawełOn Wed, Sep 2, 2015 at 3:37 PM, Colin Blundell <blun...@chromium.org> wrote:Hi Pawel,I know that you're interested in discrepancies between the CQ and the waterfall, so I thought you might want to know about this issue.https://codereview.chromium.org/1313213005/ passed the CQ (and earlier trybot runs) with no problems. However, it had a bug: changes I made to browsertests resulted in them dereferencing a scoped_ptr that contained null. scoped_ptr.h has an assertion that failsHow do you deref null and not segfault?
--in this case, which is indeed what got triggered on the main waterfall: http://build.chromium.org/p/chromium.mac/builders/Mac10.9%20Tests%20%28dbg%29/builds/11102/steps/browser_tests%20on%20Mac-10.9/logs/PolicyVariationsServiceTest.VariationsURLIsValid, for example.It's not obvious to me why the CQ/trybot runs succeeded in this case.Thanks,Colin
--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
--
--
Chromium Developers mailing list: chromi...@chromium.org
View archives, change email options, or unsubscribe:
http://groups.google.com/a/chromium.org/group/chromium-dev
To unsubscribe from this group and stop receiving emails from it, send an email to chromium-dev...@chromium.org.
I don't have the reference in front of me, so I could be wrong, but I believe a call through a null 'this' is always undefined behavior, even if the compiler happens to make it behave the way the author expected.
&*null is the one that depends on how you squint at the standard.
Do you see any reasons not to check the assert into DCHECK?
I'd be hesitating to disable NDEBUG on trybots, because it'd probably change too much (like enable possibly slower code, disable coverage for Release codepaths where they differ from Debug)...
Thanks,
Bence
--
You received this message because you are subscribed to the Google Groups "infra-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to infra-dev+...@chromium.org.
To post to this group, send email to infr...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/infra-dev/CACMu3tqFQE7okzKWjpK1nmpKnAzR0Zq_HJPu82dj4%3DUk%3DLgdkw%40mail.gmail.com.
Do you see any reasons not to check the assert into DCHECK?I'd be hesitating to disable NDEBUG on trybots, because it'd probably change too much (like enable possibly slower code, disable coverage for Release codepaths where they differ from Debug)...
Paweł
--
You received this message because you are subscribed to the Google Groups "infra-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to infra-dev+...@chromium.org.
To post to this group, send email to infr...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/infra-dev/CAATLsPaRcyj1yi8N4gptKHZShS%2BxbQ7ziWN%2Bi8NnbNcxkFD5uw%40mail.gmail.com.
On Thu, Sep 3, 2015 at 6:37 AM, Paweł Hajdan, Jr. <phajd...@chromium.org> wrote:Do you see any reasons not to check the assert into DCHECK?I'd be hesitating to disable NDEBUG on trybots, because it'd probably change too much (like enable possibly slower code, disable coverage for Release codepaths where they differ from Debug)...+1, let's just turn the assert into a DCHECK.
On Thu, Sep 3, 2015 at 4:22 PM John Abd-El-Malek <j...@chromium.org> wrote:On Thu, Sep 3, 2015 at 6:37 AM, Paweł Hajdan, Jr. <phajd...@chromium.org> wrote:Do you see any reasons not to check the assert into DCHECK?I'd be hesitating to disable NDEBUG on trybots, because it'd probably change too much (like enable possibly slower code, disable coverage for Release codepaths where they differ from Debug)...+1, let's just turn the assert into a DCHECK.I'll do this.
It was renamed to WTF_LOG: https://chromium.googlesource.com/chromium/blink/+/982944a9bb0796cee538ee092cfa1f0463dd9139
What about creating an internal class e.g. IsolateHolder::OwnedData - that way we'd keep the automatic memory handing.
We should probably also add DEPS rules to enforce this
Thanks, Jeremy! Interestingly, it turns out that removing usage of scoped_ptr within //third_party/WebKit itself is not enough.//gin/public includes scoped_ptr.h in header files that are included from within //third_party/WebKit. //base/logging.h redefines assert() to use LogMessage(). Thus, any code in //third_party/WebKit that (a) directly or transitively includes the files from //gin/public, (b) uses assert(), and (c) gets linked into any target built in Blink that doesn't depend on //gin will cause that target to fail at the link step. Again, an example here is Blink's modules target; an example offending file is AXNodeObject.cpp.
Just checking back, what's the status here?Colin filed https://code.google.com/p/chromium/issues/detail?id=527444 for the original issue.https://codereview.chromium.org/1305973011/ didn't seem to land, with the reason related to WebKit dependencies on base. This might have changed since then.The asserts in scoped_ptr.h seem to still be there. :-/