Open Bug 1363989 Opened 3 years ago Updated 6 months ago

webrender build fails on windows with strange-looking path

Categories

(Core :: Graphics: WebRender, defect, P3)

x86_64
Windows 7
defect

Tracking

()

Tracking Status
firefox56 --- unaffected
firefox57 --- unaffected

People

(Reporter: bagder, Unassigned)

References

(Blocks 1 open bug)

Details

(Whiteboard: [gfx-noted])

Attachments

(1 file)

I ran into this issue and I'm stuck.

I build current gecko-dev (from github), updated today, on Windows 7 using visual studio 2015 in a VM on my Linux box. I've built Firefox on this setup regularly over several years.

Today my build stops with many build errors and the first one is the webrender. See attachment for the build log from my mach invoke.

What's weird with the particular errors is that the errors reported reports paths that seems to have figured out some underlying path from under the VM and not only the paths within the VM itself.

I run my VM with a virtual drive called E: that is in fact my home Linux dir exposed as an E: drive to Windows. It allows me to edit the files and work with git etc in Linux land, but still compile and build the files in Windows land.

I build in windows in the /e/win-src/gecko-dev directory and I use mozilla-build 2.2 (I made sure to install the latest) and my Virtualbox 5.1.22 (on Debian) runs the latest "guest tools".

In this error case I get errors such as:

   Compiling webrender v0.36.0 (file:///E:/win-src/gecko-dev/gfx/webrender)
error: couldn't read E:\win-src\gecko-dev\gfx\webrender\src\UNC/vboxsrv/daniel/win-src/gecko-dev/gfx/webrender/res/cs_blur.vs.glsl: The system cannot find the file specified. (os error 2)
 --> e:/win-src/gecko-dev/obj-i686-pc-mingw32/toolkit/library\i686-pc-windows-msvc\debug\build\webrender-ed4c0bb21d24c174\out/shaders.rs:7:28
  |
7 |     h.insert("cs_blur.vs", include_str!("UNC/vboxsrv/daniel/win-src/gecko-dev/gfx/webrender/res/cs_blur.vs.glsl"));
  |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Obviously the path gets seriously messed up. Any suggestions on what I can do next to track this down and fix it?
This error comes from the webrender crate [1], specifically it looks like a file generated by its build script [2], and perhaps the listed apology [3] is relevant? To be clear, though, I don't actually know what any of this code is going, just trying to help narrow it down to the source!

(may be good to cc some webrender folks)

[1]: https://github.com/servo/webrender/tree/master/webrender
[2]: https://github.com/servo/webrender/blob/master/webrender/build.rs
[3]: https://github.com/servo/webrender/blob/7f23715c7e6ad101f56813f8b5e5106b585d3047/webrender/build.rs#L24-L25
This bug feels more appropriate in the webrender component since the Firefox build system is just running `cargo build` here. If you feel differently, please move to Core :: Build Config.
Component: Build Config → Graphics: WebRender
Product: Firefox → Core
I would first try building webrender standalone by cloning it from github.com/servo/webrender and running `cargo build ` inside the webrender subfolder. If that fails in the same way it will probably need to be fixed in webrender upstream and it would be better to file an issue there. In the meantime if you just need a build you can disable the webrender part of the build by putting `ac_add_options --disable-webrender` in your mozconfig.
That triggers a different build error for me. This complains on X86 vs x64 conflicts so I'm not sure how helpful this is.

I cloned "https://github.com/servo/webrender" just now and I "cd webrender" in that directory (ending up in /e/win-src/webrender/webrender). Then I run 'cargo build' and here's the last bunch of lines I get:


 Downloading winapi v0.2.8
 Downloading winapi-build v0.1.1
 Downloading gdi32-sys v0.2.0
 Downloading user32-sys v0.2.0
   Compiling winapi-build v0.1.1
   Compiling unicode-xid v0.0.4
   Compiling thread_profiler v0.1.1
   Compiling bitflags v0.7.0
   Compiling futures v0.1.13
   Compiling winapi v0.2.8
   Compiling lazy_static v0.2.2
   Compiling user32-sys v0.2.0
   Compiling webrender v0.39.0 (file:///E:/win-src/webrender/webrender)
error: linking with `link.exe` failed: exit code: 1112
  |
  = note: "c:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\amd64
_x86\\link.exe" "/NOLOGO" "/NXCOMPAT" "/LIBPATH:C:\\Users\\daniel\\.multirust\\t
oolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\
lib" "e:\\win-src\\webrender\\target\\debug\\build\\user32-sys-c36fef247f8a00cf\
\build_script_build-c36fef247f8a00cf.0.o" "/OUT:e:\\win-src\\webrender\\target\\
debug\\build\\user32-sys-c36fef247f8a00cf\\build_script_build-c36fef247f8a00cf.e
xe" "/OPT:REF,NOICF" "/DEBUG" "/LIBPATH:e:\\win-src\\webrender\\target\\debug\\d
eps" "/LIBPATH:C:\\Users\\daniel\\.multirust\\toolchains\\stable-x86_64-pc-windo
ws-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "\\\\vboxsrv\\daniel\\win-sr
c\\webrender\\target\\debug\\deps\\libbuild-be2484a2a757a053.rlib" "C:\\Users\\d
aniel\\.multirust\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_
64-pc-windows-msvc\\lib\\libstd-0a78323911070f99.rlib" "C:\\Users\\daniel\\.mult
irust\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-window
s-msvc\\lib\\librand-c279a51d66700350.rlib" "C:\\Users\\daniel\\.multirust\\tool
chains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib
\\libcollections-d7bf31a4ca1ea637.rlib" "C:\\Users\\daniel\\.multirust\\toolchai
ns\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\li
bstd_unicode-d367c3ba0db49600.rlib" "C:\\Users\\daniel\\.multirust\\toolchains\\
stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libpan
ic_unwind-2d4bf02140c11dcb.rlib" "C:\\Users\\daniel\\.multirust\\toolchains\\sta
ble-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libunwind
-add7a84d7e82d084.rlib" "C:\\Users\\daniel\\.multirust\\toolchains\\stable-x86_6
4-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liblibc-84688accbc
86d6b7.rlib" "C:\\Users\\daniel\\.multirust\\toolchains\\stable-x86_64-pc-window
s-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc-fe2e68b21f0bdd7a.rli
b" "C:\\Users\\daniel\\.multirust\\toolchains\\stable-x86_64-pc-windows-msvc\\li
b\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc_system-7fc0381594c93f56.rlib"
"C:\\Users\\daniel\\.multirust\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\
rustlib\\x86_64-pc-windows-msvc\\lib\\libcore-ea9d77e7c23fe65c.rlib" "C:\\Users\
\daniel\\.multirust\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x8
6_64-pc-windows-msvc\\lib\\libcompiler_builtins-91b619d34dd1f5aa.rlib" "advapi32
.lib" "ws2_32.lib" "userenv.lib" "shell32.lib" "msvcrt.lib"
  = note: msvcrt.lib(chkstk.obj) : fatal error LNK1112: module machine type 'X86
' conflicts with target machine type 'x64'


error: aborting due to previous error

error: Could not compile `user32-sys`.
Build failed, waiting for other jobs to finish...
error: linking with `link.exe` failed: exit code: 1112
  |
  = note: "c:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\BIN\\amd64
_x86\\link.exe" "/NOLOGO" "/NXCOMPAT" "/LIBPATH:C:\\Users\\daniel\\.multirust\\t
oolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\
lib" "e:\\win-src\\webrender\\target\\debug\\build\\webrender-5547de711aa71ad7\\
build_script_build-5547de711aa71ad7.0.o" "/OUT:e:\\win-src\\webrender\\target\\d
ebug\\build\\webrender-5547de711aa71ad7\\build_script_build-5547de711aa71ad7.exe
" "/OPT:REF,NOICF" "/DEBUG" "/LIBPATH:e:\\win-src\\webrender\\target\\debug\\dep
s" "/LIBPATH:C:\\Users\\daniel\\.multirust\\toolchains\\stable-x86_64-pc-windows
-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "C:\\Users\\daniel\\.multirust
\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msv
c\\lib\\libstd-0a78323911070f99.rlib" "C:\\Users\\daniel\\.multirust\\toolchains
\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libr
and-c279a51d66700350.rlib" "C:\\Users\\daniel\\.multirust\\toolchains\\stable-x8
6_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcollections-
d7bf31a4ca1ea637.rlib" "C:\\Users\\daniel\\.multirust\\toolchains\\stable-x86_64
-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd_unicode-d367
c3ba0db49600.rlib" "C:\\Users\\daniel\\.multirust\\toolchains\\stable-x86_64-pc-
windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libpanic_unwind-2d4bf02
140c11dcb.rlib" "C:\\Users\\daniel\\.multirust\\toolchains\\stable-x86_64-pc-win
dows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libunwind-add7a84d7e82d084
.rlib" "C:\\Users\\daniel\\.multirust\\toolchains\\stable-x86_64-pc-windows-msvc
\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liblibc-84688accbc86d6b7.rlib" "C:\
\Users\\daniel\\.multirust\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rust
lib\\x86_64-pc-windows-msvc\\lib\\liballoc-fe2e68b21f0bdd7a.rlib" "C:\\Users\\da
niel\\.multirust\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_6
4-pc-windows-msvc\\lib\\liballoc_system-7fc0381594c93f56.rlib" "C:\\Users\\danie
l\\.multirust\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-p
c-windows-msvc\\lib\\libcore-ea9d77e7c23fe65c.rlib" "C:\\Users\\daniel\\.multiru
st\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-m
svc\\lib\\libcompiler_builtins-91b619d34dd1f5aa.rlib" "advapi32.lib" "ws2_32.lib
" "userenv.lib" "shell32.lib" "msvcrt.lib"
  = note: msvcrt.lib(chkstk.obj) : fatal error LNK1112: module machine type 'X86
' conflicts with target machine type 'x64'


error: aborting due to previous error

error: Could not compile `webrender`.
Build failed, waiting for other jobs to finish...
error: build failed

daniel@daniel-win7 /e/win-src/webrender/webrender
I've seen this problem before (bug 1350001) when doing a 32-bit build on a 64-bit machine (which uses a 64-bit rust toolchain by default). Are you doing this build inside a MozillaBuild shell or a regular windows command shell? MozillaBuild explicitly sets some environment variables to control what Visual Studio does, and that doesn't play well with how cargo/rust tries to use Visual Studio.

On the assumption that you're doing this inside the 32-bit mozillabuild shell on a 64-bit machine, I suggest trying it inside the 64-bit mozillabuild shell instead. Or a non-MozillaBuild shell.
(In reply to Kartikaya Gupta (email:kats@mozilla.com) from comment #5)

> On the assumption that you're doing this inside the 32-bit mozillabuild
> shell on a 64-bit machine, I suggest trying it inside the 64-bit
> mozillabuild shell instead. Or a non-MozillaBuild shell.

That seems to have been the case indeed, thanks. When I retry with a 64bit mozillabuild, 'cargo build' ends with the same series of build errors that I get from my regular Firefox build as I reported initially. A few more of them are pasted below.

I'll use "ac_add_options --disable-webrender" in my .mozconfig for now to work around this.

error: couldn't read src\UNC/vboxsrv/daniel/win-src/webrender/webrender/res/ps_a
ngle_gradient.fs.glsl: The system cannot find the file specified. (os error 2)
  --> e:\win-src\webrender\target\debug\build\webrender-d24208953dc275b6\out/sha
ders.rs:70:38
   |
70 |     h.insert("ps_angle_gradient.fs", include_str!("UNC/vboxsrv/daniel/win-s
rc/webrender/webrender/res/ps_angle_gradient.fs.glsl"));
   |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: couldn't read src\UNC/vboxsrv/daniel/win-src/webrender/webrender/res/shar
ed_other.glsl: The system cannot find the file specified. (os error 2)
  --> e:\win-src\webrender\target\debug\build\webrender-d24208953dc275b6\out/sha
ders.rs:71:30
   |
71 |     h.insert("shared_other", include_str!("UNC/vboxsrv/daniel/win-src/webre
nder/webrender/res/shared_other.glsl"));
   |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: couldn't read src\UNC/vboxsrv/daniel/win-src/webrender/webrender/res/ps_r
adial_gradient.fs.glsl: The system cannot find the file specified. (os error 2)
  --> e:\win-src\webrender\target\debug\build\webrender-d24208953dc275b6\out/sha
ders.rs:72:39
   |
72 |     h.insert("ps_radial_gradient.fs", include_str!("UNC/vboxsrv/daniel/win-
src/webrender/webrender/res/ps_radial_gradient.fs.glsl"));
   |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Thanks. This should be filed as a bug against webrender upstream, at https://github.com/servo/webrender/issues/ as that's where it will need to be fixed. Do you mind doing that? They might need more information about your particular setup.
Thanks. We can leave this bug open for now and close it once we pull in the webrender update that has the fix for the above issue.
Whiteboard: [gfx-noted]
This is a developer-facing issue rather than a user- or web-facing issue, so bumping to the backlog. We don't need to fix this before shipping.
Blocks: stage-wr-backlog
No longer blocks: stage-wr-nightly
The log from the failure in comment 11 is interesting, there are a couple of ICEs in the rust compiler. Not actually related to this bug as filed, but might be worth investigating. Michael, do these stacks look familiar to you?

https://treeherder.mozilla.org/logviewer.html#?job_id=211958845&repo=autoland&lineNumber=27137

https://treeherder.mozilla.org/logviewer.html#?job_id=211958845&repo=autoland&lineNumber=27293
Flags: needinfo?(mwoerister)
The first one looks like it might have to do with an inaccurate system timer and rustc's self-profiler not being prepared for handling this gracefully. (Or it's a bug in the self-profiler itself).

The second, I'm not so sure about. It looks like it might be panicking a second time, while trying to create the error message for the original panic. (Looks a bit like https://github.com/rust-lang/rust/issues/56095).

I haven't seen either of those errors before.
Flags: needinfo?(mwoerister)
Looks like the first panic is already known as https://github.com/rust-lang/rust/issues/51648. I left a comment on that issue.
You need to log in before you can comment on or make changes to this bug.