New issue
Advanced search Search tips

Issue 897400 link

Starred by 1 user

Issue metadata

Status: Untriaged
Owner: ----
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug

Blocking:
issue 879806



Sign in to add a comment

IncrementalMarkingTest.StackFrameDepthDisabled fails on first run

Project Member Reported by w...@chromium.org, Oct 20

Issue description

blink_heap_unittests:IncrementalMarkingTest.StackFrameDepthDisabled fails on its first run in this suite, and has to be retried:

[222/308] IncrementalMarkingTest.EnableDisableBarrier (0 ms)
[ RUN      ] IncrementalMarkingTest.StackFrameDepthDisabled
[73477:73477:1019/220512.917344:1514700413943:FATAL:thread_state.cc(924)] Check failed: gc_phase_ == GCPhase::kNone (2 vs. 0)
#0 0x00000347f8bf base::debug::StackTrace::StackTrace()
#1 0x0000033e6eeb logging::LogMessage::~LogMessage()
#2 0x000002bbd976 blink::ThreadState::SetGCPhase()
#3 0x0000013e5b62 blink::incremental_marking_test::IncrementalMarkingScope::IncrementalMarkingScope()
#4 0x0000013e59e6 blink::incremental_marking_test::IncrementalMarkingTest_StackFrameDepthDisabled_Test::TestBody()
#5 0x00000150e792 testing::Test::Run()
#6 0x00000150ef90 testing::TestInfo::Run()
#7 0x00000150f4a7 testing::TestCase::Run()
#8 0x00000151b6c7 testing::internal::UnitTestImpl::RunAllTests()
#9 0x00000151b23d testing::UnitTest::Run()
#10 0x0000034aaa51 base::TestSuite::Run()
#11 0x000001421e4a runHelper()
#12 0x0000034ad51d base::(anonymous namespace)::LaunchUnitTestsInternal()
#13 0x0000034ad371 base::LaunchUnitTests()
#14 0x000001421efe main
#15 0x7fd1846092b1 __libc_start_main
#16 0x0000012b502a _start

[223/308] IncrementalMarkingTest.StackFrameDepthDisabled (CRASHED)

 
Blocking: 879806
With StackFrameDepthDisabled the same suite fails on:

[124/307] IncrementalMarkingTest.EnableDisableBarrier (0 ms)
[ RUN      ] IncrementalMarkingTest.ManualWriteBarrierTriggersWhenMarkingIsOn
[17640:17640:1020/160510.122867:4404697742:FATAL:thread_state.cc(924)] Check failed: gc_phase_ == GCPhase::kNone (2 vs. 0)
#0 0x00000347b7ef base::debug::StackTrace::StackTrace()
#1 0x0000033e2e1b logging::LogMessage::~LogMessage()
#2 0x000002bb98b6 blink::ThreadState::SetGCPhase()
#3 0x0000013dbb62 blink::incremental_marking_test::IncrementalMarkingScope::IncrementalMarkingScope()
#4 0x0000013dc7cf blink::incremental_marking_test::ExpectWriteBarrierFires::ExpectWriteBarrierFires()
#5 0x0000013dc473 blink::incremental_marking_test::IncrementalMarkingTest_ManualWriteBarrierTriggersWhenMarkingIsOn_Test::TestBody()
#6 0x000001504792 testing::Test::Run()
#7 0x000001504f90 testing::TestInfo::Run()
#8 0x0000015054a7 testing::TestCase::Run()
#9 0x0000015116c7 testing::internal::UnitTestImpl::RunAllTests()
#10 0x00000151123d testing::UnitTest::Run()
#11 0x0000034a6981 base::TestSuite::Run()
#12 0x000001417e4a runHelper()
#13 0x0000034a944d base::(anonymous namespace)::LaunchUnitTestsInternal()
#14 0x0000034a92a1 base::LaunchUnitTests()
#15 0x000001417efe main
#16 0x7f479e361f45 __libc_start_main
#17 0x0000012ab02a _start

This suggests that some preceding test is leaking the |gc_phase_| value.

The test preceding the failed IncrementalMarkingTest.* tests is HeapTest.ShrinkVector, and running the suite with:

--gtest_filter=HeapTest.ShrinkVector:IncrementalMarkingTest.*

reproduces the failure reliably.
Project Member

Comment 3 by bugdroid1@chromium.org, Oct 21

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/12d2a52b7c6ac8a9ffaa7ddf6f01d5e944539024

commit 12d2a52b7c6ac8a9ffaa7ddf6f01d5e944539024
Author: Wez <wez@chromium.org>
Date: Sun Oct 21 03:51:29 2018

Disable HeapTest.ShrinkVector test, which leaks state.

This test leaks process-global GCPhase state, potentially crashing
tests which run later in the same process, e.g several
IncrementalMarkingTest suite tests expect GCPhase to be None when they
start executing.

Bug: 897400,  879806 
Change-Id: I8071fded78038b9c77a4cb6d3a5e1b258a4bbd49
Reviewed-on: https://chromium-review.googlesource.com/c/1292895
Commit-Queue: Wez <wez@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#601417}
[modify] https://crrev.com/12d2a52b7c6ac8a9ffaa7ddf6f01d5e944539024/third_party/blink/renderer/platform/heap/heap_test.cc

Status: Fixed (was: Untriaged)
I guess this one can be closed now? Please reopen otherwise.
Status: Untriaged (was: Fixed)
Re #4: I would assume that someone will want to look into _why_ this test was causing later tests to fail, and fix & re-enable it, right?
BTW, when this gets resolved, please consider adding a post-test check that no global state got leaked by the test, e.g. see https://cs.chromium.org/chromium/src/base/test/test_suite.cc?l=110
Project Member

Comment 7 by bugdroid1@chromium.org, Oct 25

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d52bfdeb3481d27b40476e2f7d4f886f089e2d9b

commit d52bfdeb3481d27b40476e2f7d4f886f089e2d9b
Author: Keishi Hattori <keishi@chromium.org>
Date: Thu Oct 25 06:00:26 2018

Oilpan: IncrementalMarkingScope should finish in progress GCs first

IncrementalMarkingScope may be created while a lazy sweep or incremental marking is in progress, because of a previous test or out of line allocation.
We need to finish GC first so we won't hit a DCHECK.

Bug: 897400
Change-Id: I26e9501eee9b4b943c7b6b26ce94c23c6365cc99
Reviewed-on: https://chromium-review.googlesource.com/c/1293100
Commit-Queue: Keishi Hattori <keishi@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#602621}
[modify] https://crrev.com/d52bfdeb3481d27b40476e2f7d4f886f089e2d9b/third_party/blink/renderer/platform/heap/heap_test.cc
[modify] https://crrev.com/d52bfdeb3481d27b40476e2f7d4f886f089e2d9b/third_party/blink/renderer/platform/heap/incremental_marking_test.cc

Sign in to add a comment