Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

macOS WPT taskcluster job is busted #22497

Closed
jdm opened this issue Dec 19, 2018 · 9 comments
Closed

macOS WPT taskcluster job is busted #22497

jdm opened this issue Dec 19, 2018 · 9 comments

Comments

@jdm
Copy link
Member

@jdm jdm commented Dec 19, 2018

Every PR since #22459 has failed when running this task:

+ ./mach test-wpt --release --binary-arg=--multiprocess --processes 4 --log-raw test-wpt-mp.log --log-errorsummary wpt-mp-errorsummary.log eventsource

with errors like:

  ▶ CRASH [expected OK] /eventsource/dedicated-worker/eventsource-close.htm
  │ 
  │ dyld: Library not loaded: /Users/worker/homebrew/opt/harfbuzz/lib/libharfbuzz.0.dylib
  │   Referenced from: /Users/worker/tasks/task_1545209316/repo/target/release/servo
  └   Reason: Incompatible library version: servo requires version 20201.0.0 or later, but libharfbuzz.0.dylib provides version 20102.0.0
@jdm
Copy link
Member Author

@jdm jdm commented Dec 19, 2018

I am unclear why this does not appear on #22459 itself.

@SimonSapin
Copy link
Member

@SimonSapin SimonSapin commented Dec 19, 2018

Looks like the libharfbuzz version Servo was compiled with differs from the one available when this failure occurs. We only have two workers, and they both have Harfbuzz in a persistent Homebrew install at /Users/worker/homebrew. This likely happens when the build task and run task are on different workers, which is non-deterministic. Running /Users/worker/homebrew/bin/brew update harfbuzz on both workers might solve this immediate issue, but something like it might happen again. Can we pin exact versions in Homebrew? Are older versions available at all?

@SimonSapin
Copy link
Member

@SimonSapin SimonSapin commented Dec 19, 2018

Running /Users/worker/homebrew/bin/brew update harfbuzz on both workers

After su - worker, not as root.

@jdm
Copy link
Member Author

@jdm jdm commented Dec 19, 2018

brew pin harfbuzz should pin the currently installed version.

@jdm
Copy link
Member Author

@jdm jdm commented Dec 19, 2018

I have manually updated the older copy, so this should no longer prevent merging anything.

@jdm jdm closed this Dec 19, 2018
@jdm
Copy link
Member Author

@jdm jdm commented Dec 19, 2018

If we're not explicitly upgrading homebrew packages on workers as part of CI, then the only time this should affect us is when provisioning new builders, which will end up installing the latest package version.

@SimonSapin
Copy link
Member

@SimonSapin SimonSapin commented Dec 20, 2018

Another possible case is if we add a new dependency. It’ll be installed on each worker the first time there’s a build job, which may vary across builder. It is unlikely but possible that a new version is published in that window.

But really, shouldn’t we be statically linking harfbuzz and (some) other dependencies? Then this issue wouldn’t exist in the first place.

@jdm
Copy link
Member Author

@jdm jdm commented Dec 20, 2018

Yeah, we should probably be setting the HARFBUZZ_SYS_NO_PKG_CONFIG variable so we don't short-circuit at https://github.com/servo/rust-harfbuzz/blob/master/harfbuzz-sys/build.rs#L10-L14.

@SimonSapin
Copy link
Member

@SimonSapin SimonSapin commented Dec 20, 2018

Could we instead use pkg_config::Config::statik to attempt static linking with a system-provided Harfbuzz rather than always recompile it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants
You can’t perform that action at this time.