xgboost: [jvm-package] xgboost for JVM has test failures on OS X

I can build the regular R, C and python packages just fine. Even the first test cases from the JVM based build i.e. where the DMatrix is tested are green. However with rabit/JNI on spark https://gist.github.com/geoHeil/bc88c2b849eca875e580b8ff170fd598 I see only JNI error messages.

Environment info

Operating System: mac osx 10.12.5

Compiler: gcc7

Package used (python/R/jvm/C++): JVM

xgboost version used: current master branch

If installing from source, please provide

  1. The commit hash (git rev-parse HEAD) cd7659937b2c6a4a82988a72761a7f21d9b53743
  2. Logs will be helpful (If logs are large, please upload as attachment). https://gist.github.com/geoHeil/bc88c2b849eca875e580b8ff170fd598

If you are using jvm package, please

gcc --version                                                                                                                                        [±master ✓]
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 8.1.0 (clang-802.0.42)
Target: x86_64-apple-darwin16.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

Steps to reproduce

  1. checkout latest xgboost from master branch
  2. build the JVM package

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Comments: 20 (15 by maintainers)

Most upvoted comments

my error is fixed with the patch suggested by @superbobry and it works in spark as well.

thank you sooooo much!

You can manually apply the patch in dmlc/dmlc-core#351.

I want to point out that fixing this issue doesn’t require applying not yet merged patch. Original patch issue highlights that root cause is locale-dependent code for parameter parsing. 0.5 is parsed as 0 because input is expected to be 0,5 under certain locales (for example, russian). You can avoid this error by enforcing en_US locale (especially LC_NUMERIC):


LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Build will pass fine with such settings. In my case locale slipped in on another host through ssh session because of SendEnv LANG LC_* setting in /etc/ssh/ssh_config