Issue metadata
Sign in to add a comment
|
gl_unittests failure on Linux Debug NVidia bot due to CFI-safe refactor |
||||||||||||||||||||||
Issue descriptiongl_unittests consistently fails on this bot since https://chromium.googlesource.com/chromium/src/+/a71b54d85c18694c4c4ec34392f87c7d5c8a8f27 landed. See error cases here: https://ci.chromium.org/buildbot/chromium.gpu/Linux%20Debug%20%28NVIDIA%29/87017
,
Dec 15 2017
A bit more info. Errors from the builder look like: [2/46] EGLInitializationDisplaysTest.NoExtensions (0 ms) [ RUN ] GLXApiTest.DisabledExtensionBitTest [8126:8126:1214/205702.556506:5873041330:FATAL:protected_memory.h(189)] Check failed: ptr >= ProtectedMemoryStart && ptr_end <= ProtectedMemoryEnd. #0 0x7ff6976a69dd base::debug::StackTrace::StackTrace() #1 0x7ff6976a4e1c base::debug::StackTrace::StackTrace() #2 0x7ff69772beba logging::LogMessage::~LogMessage() #3 0x00000030256e base::AutoWritableMemory::AutoWritableMemory() #4 0x00000030a79a base::AutoWritableMemory::Create<>() #5 0x00000030a42d gl::GLXApiTest::SetUp() #6 0x000000383c1e testing::internal::HandleSehExceptionsInMethodIfSupported<>() #7 0x000000376462 testing::internal::HandleExceptionsInMethodIfSupported<>() #8 0x000000360984 testing::Test::Run() #9 0x00000036134d testing::TestInfo::Run() #10 0x000000361dbc testing::TestCase::Run() #11 0x00000036da7c testing::internal::UnitTestImpl::RunAllTests() #12 0x000000383d2e testing::internal::HandleSehExceptionsInMethodIfSupported<>() #13 0x000000377b22 testing::internal::HandleExceptionsInMethodIfSupported<>() #14 0x00000036d68e testing::UnitTest::Run() #15 0x00000050d0e1 RUN_ALL_TESTS() #16 0x00000050a0d2 base::TestSuite::Run() #17 0x0000003112fd _ZN4base8internal13FunctorTraitsIMNS_9TestSuiteEFivEvE6InvokeIPN12_GLOBAL__N_111GlTestSuiteEJEEEiS4_OT_DpOT0_ #18 0x000000311244 _ZN4base8internal12InvokeHelperILb0EiE8MakeItSoIRKMNS_9TestSuiteEFivEJPN12_GLOBAL__N_111GlTestSuiteEEEEiOT_DpOT0_ #19 0x0000003111f5 _ZN4base8internal7InvokerINS0_9BindStateIMNS_9TestSuiteEFivEJNS0_17UnretainedWrapperIN12_GLOBAL__N_111GlTestSuiteEEEEEEFivEE7RunImplIRKS5_RKNSt3__15tupleIJS9_EEEJLm0EEEEiOT_OT0_NSG_16integer_sequenceImJXspT1_EEEE #20 0x00000031113c _ZN4base8internal7InvokerINS0_9BindStateIMNS_9TestSuiteEFivEJNS0_17UnretainedWrapperIN12_GLOBAL__N_111GlTestSuiteEEEEEEFivEE3RunEPNS0_13BindStateBaseE #21 0x00000051dcbd _ZNKR4base17RepeatingCallbackIFvvEE3RunEv #22 0x00000051e847 base::(anonymous namespace)::LaunchUnitTestsInternal() #23 0x00000051e6b5 base::LaunchUnitTests() #24 0x000000310a90 main #25 0x7ff696442f45 __libc_start_main #26 0x0000002b302a _start [3/46] GLXApiTest.DisabledExtensionBitTest (CRASHED) Full error text here: https://logs.chromium.org/v/?s=chromium%2Fbb%2Fchromium.gpu%2FLinux_Debug__NVIDIA_%2F87017%2F%2B%2Frecipes%2Fsteps%2Fgl_unittests_on_NVIDIA_GPU_on_Linux_on_Ubuntu%2F0%2Fstdout Additional build failures can be seen here: https://ci.chromium.org/buildbot/chromium.gpu/Linux%20Debug%20%28NVIDIA%29/87054 https://ci.chromium.org/buildbot/chromium.gpu/Linux%20Debug%20%28NVIDIA%29/87053 https://ci.chromium.org/buildbot/chromium.gpu/Linux%20Debug%20%28NVIDIA%29/87052 Full list (at time of posting): https://ci.chromium.org/buildbot/chromium.gpu/Linux%20Debug%20%28NVIDIA%29/?limit=200
,
Dec 15 2017
Note: unfortunately we don't have the capacity to run the GPU tests on the debug trybots, but usually the release trybots, including linux_chromium_rel_ng, would catch these failures since they build with dcheck_always_on=true. Per https://cs.chromium.org/chromium/src/base/memory/protected_memory.h?sq=package:chromium&l=28 it's not clear to me why this was only caught on the Debug bot. Could some of the bots be misconfigured and not running lld?
,
Dec 15 2017
The gl_unittests failure on the Linux Intel 630 bot is similar too: https://ci.chromium.org/buildbot/chromium.gpu.fyi/Linux%20Release%20%28Intel%20HD%20630%29/1553
,
Dec 15 2017
I've taken a look and this is occurring because of a peculiarity of how ProtectedMemory works with the component build and how the GL unittests are structured. With component builds every component has it's own separate protected memory section, so AutoWritableMemory::Create can only check against its own PM section. In this case, the unit tests under ui/gl/ are being compiled into gl_ or gpu_unittests but the writable memory section is actually under libgl_wrapper.so so this failure occurs. This happens because users of g_driver_* happen to know about its implementation as a ProtectedMemory container--the right way to implement this might be to hide that implementation so downstream users don't have to deal with ProtectedMemory at all, fixing this issue and simplifying the implementation. I'll take a look to see what that looks like.
,
Jan 9 2018
Closing for now as this change will need to be rewritten entirely. |
|||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||
Comment 1 by bugdroid1@chromium.org
, Dec 15 2017