New issue
Advanced search Search tips

Issue 884427 link

Starred by 5 users

Issue metadata

Status: Fixed
Owner:
Closed: Sep 24
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug

Blocked on:
issue 880827



Sign in to add a comment

Assertion failed: Layout && "Unable to find record layout information for type", file C:\b\c\b\ToTWin64_dbg_\src\third_party\llvm\tools\clang\lib\CodeGen\CodeGenTypes.cpp, line 770 when building chrome/win without goma

Project Member Reported by thakis@chromium.org, Sep 14

Issue description

https://logs.chromium.org/v/?s=chromium%2Fbb%2Fchromium.clang%2FToTWin64_dbg_%2F1160%2F%2B%2Frecipes%2Fsteps%2Fcompile%2F0%2Fstdout

FAILED: obj/third_party/blink/renderer/modules/accessibility/accessibility/ax_inline_text_box.obj 
../../third_party/llvm-build/Release+Asserts/bin/clang-cl.exe /nologo /showIncludes  -imsvc..\..\third_party\depot_tools\win_toolchain\vs_files\3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c\win_sdk\Include\10.0.17134.0\um -imsvc..\..\third_party\depot_tools\win_toolchain\vs_files\3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c\win_sdk\Include\10.0.17134.0\shared -imsvc..\..\third_party\depot_tools\win_toolchain\vs_files\3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c\win_sdk\Include\10.0.17134.0\winrt -imsvc..\..\third_party\depot_tools\win_toolchain\vs_files\3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c\win_sdk\Include\10.0.17134.0\ucrt -imsvc..\..\third_party\depot_tools\win_toolchain\vs_files\3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c\VC\Tools\MSVC\14.14.26428\include -imsvc..\..\third_party\depot_tools\win_toolchain\vs_files\3bc0ec615cf20ee342f3bc29bc991b5ad66d8d2c\VC\Tools\MSVC\14.14.26428\atlmfc\include -DV8_DEPRECATION_WARNINGS -DUSE_AURA=1 -DNO_TCMALLOC -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DCHROMIUM_BUILD -DFIELDTRIAL_TESTING_ENABLED "-DCR_CLANG_REVISION=\"342245\"" -D_HAS_NODISCARD -D_HAS_EXCEPTIONS=0 -DCOMPONENT_BUILD -D__STD_C -D_CRT_RAND_S -D_CRT_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_DEPRECATE -D_ATL_NO_OPENGL -D_WINDOWS -DCERT_CHAIN_PARA_HAS_EXTRA_FIELDS -DPSAPI_VERSION=1 -DWIN32 -D_SECURE_ATL -D_USING_V110_SDK71_ -DWINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP -DWIN32_LEAN_AND_MEAN -DNOMINMAX -D_UNICODE -DUNICODE -DNTDDI_VERSION=0x0A000002 -D_WIN32_WINNT=0x0A00 -DWINVER=0x0A00 -D_DEBUG -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -DUSING_V8_SHARED -DBLINK_MODULES_IMPLEMENTATION=1 -DBLINK_IMPLEMENTATION=1 -DINSIDE_BLINK -DWEBP_EXTERN=extern -DUSE_EGL -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DUSE_CHROMIUM_ICU=1 -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -DUCHAR_TYPE=wchar_t -DGOOGLE_PROTOBUF_NO_RTTI -DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER -DPROTOBUF_USE_DLLS -DBORINGSSL_SHARED_LIBRARY -DWEBRTC_NON_STATIC_TRACE_EVENT_HANDLERS=0 -DWEBRTC_CHROMIUM_BUILD -DWEBRTC_WIN -DABSL_ALLOCATOR_NOTHROW=1 -DNO_MAIN_THREAD_WRAPPING -DSK_IGNORE_LINEONLY_AA_CONVEX_PATH_OPTS -DSK_HAS_PNG_LIBRARY -DSK_HAS_WEBP_LIBRARY -DSK_HAS_JPEG_LIBRARY -DSKIA_DLL -DGR_GL_IGNORE_ES3_MSAA=0 -DSKCMS_API=__declspec(dllexport) -DSK_SUPPORT_GPU=1 "-DSK_GPU_WORKAROUNDS_HEADER=\"gpu/config/gpu_driver_bug_workaround_autogen.h\"" -DGR_GL_FUNCTION_TYPE=__stdcall -D__STD_C -D_CRT_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_DEPRECATE -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -DWTF_USE_WEBAUDIO_FFMPEG=1 -DSUPPORT_WEBGL2_COMPUTE_CONTEXT=1 -DWTF_USE_DEFAULT_RENDER_THEME=1 -DUSE_LIBJPEG_TURBO=1 -DUSING_V8_SHARED -DV8_ENABLE_CHECKS -DV8_DEPRECATION_WARNINGS -DPNG_USE_DLL -DPNG_NO_MODULEDEF -DUSING_V8_SHARED -DV8_ENABLE_CHECKS -DV8_DEPRECATION_WARNINGS -DLIBXSLT_STATIC -I../.. -Igen -I../../third_party/libyuv/include -I../../third_party/libwebp/src -I../../third_party/wtl/include -I../../third_party/khronos -I../../gpu -I../../third_party/ced/src -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -I../../third_party/protobuf/src -I../../third_party/protobuf/src -Igen/protoc_out -I../../third_party/boringssl/src/include -I../../third_party/webrtc_overrides -I../../third_party/webrtc -I../../third_party/abseil-cpp -I../../skia/config -I../../skia/ext -I../../third_party/skia/include/c -I../../third_party/skia/include/config -I../../third_party/skia/include/core -I../../third_party/skia/include/effects -I../../third_party/skia/include/encode -I../../third_party/skia/include/gpu -I../../third_party/skia/include/images -I../../third_party/skia/include/lazy -I../../third_party/skia/include/pathops -I../../third_party/skia/include/pdf -I../../third_party/skia/include/pipe -I../../third_party/skia/include/ports -I../../third_party/skia/include/utils -I../../third_party/skia/src/gpu -I../../third_party/skia/src/sksl -I../../third_party/skia/modules/skottie/include -I../../third_party/angle/include -I../../third_party/angle/src/common/third_party/base -Igen/angle -I../../third_party/blink/renderer/platform/wtf/os-win32 -I../../third_party/libjpeg_turbo -I../../v8/include -Igen/v8/include -I../../third_party/iccjpeg -I../../third_party/libpng -I../../third_party/zlib -I../../third_party/ots/include -I../../v8/include -Igen/v8/include -I../../third_party/libxml/src/include -I../../third_party/libxml/win32/include -I../../third_party/libxslt/src -I../../third_party/snappy/src -I../../third_party/snappy/win32 /utf-8 /X -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -fcolor-diagnostics -fmerge-all-constants -Xclang -mllvm -Xclang -instcombine-lower-dbg-declare=0 -no-canonical-prefixes -fcomplete-member-pointers /Gy /FS /bigobj /d2FastFail /Zc:sizedDealloc- -fmsc-version=1911 -m64 /Brepro /W4 -Wimplicit-fallthrough -Wthread-safety /WX /wd4091 /wd4127 /wd4251 /wd4275 /wd4312 /wd4324 /wd4351 /wd4355 /wd4503 /wd4589 /wd4611 /wd4100 /wd4121 /wd4244 /wd4505 /wd4510 /wd4512 /wd4610 /wd4838 /wd4995 /wd4996 /wd4456 /wd4457 /wd4458 /wd4459 /wd4200 /wd4201 /wd4204 /wd4221 /wd4245 /wd4267 /wd4305 /wd4389 /wd4702 /wd4701 /wd4703 /wd4661 /wd4706 /wd4715 -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-covered-switch-default -Wno-unneeded-internal-declaration -Wno-undefined-var-template -Wno-nonportable-include-path -Wno-user-defined-warnings -Wno-unused-lambda-capture -Wno-null-pointer-arithmetic -Wno-enum-compare-switch -Wno-ignored-pragma-optimize /Od /Ob0 /GF /MDd -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -Wno-shorten-64-to-32 /wd4305 /wd4324 /wd4714 /wd4800 /wd4996 -Wglobal-constructors /Z7 -fno-standalone-debug /FI../../third_party/blink/renderer/core/precompile_core.h -Wno-inconsistent-missing-override /wd4344 /wd4706 /wd4291 -DLIBXML_STATIC= /Fpobj/third_party/blink/renderer/modules/accessibility/accessibility_cc.pch /Yu../../third_party/blink/renderer/core/precompile_core.h -Wno-undefined-bool-conversion -Wno-tautological-undefined-compare /TP /wd4577 /GR- /c ../../third_party/blink/renderer/modules/accessibility/ax_inline_text_box.cc /Foobj/third_party/blink/renderer/modules/accessibility/accessibility/ax_inline_text_box.obj /Fd"obj/third_party/blink/renderer/modules/accessibility/accessibility_cc.pdb"
Assertion failed: Layout && "Unable to find record layout information for type", file C:\b\c\b\ToTWin64_dbg_\src\third_party\llvm\tools\clang\lib\CodeGen\CodeGenTypes.cpp, line 770
LLVMSymbolizer: error reading file: 'C:\b\c\b\ToTWin64_dbg_\src\third_party\llvm-build\Release+Asserts\bin\clang.pdb': An unknown error has occurred. HRESULT: 0x8007007E: Calling NoRegCoCreate
LLVMSymbolizer: error reading file: 'kernel32.pdb': An unknown error has occurred. HRESULT: 0x8007007E: Calling NoRegCoCreate
LLVMSymbolizer: error reading file: 'ntdll.pdb': An unknown error has occurred. HRESULT: 0x8007007E: Calling NoRegCoCreate
#0 0x0000000140b03855 (C:\b\c\b\ToTWin64_dbg_\src\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x1853855)
#1 0x0000000142705d97 (C:\b\c\b\ToTWin64_dbg_\src\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x3455d97)
#2 0x00000001426f3310 (C:\b\c\b\ToTWin64_dbg_\src\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x3443310)

 
Components: Build
https://ci.chromium.org/buildbot/chromium.clang/ToTLinux/ was also red in compile and is now red in tests, so maybe this is already resolved at head and the win bots are just behind.
Still broken.
First instance of this failure:
https://ci.chromium.org/buildbot/chromium.clang/ToTWin64%28dbg%29/1150

Assuming this is caused by upstream changes, our LLVM rev range would be:
bad: r342111
good: r342102

Pretty small. I tried to get a reproducer, but I must've gotten my gn args wrong, because it didn't crash.
This bug looks related to PCH. It looks like we auto-enable PCH without goma, and auto-disable it with goma. Normally to repro problems quickly, I build with goma -j900 to get to the crashing TU, and then rebuild just that TU with ToT clang-cl. That won't work for PCH-related issues, I guess. I suppose it makes it more important to finish deploying the crash uploader.

Should we be continuously testing PCH builds on the ToT waterfall? We definitely don't want to ship a clang with broken PCH, since we want users to be able to build Chromium without goma. I imagine that PCH builds are inherently more fragile than non-PCH builds, but is it possible that by testing PCH builds only, we will miss some goma-specific failures? I suppose we will inevitably catch those types of non-PCH or goma-only failures when we run try jobs on our clang roll change after uploading the new package, but should we have more continuous monitoring?

There are no clang changes in the LLVM revision range, so this must have been caused by some Chromium side change. It's possible that it will reproduce with pinned clang without goma. I'll check that next. If so, would it be reasonable to revert the chromium cl that caused this while we fix the bug?
> It's possible that it will reproduce with pinned clang without goma. I'll check that next.

I believe I was running into this when trying to build Chromium; see my report in  Issue 885008 .
I'm not aware of any issues we missed due to our only testing pchs on the tot bots.

Someone one irc claimed that they're seeing this crash with pinned clang on irc. I wondered how that could happen given all the public bots are happy -- but that's because none of them use pchs.

So yes, this is likely broken with pinned clang too.
 Issue 885008  has been merged into this issue.
Cc: h...@chromium.org thakis@chromium.org
 Issue 885324  has been merged into this issue.
From the dupe, a stack:

1.      ../../third_party/blink/renderer/modules/accessibility/ax_object.h:1088:2: current parser token ';'
2.      ../../third_party/blink/renderer/modules/accessibility/ax_object.h:164:1: parsing namespace 'blink'
3.      ../../third_party/blink/renderer/modules/accessibility/ax_object.h:166:1: parsing struct/union/class body 'blink::AXObject'
4.      ../../third_party/blink/renderer/modules/accessibility/ax_object.h:295:32: LLVM IR generation of inline function 'blink::swap'
5.      ../../third_party/blink/renderer/modules/accessibility/ax_object.h:295:32: Generating code for declaration 'blink::swap'
6.      /usr/local/google/home/tmathmeyer/chromium/src/out/Windows/../../third_party/blink/renderer/platform/heap/heap_page.h:717:3 <Spelling=../../third_part
y/blink/renderer/platform/wtf/allocator.h:110:9>: LLVM IR generation of declaration 'blink::BaseArena::operator new'
7.      ../../third_party/blink/renderer/modules/accessibility/ax_object.h:243:5: Generating code for declaration 'blink::AXObject::InOrderTraversalIterator::
InOrderTraversalIterator'
#0 0x00000000020d5c84 (../../third_party/llvm-build/Release+Asserts/bin/clang-cl+0x20d5c84)
#1 0x00000000020d3b1e llvm::sys::RunSignalHandlers() (../../third_party/llvm-build/Release+Asserts/bin/clang-cl+0x20d3b1e)
#2 0x00000000020d5e42 (../../third_party/llvm-build/Release+Asserts/bin/clang-cl+0x20d5e42)
#3 0x00007fb9c09370c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x110c0)
#4 0x00007fb9bf6f2fcf gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x32fcf)
#5 0x00007fb9bf6f43fa abort (/lib/x86_64-linux-gnu/libc.so.6+0x343fa)
#6 0x00007fb9bf6ebe37 (/lib/x86_64-linux-gnu/libc.so.6+0x2be37)
#7 0x00007fb9bf6ebee2 (/lib/x86_64-linux-gnu/libc.so.6+0x2bee2)
#8 0x00000000023bf34c clang::CodeGen::CodeGenTypes::getCGRecordLayout(clang::RecordDecl const*) (../../third_party/llvm-build/Release+Asserts/bin/clang-cl+0x2
3bf34c)
...
#98 0x000000000335c666 clang::ParseAST(clang::Sema&, bool, bool) (../../third_party/llvm-build/Release+Asserts/bin/clang-cl+0x335c666)
#99 0x00000000027751c0 clang::FrontendAction::Execute() (../../third_party/llvm-build/Release+Asserts/bin/clang-cl+0x27751c0)
#100 0x000000000271d6b1 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (../../third_party/llvm-build/Release+Asserts/bin/clang-cl+0x271d6b1)
#101 0x0000000002819399 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (../../third_party/llvm-build/Release+Asserts/bin/clang-cl+0x2819399)
#102 0x00000000008d8694 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (../../third_party/llvm-build/Release+Asserts/bin/clang-cl+0x8d8694)
#103 0x00000000008d5e95 main (../../third_party/llvm-build/Release+Asserts/bin/clang-cl+0x8d5e95)
#104 0x00007f078c0232b1 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202b1)
#105 0x00000000008d2e3d _start (../../third_party/llvm-build/Release+Asserts/bin/clang-cl+0x8d2e3d)
clang-cl: error: unable to execute command: Aborted
clang-cl: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 8.0.0 (trunk 340925)
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: ../../third_party/llvm-build/Release+Asserts/bin
clang-cl: note: diagnostic msg: PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run
script.
clang-cl: note: diagnostic msg:
********************
(The dupe makes the point that this affects everyone doing cross builds and has args.gn that repro)
Summary: Assertion failed: Layout && "Unable to find record layout information for type", file C:\b\c\b\ToTWin64_dbg_\src\third_party\llvm\tools\clang\lib\CodeGen\CodeGenTypes.cpp, line 770 when building chrome/win without goma (was: Assertion failed: Layout && "Unable to find record layout information for type", file C:\b\c\b\ToTWin64_dbg_\src\third_party\llvm\tools\clang\lib\CodeGen\CodeGenTypes.cpp, line 770 on totwin bots)
For people blocked on this, from the first dupe:

"""Modifying build/config/pch.gni to add "&& !is_clang" to "enable_precompiled_headers" has allowed me to build."""

(This makes the build slower, so don't forget to undo once we have fixed this)
I wasn't able to come up with a good test case for this, but it looks like this bug was caused by some special-case code for dllexport inline friend function definitions added back in r264841. I simplified the code in r342516, and that seems to fix the issue.
Blockedon: 880827
Blocking: -880827
Owner: r...@chromium.org
Status: ExternalDependency (was: Untriaged)
We rolled in a fixed clang in #592531, if you're synced past that you should be good (assuming the roll sticks).
> Should we be continuously testing PCH builds on the ToT waterfall? We definitely don't want to ship a clang with broken PCH, since we want users to be able to build Chromium without goma. I imagine that PCH builds are inherently more fragile than non-PCH builds, but is it possible that by testing PCH builds only, we will miss some goma-specific failures? I suppose we will inevitably catch those types of non-PCH or goma-only failures when we run try jobs on our clang roll change after uploading the new package, but should we have more continuous monitoring?

I think the current setup is probably fine: as you say, the PCH build is inherently more fragile so having that enabled gives us more coverage. It does mean the non-PCH case doesn't get tested as well, but probably the diff in problem surface isn't that big, and we'll see such failures when running tryjobs.
Status: Fixed (was: ExternalDependency)

Sign in to add a comment