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

Broken 32-bits CI when using 0.35.0 #9463

Closed
bcardiff opened this issue Jun 11, 2020 · 6 comments · Fixed by #9466
Closed

Broken 32-bits CI when using 0.35.0 #9463

bcardiff opened this issue Jun 11, 2020 · 6 comments · Fixed by #9466
Labels
kind:bug A bug in the code. Does not apply to documentation, specs, etc. platform

Comments

@bcardiff
Copy link
Member

While trying to upgrade the CI to prepare it for 1.0.0-dev using 0.35.0 I stumbed on some failures that went undetected until the release in the 32-bits arch.

https://circleci.com/gh/crystal-lang/crystal/48093

Using crystallang/crystal:0.35.0-i386-build docker image against 0.35.0 tag.

# ./bin/crystal spec ./spec/std/exception_spec.cr
...F

Failures:

  1) Exception collect memory within ensure block
Error running at_exit handler: Unable to get file info: '/src/spec/std/spec_helper.cr': Value too large for defined data type

# crystal run --release spec/std/data/collect_within_ensure 
Unhandled exception: Oh no! (Exception)
  from spec/std/data/collect_within_ensure:2:3 in '__crystal_main'
  from ../usr/share/crystal/src/crystal/main.cr:105:5 in 'main'
  from __libc_start_main
  from ???
@bcardiff bcardiff added this to the 0.35.1 milestone Jun 11, 2020
@jhass
Copy link
Member

jhass commented Jun 11, 2020

I guess we no longer actually run a 32 bit CI? Or how did this remain undetected?

FWIW I wouldn't be too outraged about dropping 32bits x86 support, most operating systems did that already. (We need to keep/improve 32bits ARM support though).

@jhass jhass added kind:bug A bug in the code. Does not apply to documentation, specs, etc. platform labels Jun 11, 2020
@bcardiff
Copy link
Member Author

Eventual 32bits ARM is the main reason I want to keep 32 bits support.

Not sure yet why it went undetected the tagged release has a smoke test over the CI with the recent 32 bits build https://circleci.com/workflow-run/d70808f1-dc6d-46b6-91af-50c5e56dbd27

@bcardiff
Copy link
Member Author

The underlying cause is that LibC.stat is not working on 32 bits environment when the path refers to mounted volume (like the docker mounted volume used to share the working copy in the ci, or vagrant shared file). This is seems to be an old issue cause it happens with older compilers also.

@asterite
Copy link
Member

I wonder if it's related to that large file support issue for arm...

@kubo
Copy link
Contributor

kubo commented Jun 11, 2020

How about kubo@9442927 (#9297 (comment))? It fixes stat used by File.info. I planed to make a pull request on the next weekend.

@bcardiff
Copy link
Member Author

That seems to fix the issue of stat in docker and vagrant 32 bits. So 👍 . Yet the #9466 changes are still valid since we unintentionally changed the compiler flags on some specs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind:bug A bug in the code. Does not apply to documentation, specs, etc. platform
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants