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

32-bit Windows test failure #2

Closed
stevengj opened this issue Nov 21, 2014 · 12 comments
Closed

32-bit Windows test failure #2

stevengj opened this issue Nov 21, 2014 · 12 comments

Comments

@stevengj
Copy link
Member

See the Appveyor test, and the discussion in JuliaIO/HDF5.jl#179 ; cc @tkelman

The 64-bit Windows c-blosc binary was built with x86_64-w64-mingw32-gcc (GCC) 4.6.3 using x86_64-w64-mingw32-gcc -shared -O3 -msse2 -I. *.c -o libblosc64-1.5.0.dll. And the 32-bit binary was built with i686-w64-mingw32-gcc (GCC) 4.6.3 using i686-w64-mingw32-gcc -shared -O3 -msse2 -I. *.c -o libblosc32-1.5.0.dll.

@stevengj stevengj changed the title Win32 test failure 32-bit Windows test failure Nov 21, 2014
@stevengj stevengj reopened this Nov 21, 2014
@tkelman
Copy link
Contributor

tkelman commented Nov 21, 2014

Sorry, got distracted by something.

See http://github-multi-status.herokuapp.com/ for how to enable the multi-status indicators on PR's, if you haven't yet. The way you have Blosc.jl's deps/build.jl right now I need to manually delete libblosc.dll if I want to switch between 32 and 64 bit versions on the same computer, which is a bit annoying. But yes, I can reproduce this locally. I'll try building a dll with (edit: up-to-date) mingw-w64 and see if anything changes.

@tkelman
Copy link
Contributor

tkelman commented Nov 21, 2014

Okay, no significant difference with a libblosc.dll made with i686-w64-mingw32-gcc 4.8.2 (https://dl.dropboxusercontent.com/u/8244638/libblosc32.dll), sorry for the wrong guess.

The failure is at @test roundtrip(a) for ty == Float64, i == 32. At the repl, a=rand(Float64,32); Blosc.decompress(Float64, Blosc.compress(a)) == a works fine. But compiled into the roundtrip function it segfaults.

@tkelman
Copy link
Contributor

tkelman commented Nov 21, 2014

here's some @code_llvm output, if it helps https://gist.github.com/tkelman/556fb9c10e9048e426bf

@stevengj
Copy link
Member Author

That's weird; does it work in Julia 0.4?

@tkelman
Copy link
Contributor

tkelman commented Nov 21, 2014

Nope, crashes there too

@tkelman
Copy link
Contributor

tkelman commented Nov 21, 2014

If you want to run a bigger matrix of stable and nightly you can do

environment:
  matrix:
# Releases
  - JULIAVERSION: "stable/win32"
  - JULIAVERSION: "stable/win64"
# Nightlies
  - JULIAVERSION: "download/win32"
  - JULIAVERSION: "download/win64"

install:
# Download most recent Julia Windows binary
  - ps: (new-object net.webclient).DownloadFile($("http://status.julialang.org/"+$env:JULIAVERSION), "C:\projects\julia-binary.exe")

in appveyor.yml

@tkelman
Copy link
Contributor

tkelman commented Nov 24, 2014

So what's the best way to determine whether this is a problem with blosc or a problem with base Julia?

@stevengj
Copy link
Member Author

Is there a valgrind-like thing that you can run on Win32?

@vtjnash, any ideas on why a function would work in the REPL but not when compiled on Win32?

@vtjnash
Copy link

vtjnash commented Nov 25, 2014

that would typically imply the JIT code had an error in the platform calling convention. i would have to walk it manually in a debugger to see what the program state was when it failed

@tkelman
Copy link
Contributor

tkelman commented Dec 27, 2014

It looks like this should work now with 0.3.4, and presumably also latest nightlies. Was probably one of the stack alignment issues that @vtjnash caught. Try starting a new appveyor build.

@jakebolewski
Copy link
Collaborator

@vtjnash the build is passing now on Windows, thanks for all the hard work!

@stevengj
Copy link
Member Author

Great!

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

No branches or pull requests

4 participants