Closed Bug 1584530 Opened 7 months ago Closed 6 months ago

Geckodriver windows binaries don't run anymore without having the Microsoft MSCV runtime installed

Categories

(Testing :: geckodriver, defect)

Version 3
defect
Not set

Tracking

(firefox-esr60 unaffected, firefox-esr68 unaffected, firefox67 unaffected, firefox68 unaffected, firefox69 unaffected, firefox70 unaffected, firefox71 fixed)

RESOLVED FIXED
mozilla71
Tracking Status
firefox-esr60 --- unaffected
firefox-esr68 --- unaffected
firefox67 --- unaffected
firefox68 --- unaffected
firefox69 --- unaffected
firefox70 --- unaffected
firefox71 --- fixed

People

(Reporter: whimboo, Assigned: nalexander)

References

(Regression, )

Details

(Keywords: regression)

Attachments

(1 file)

With the implementation on bug 1534533 we now build geckodriver in Taskcluster. Specifically via cross-compiling from Linux for the i686-pc-windows-msvc and x86_64-pc-windows-msvc targets.

Now several users of the recently released 0.25.0 release report that geckodriver doesn't work out of the box anymore. Instead the Microsoft MSVC runtime package needs to be installed. For details see:

https://github.com/mozilla/geckodriver/issues/1617

Formerly when we cross-compiled geckodriver via Travis CI, we were using the i686-pc-windows-gnu and x86_64-pc-windows-gnu targets.

I see that we have the linux64-rust-windows rust repack job which specifies x86_64-unknown-linux-gnu, but using it doesn't seem to work.

Mike and Nick, is there a way to change the two Windows build jobs to not use the msvc target but gnu instead?

It would be great to get this fixed quickly, so that we can follow-up with the 0.26.0 release.

Flags: needinfo?(nalexander)
Flags: needinfo?(mh+mozilla)

(In reply to Henrik Skupin (:whimboo) [⌚️UTC+2] from comment #0)

With the implementation on bug 1534533 we now build geckodriver in Taskcluster. Specifically via cross-compiling from Linux for the i686-pc-windows-msvc and x86_64-pc-windows-msvc targets.

Now several users of the recently released 0.25.0 release report that geckodriver doesn't work out of the box anymore. Instead the Microsoft MSVC runtime package needs to be installed. For details see:

https://github.com/mozilla/geckodriver/issues/1617

Formerly when we cross-compiled geckodriver via Travis CI, we were using the i686-pc-windows-gnu and x86_64-pc-windows-gnu targets.

I see that we have the linux64-rust-windows rust repack job which specifies x86_64-unknown-linux-gnu, but using it doesn't seem to work.

Mike and Nick, is there a way to change the two Windows build jobs to not use the msvc target but gnu instead?

It would be great to get this fixed quickly, so that we can follow-up with the 0.26.0 release.

Ooh, that's exciting. From this r/rust Reddit comment it looks like this isn't too hard.

[target.x86_64-pc-windows-msvc]
rustflags = ["-Ctarget-feature=+crt-static"]
[target.i686-pc-windows-msvc]
rustflags = ["-Ctarget-feature=+crt-static"]

I will take a crack at this now.

Flags: needinfo?(nalexander)

Try build at https://treeherder.mozilla.org/#/jobs?repo=try&revision=d9543783e4620f3a6fd64e3543438121b7349ed0.

It's a little hard to check for dependencies on macOS and Linux, but per https://stackoverflow.com/a/33174211 I think I get reasonable results.

First, the old, from a try build a few weeks back:

$ wget https://queue.taskcluster.net/v1/task/D1alluiATBqR0-gH9yIFCw/runs/0/artifacts/public/build/geckodriver.tar.bz2
$ tar xf geckodriver.tar.bz2
$ strings geckodriver.exe | grep '\.dll'
dbghelp.dll
KERNEL32.dll
ADVAPI32.dll
WS2_32.dll
VCRUNTIME140.dll
api-ms-win-crt-runtime-l1-1-0.dll
api-ms-win-crt-stdio-l1-1-0.dll
api-ms-win-crt-math-l1-1-0.dll
api-ms-win-crt-locale-l1-1-0.dll
api-ms-win-crt-heap-l1-1-0.dll

And now the new, from the try build linked here:

$ wget https://taskcluster-artifacts.net/bYXQZvVsRuGhzmrVwj4r3w/0/public/build/geckodriver.tar.bz2
$ tar xf geckodriver.tar.bz2
$ strings geckodriver.exe | grep '\.dll'
dbghelp.dll
KERNEL32.dll
ADVAPI32.dll
WS2_32.dll

So even though the file size barely changed it looks like the MSVCRT runtime is not dynamically required. Henrik, could you confirm on an actual Windows device?

Flags: needinfo?(mh+mozilla) → needinfo?(hskupin)
Assignee: nobody → nalexander
Status: NEW → ASSIGNED

Thanks Nick! This sounds great. I have asked on the Github issue to get this confirmed by affected users. I will let you know.

Flags: needinfo?(hskupin)
Pushed by nalexander@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/c539d3afc61d
[geckodriver] Don't require the Microsoft MSVC runtime to be installed. r=firefox-build-system-reviewers,dmajor
Status: ASSIGNED → RESOLVED
Closed: 6 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla71
You need to log in before you can comment on or make changes to this bug.