New issue
Advanced search Search tips

Issue 680947 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner:
Closed: Mar 2017
Cc:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: ----
Type: Bug

Blocked on:
issue 685244

Blocking:
issue 82385



Sign in to add a comment

V8 CL crashes Clang on Win64

Project Member Reported by titzer@chromium.org, Jan 13 2017

Issue description

I have a V8 Cl that reproducibly crashes clang on Win64.

https://codereview.chromium.org/2630553002/#ps100001

Build log here:
https://uberchromegw.corp.google.com/i/client.v8/builders/V8%20Win64%20-%20clang/builds/4471/steps/compile/logs/stdio

Snippet of log that contains the failure.

[752/802] CXX obj/test/unittests/unittests/function-body-decoder-unittest.obj
FAILED: obj/test/unittests/unittests/function-body-decoder-unittest.obj 
E:\b\build\slave\cache\cipd\goma/gomacc.exe ../../third_party/llvm-build/Release+Asserts/bin/clang-cl.exe /nologo /showIncludes /FC @obj/test/unittests/unittests/function-body-decoder-unittest.obj.rsp /c ../../test/unittests/wasm/function-body-decoder-unittest.cc /Foobj/test/unittests/unittests/function-body-decoder-unittest.obj /Fd"obj/test/unittests/unittests_cc.pdb"
Assertion failed: (NumGaps == 0 || Bias < MaxDefRange) && "large ranges should not have gaps", file E:\b\build\slave\win_upload_clang\build\src\third_party\llvm\lib\MC\MCCodeView.cpp, line 531
Wrote crash dump file "C:\Users\CHROME~2\AppData\Local\Temp\goma_temp.4512\clang-cl.exe-b70b88.dmp"
#0 0x0000000140ad6aa6 (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x1506aa6)
#1 0x00000001427148db (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x31448db)
#2 0x000000014270ebf4 (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x313ebf4)
#3 0x000000014270125e (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x313125e)
#4 0x00000001427012fa (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x31312fa)
#5 0x0000000140942759 (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x1372759)
#6 0x0000000140930728 (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x1360728)
#7 0x000000014092f521 (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x135f521)
#8 0x000000014092fa2a (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x135fa2a)
#9 0x0000000140923fdc (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x1353fdc)
#10 0x0000000141165f1b (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x1b95f1b)
#11 0x00000001406e1118 (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x1111118)
#12 0x00000001406e177f (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x111177f)
#13 0x0000000140d33c0b (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x1763c0b)
#14 0x00000001426c5192 (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x30f5192)
#15 0x000000014110961c (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x1b3961c)
#16 0x00000001417dd4b2 (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x220d4b2)
#17 0x00000001410cf84c (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x1aff84c)
#18 0x00000001410c1181 (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x1af1181)
#19 0x0000000141141fe6 (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x1b71fe6)
#20 0x000000013f5d5f65 (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x5f65)
#21 0x000000013f5d42a2 (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x42a2)
#22 0x00000001426fa9bd (E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe+0x312a9bd)
#23 0x0000000077a159bd (C:\Windows\system32\kernel32.dll+0x159bd)
#24 0x0000000077c4a2e1 (C:\Windows\SYSTEM32\ntdll.dll+0x2a2e1)
clang-cl.exe: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 4.0.0 (trunk 289944)
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: E:\b\build\slave\win64-clang\build\v8\third_party\llvm-build\Release+Asserts\bin
clang-cl.exe: note: diagnostic msg: PLEASE submit a bug report to http://llvm.org/bugs/ and include the crash backtrace, preprocessed source, and associated run script.
clang-cl.exe: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-cl.exe: note: diagnostic msg: C:\Users\CHROME~2\AppData\Local\Temp\goma_temp.4512\function-body-decoder-unittest-273138.sh
clang-cl.exe: note: diagnostic msg: 

********************
[753/802] CXX obj/test/unittests/unittests/bytecode-register-allocator-unittest.obj
[754/802] CXX obj/test/unittests/unittests/constant-array-builder-unittest.obj
[755/802] CXX obj/test/unittests/unittests/loop-assignment-analysis-unittest.obj
[756/802] LINK v8_simple_wasm_data_section_fuzzer.exe v8_simple_wasm_data_section_fuzzer.exe.pdb
[757/802] LINK v8_simple_wasm_function_sigs_section_fuzzer.exe v8_simple_wasm_function_sigs_section_fuzzer.exe.pdb
[758/802] LINK v8_simple_wasm_fuzzer.exe v8_simple_wasm_fuzzer.exe.pdb
[759/802] CXX obj/test/unittests/unittests/value-serializer-unittest.obj
[760/802] CXX obj/test/unittests/unittests/bytecode-decoder-unittest.obj
ninja: build stopped: subcommand failed.
step returned non-zero exit code: 1
@@@STEP_FAILURE@@@


 

Comment 1 by titzer@chromium.org, Jan 13 2017

Cc: h...@chromium.org

Comment 2 by thakis@chromium.org, Jan 13 2017

Thanks for the report, I can repro. (symbol_level=0 hides the bug; only happens in release builds.) These args.gn repro:

is_debug = false
is_clang = true

reducing...

function-body-decoder-unittest.zip
2.2 MB Download

Comment 3 by thakis@chromium.org, Jan 13 2017

Some notes:

- I had to remove __movsb, __movsd, __movsw, __movsq, __stosd, __stosw, __stosq to build the repro file on my linux box, else the compile would fail with things like:

C:\src\chrome\src\third_party\llvm-build\Release+Asserts\bin\..\lib\clang\4.0.0\include\intrin.h(1014,27):  error: asm-specifier for input or output variable conflicts with asm clobber list
                        : "%edi", "%esi", "%ecx");
                          ^


That's surprising to me.

- For reasons I don't understand, the preprocessed file seems to end up with to copies of intrin.h -- but maybe that's just the way -frewrite-includes (what creates the crash files) works

- The file builds for 21s before it crashes on my linux box. delta will take forever in this setup.

Comment 4 by thakis@chromium.org, Jan 13 2017

- does not repro in 32-bit builds

Comment 5 by thakis@chromium.org, Jan 13 2017

It looks like this happens because something believes that FunctionBodyDecoderTest has too many tests. (It has 202.)

If I comment out an arbitrary test, things compile fine.

This is of course a compiler bug, but as a workaround you could
a) fuse some of the If_ tests into a single If test
b) consider splitting that fiel up a bit, it's 2.7k lines and takes like 20 seconds to build -- so that's probably a good idea anyhow.

We'll get the compiler crash fixed, and hopefully it won't take long, but if you don't want to wait for that those are ideas for you not being blocked on us.

Comment 6 by titzer@chromium.org, Jan 15 2017

Thanks for investigating. I'll follow your suggestion and collapse a couple of tests together.

It's rather amazing that that file takes so long to compile, as it doesn't seem to do anything too crazy, except have a lot of tests for one class. I guess it's gmock then.

Comment 7 by thakis@chromium.org, Jan 15 2017

Ima Go out on a limb and claim that gmock will compile even slower.

Comment 8 by titzer@chromium.org, Jan 15 2017

Sorry, I meant gtest. I don't want to switch to gmock :O

Comment 9 by thakis@chromium.org, Jan 23 2017

Blocking: 82385
Status: ExternalDependency (was: Untriaged)
Filed https://llvm.org/bugs/show_bug.cgi?id=31726
Blockedon: 685244
Owner: titzer@chromium.org
titzer: This is now fixed in chromium's clang. You can try to remove workarounds you put in for this. After that, this can be closed.
titzer: ping. I'd like to close this.
Status: WontFix (was: ExternalDependency)
Closing with WontFix, as the external dependency is now resolved.

Thanks!

Sign in to add a comment