Skip to content

CI: ubuntu.yml: Add GitHub Actions s390x case #13972

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

Merged
merged 3 commits into from
Aug 12, 2025

Conversation

junaruga
Copy link
Member

@junaruga junaruga commented Jul 22, 2025

/cc @hsbt

Add the ubuntu-22.04-ppc64le and ubuntu-22.04-s390x to align the following
hosts running Ubuntu 22.04 on Ruby CI.

https://rubyci.org/

  • ppc64le (Ubuntu)
  • s390x (Ubuntu)

These GitHub Actions ppc64le/s390x pipelines are managed by the following project.
https://github.com/IBM/actionspz

The onboarding document is below.
https://github.com/IBM/actionspz/blob/main/docs/onboarding.md

This PR is related to IBM/actionspz#4.

@junaruga junaruga force-pushed the wip/gha-ppc64le-s390x branch 3 times, most recently from 0b2778a to 8b2a6ab Compare July 22, 2025 15:50
@junaruga
Copy link
Member Author

I got the following error that HOME environment variable is not set.

https://github.com/ruby/ruby/actions/runs/16448587964/job/46487337166

$ git config --global core.autocrlf false
fatal: $HOME not set
Error: Process completed with exit code 128.

So, I added the following hack to set the HOME environment variable.

      # This is a temporary workaround to set HOME env to pass the next step
      # ./.github/actions/setup/directories.
      - name: Set HOME env
        run: |
          echo "HOME: #{HOME}"
          pushd ~
          echo "HOME=$(pwd)" >> $GITHUB_ENV
          popd
        if: ${{ endsWith(matrix.os, 'ppc64le') || endsWith(matrix.os, 's390x') }}

However, it seems the directory by the ~ doesn't exsit.

https://github.com/ruby/ruby/actions/runs/16449252485/job/46489719903?pr=13972

Error: An error occurred trying to start process '/usr/bin/bash' with working directory '/tmp/_actions-runner-working-dir/ruby/ruby/build'. No such file or directory

@junaruga junaruga force-pushed the wip/gha-ppc64le-s390x branch from 5d4c700 to 4f5d070 Compare July 23, 2025 14:44
@junaruga junaruga changed the title CI: ubuntu.yml: Add ppc64le/s390x cases. CI: ubuntu.yml: Migrate Travis CI ppc64le/s390x cases to GitHub Actions. Jul 23, 2025
@junaruga junaruga force-pushed the wip/gha-ppc64le-s390x branch 4 times, most recently from df5600d to 625ab72 Compare July 23, 2025 15:19
@junaruga
Copy link
Member Author

@Earlopain, I am trying to skip ubuntu-24.04-ppc64le and ubuntu-24.04-s390x cases of the .github/workflows/ubuntu.yml in the matrix in forked repositories, still running the ubuntu-24.04-arm, using your way mentioned at the ruby/prism#3611 (comment).

https://github.com/ruby/ruby/pull/13972/files#diff-6640e8c668a6deeb426558faaa2b0f535d95814c09a05c044a1df27a008dd544

However, it seems all the cases are skipped in the current config file. Could you give me an advice to run the ppc64le/s390x as I intend? Thanks!

As a reference, the document of the matrix is below.

https://docs.github.com/en/actions/how-tos/writing-workflows/choosing-what-your-workflow-does/running-variations-of-jobs-in-a-workflow

@junaruga junaruga mentioned this pull request Jul 23, 2025
2 tasks
@Earlopain
Copy link
Contributor

Unfortunatly excludes are run before includes so it doesn't work for this setup. But if you rewrite it a bit, it seems to work:

      matrix:
        os: [ ubuntu-22.04, ubuntu-24.04, ubuntu-24.04-arm, ubuntu-24.04-ppc64le, ubuntu-24.04-s390x ]
        test_task: [check]
        configure: ['']
        arch: ['']
        timeout: [40]
        # The ppc64le/s390x runners works only in the registered repositories.
        # They don't work in forked repositories.
        # https://github.com/IBM/actionspz/blob/main/docs/FAQ.md#what-about-forked-repos
        upstream:
          - ${{ github.repository == 'ruby/ruby' }}
        include:
          - test_task: check
            configure: 'cppflags=-DVM_CHECK_MODE'
          - test_task: check
            arch: i686
          - test_task: check
            configure: '--disable-yjit'
          - test_task: check
            configure: '--enable-shared --enable-load-relative'
          - test_task: test-bundler-parallel
            timeout: 50
          - test_task: test-bundled-gems
        exclude:
          - os: ubuntu-24.04-ppc64le
            upstream: false
          - os: ubuntu-24.04-s390x
            upstream: false
      fail-fast: false

I think this is what you are looking for. I tested this in one of my repos and it does what I would expect it to. This is good as long as you only want to run the check task though. Anything more complicated runs into the previously mentioned limitation.

There are more general solutions to this by dynamically creating the test matrix in a previous job, writing that to an output, and then refering to that output in the job that needs the matrix. Basically what is happening here: https://github.com/ruby/actions/blob/master/.github/workflows/ruby_versions.yml. It's a bit more complicated though.

@junaruga junaruga force-pushed the wip/gha-ppc64le-s390x branch from 625ab72 to 9ccfa53 Compare July 23, 2025 18:05
@junaruga
Copy link
Member Author

@Earlopain Thank you for sharing the tips, and testing it in your repositories! I will take a look at the tips!

@junaruga
Copy link
Member Author

I reported the issue IBM/actionspz#31 related to group ID of the CI user on the ppc64le/s390x images.

@junaruga junaruga force-pushed the wip/gha-ppc64le-s390x branch from f407bbf to 6543a09 Compare August 1, 2025 12:47
@junaruga
Copy link
Member Author

junaruga commented Aug 1, 2025

I am seeing the following ractor test error on GitHub Actions Ubuntu 24.04, and 22.04 ppc64le environments.
https://github.com/ruby/ruby/actions/runs/16676074443/job/47202884627?pr=13972#step:19:253

The error happened on the following tests.

assert_equal '[1, 4, 3, 2, 1]', %q{

assert_equal "ok", %q{

I couldn't reproduce the errors on RubyCI Ubuntu (ppc64le) server by the following commands. The make btest-ruby passed.

$ optflags=-O0 debugflags="-g3 -ggdb3 -gdwarf-4" \
  ./configure \
    --enable-shared \
    --enable-mkmf-verbose
$ make -j6
$ make btest-ruby

If you know how to debug and what may be cause, and you let me know that here, I would appreciate that!

@junaruga junaruga force-pushed the wip/gha-ppc64le-s390x branch from ba5e459 to 93955f0 Compare August 6, 2025 14:35
@junaruga
Copy link
Member Author

junaruga commented Aug 6, 2025

I couldn't reproduce the errors on RubyCI Ubuntu (ppc64le) server by the following commands. The make btest-ruby passed.

I upgraded RubyCI's Ubuntu (ppc64le) server from 22.04 jammy to 22.04 noble below. Then I was able to reproduce these errors on the latest master branch ruby f3206cc on the host! 😄

$ grep ^VERSION /etc/os-release
VERSION_ID="24.04"
VERSION="24.04.3 LTS (Noble Numbat)"
VERSION_CODENAME=noble
$ uname -m
ppc64le
$ uname -r
6.8.0-71-generic
$ ./autogen.sh
$ ./configure -C --disable-install-doc cppflags=-DRUBY_DEBUG
$ nproc
8
$ make -j4
$ make check
...
#1336 test_ractor.rb:1016:
     counts = []
     counts << Ractor.count
     ractors = (1..3).map { Ractor.new { Ractor.receive } }
     counts << Ractor.count

     ractors[0].send('End 0').join
     sleep 0.1 until ractors[0].inspect =~ /terminated/
     counts << Ractor.count

     ractors[1].send('End 1').join
     sleep 0.1 until ractors[1].inspect =~ /terminated/
     counts << Ractor.count

     ractors[2].send('End 2').join
     sleep 0.1 until ractors[2].inspect =~ /terminated/
     counts << Ractor.count

     counts.inspect
  #=> "" (expected "[1, 4, 3, 2, 1]")
stderr output is not empty
   vm_core.h:2017: Assertion Failed: rb_current_execution_context:ec == rb_current_ec_noinline()
   ruby 3.5.0dev (2025-08-06T15:07:49Z master f3206cc79b) +PRISM [powerpc64le-linux]

   -- Control frame information -----------------------------------------------
   c:0004 p:0003 s:0014 e:000013 METHOD <internal:ractor>:667
   c:0003 p:0008 s:0010 e:000009 METHOD <internal:ractor>:313
   c:0002 p:0004 s:0006 e:000005 BLOCK  bootstraptest.test_ractor.rb_1016_1336.rb:6 [FINISH]
   c:0001 p:---- s:0003 e:000002 DUMMY  [FINISH]

   -- Ruby level backtrace information ----------------------------------------
   bootstraptest.test_ractor.rb_1016_1336.rb:6:in 'block (2 levels) in <main>'
   <internal:ractor>:313:in 'receive'
   <internal:ractor>:667:in 'receive'

   -- Threading information ---------------------------------------------------
   Total ractor count: 4
   Ruby thread count for this ractor: 1

   -- C level backtrace information -------------------------------------------
   /home/jaruga/git/ruby/ruby/ruby(rb_print_backtrace+0x8) [0x1f8ab0cdaba0] vm_dump.c:843
   /home/jaruga/git/ruby/ruby/ruby(rb_vm_bugreport) vm_dump.c:1175
   /home/jaruga/git/ruby/ruby/ruby(rb_assert_failure_detail+0x12c) [0x1f8ab089a3b4] error.c:1215
   /home/jaruga/git/ruby/ruby/ruby(rb_assert_failure+0x1c) [0x1f8ab089a3f4] error.c:1191
   /home/jaruga/git/ruby/ruby/ruby(rb_current_execution_context+0x34) [0x1f8ab08943a0] vm_core.h:2017
   /home/jaruga/git/ruby/ruby/ruby(ractor_basket_value+0x0) [0x1f8ab09bd810] ractor_sync.c:826
   /home/jaruga/git/ruby/ruby/ruby(ractor_basket_accept) ractor_sync.c:833
   /home/jaruga/git/ruby/ruby/ruby(ractor_try_receive) ractor_sync.c:1144
   /home/jaruga/git/ruby/ruby/ruby(ractor_receive) ractor_sync.c:1160
   /home/jaruga/git/ruby/ruby/ruby(ractor_port_receive) ractor_sync.c:142
   /home/jaruga/git/ruby/ruby/ruby(builtin_invoker0+0x24) [0x1f8ab0af2dc4] vm_insnhelper.c:7344
   /home/jaruga/git/ruby/ruby/ruby(invoke_bf+0x128) [0x1f8ab0b04338] vm_insnhelper.c:7485
   /home/jaruga/git/ruby/ruby/ruby(vm_invoke_builtin_delegate+0x1c) [0x1f8ab0b307d8] vm_insnhelper.c:7509
   /home/jaruga/git/ruby/ruby/ruby(vm_exec_core) insns.def:1698
   /home/jaruga/git/ruby/ruby/ruby(vm_exec_loop+0x0) [0x1f8ab0b218d8] vm.c:2621
   /home/jaruga/git/ruby/ruby/ruby(rb_vm_exec) vm.c:2624
   /home/jaruga/git/ruby/ruby/ruby(thread_do_start_proc+0x394) [0x1f8ab0aacb24] thread.c:584
   /home/jaruga/git/ruby/ruby/ruby(thread_do_start+0x8) [0x1f8ab0aad298] thread.c:626
   /home/jaruga/git/ruby/ruby/ruby(thread_start_func_2) thread.c:677
   /home/jaruga/git/ruby/ruby/ruby(thread_sched_lock_+0x0) [0x1f8ab0aadad4] thread_pthread.c:2237
   /home/jaruga/git/ruby/ruby/ruby(co_start) thread_pthread_mn.c:460
   /home/jaruga/git/ruby/ruby/ruby(co_start+0x8) [0x1f8ab0aad9f8] thread_pthread_mn.c:439

   -- Other runtime information -----------------------------------------------

   * Loaded script: bootstraptest.test_ractor.rb_1016_1336.rb

   * Loaded features:

       0 enumerator.so
       1 thread.rb
       2 fiber.so
       3 rational.so
       4 complex.so
       5 pathname.so
       6 ruby2_keywords.rb
       7 set.rb
       8 /home/jaruga/git/ruby/ruby/.ext/powerpc64le-linux/enc/encdb.so
       9 /home/jaruga/git/ruby/ruby/.ext/powerpc64le-linux/enc/trans/transdb.so

   * Process memory map:

   1f8ab0860000-1f8ab0f00000 r-xp 00000000 08:01 1279923                    /home/jaruga/git/ruby/ruby/ruby
   1f8ab0f00000-1f8ab0f10000 r--p 00690000 08:01 1279923                    /home/jaruga/git/ruby/ruby/ruby
   1f8ab0f10000-1f8ab0f20000 rw-p 006a0000 08:01 1279923                    /home/jaruga/git/ruby/ruby/ruby
   1f8ab0f20000-1f8ab0f30000 rw-p 00000000 00:00 0
   1f8ad5b60000-1f8ad5d40000 rw-p 00000000 00:00 0                          [heap]
   621498000000-621498030000 rw-p 00000000 00:00 0
   621498030000-62149c000000 ---p 00000000 00:00 0
   6214a0000000-6214a0030000 rw-p 00000000 00:00 0
   6214a0030000-6214a4000000 ---p 00000000 00:00 0
   6214a4200000-6214a4310000 rw-p 00000000 00:00 0                          [anon:Ruby:nt_alloc_thread_stack_chunk]
   6214a4310000-6214a4320000 ---p 00000000 00:00 0                          [anon:Ruby:nt_alloc_thread_stack_chunk]
   6214a4320000-6214a4440000 rw-p 00000000 00:00 0                          [anon:Ruby:nt_alloc_thread_stack_chunk]
   6214a4440000-6214a4450000 ---p 00000000 00:00 0                          [anon:Ruby:nt_alloc_thread_stack_chunk]
   6214a4450000-6214a4570000 rw-p 00000000 00:00 0                          [anon:Ruby:nt_alloc_thread_stack_chunk]
   6214a4570000-6214a4580000 ---p 00000000 00:00 0                          [anon:Ruby:nt_alloc_thread_stack_chunk]
   6214a4580000-6214c4200000 rw-p 00000000 00:00 0                          [anon:Ruby:nt_alloc_thread_stack_chunk]
   6214c4200000-6214c4210000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4210000-6214c4280000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4280000-6214c4290000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4290000-6214c4300000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4300000-6214c4310000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4310000-6214c4380000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4380000-6214c4390000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4390000-6214c4400000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4400000-6214c4410000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4410000-6214c4480000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4480000-6214c4490000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4490000-6214c4500000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4500000-6214c4510000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4510000-6214c4580000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4580000-6214c4590000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4590000-6214c4600000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4600000-6214c4610000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4610000-6214c4680000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4680000-6214c4690000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4690000-6214c4700000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4700000-6214c4710000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4710000-6214c4780000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4780000-6214c4790000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4790000-6214c4800000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4800000-6214c4810000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4810000-6214c4880000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4880000-6214c4890000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4890000-6214c4900000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4900000-6214c4910000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4910000-6214c4980000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4980000-6214c4990000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4990000-6214c4a00000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4a00000-6214c4a10000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4a10000-6214c4a80000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4a80000-6214c4a90000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4a90000-6214c4b00000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4b00000-6214c4b10000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4b10000-6214c4b80000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4b80000-6214c4b90000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4b90000-6214c4c00000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4c00000-6214c4c10000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4c10000-6214c4c80000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4c80000-6214c4c90000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4c90000-6214c4d00000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4d00000-6214c4d10000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4d10000-6214c4d80000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4d80000-6214c4d90000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4d90000-6214c4e00000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4e00000-6214c4e10000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4e10000-6214c4e80000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4e80000-6214c4e90000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4e90000-6214c4f00000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4f00000-6214c4f10000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4f10000-6214c4f80000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4f80000-6214c4f90000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c4f90000-6214c5000000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c5000000-6214c5010000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c5010000-6214c5080000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c5080000-6214c5090000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c5090000-6214c5100000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c5100000-6214c5110000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c5110000-6214c5180000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c5180000-6214c5190000 ---p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c5190000-6214c5200000 rw-p 00000000 00:00 0                          [anon:Ruby:fiber_pool_allocate_memory]
   6214c5260000-6214c5280000 r-xp 00000000 08:01 13327                      /usr/lib/powerpc64le-linux-gnu/libgcc_s.so.1
   6214c5280000-6214c5290000 r--p 00010000 08:01 13327                      /usr/lib/powerpc64le-linux-gnu/libgcc_s.so.1
   6214c5290000-6214c52a0000 rw-p 00020000 08:01 13327                      /usr/lib/powerpc64le-linux-gnu/libgcc_s.so.1
   6214c52a0000-6214c52b0000 ---p 00000000 00:00 0
   6214c52b0000-6214c52d0000 rw-p 00000000 00:00 0
   6214c52d0000-6214c52e0000 rw-p 00000000 00:00 0                          [anon:Ruby:GC:default:heap_page_body_allocate]
   6214c52e0000-6214c52f0000 ---p 00000000 00:00 0
   6214c52f0000-6214c5310000 rw-p 00000000 00:00 0
   6214c5310000-6214c5330000 rw-p 00000000 00:00 0                          [anon:Ruby:GC:default:heap_page_body_allocate]
   6214c5330000-6214c5340000 ---p 00000000 00:00 0
   6214c5340000-6214c5360000 rw-p 00000000 00:00 0
   6214c5360000-6214c53a0000 rw-p 00000000 00:00 0                          [anon:Ruby:GC:default:heap_page_body_allocate]
   6214c53b0000-6214c53c0000 rw-p 00000000 00:00 0                          [anon:Ruby:GC:default:heap_page_body_allocate]
   6214c53c0000-6214c53d0000 r-xp 00000000 08:01 1279423                    /home/jaruga/git/ruby/ruby/.ext/powerpc64le-linux/enc/trans/transdb.so
   6214c53d0000-6214c53e0000 r--p 00000000 08:01 1279423                    /home/jaruga/git/ruby/ruby/.ext/powerpc64le-linux/enc/trans/transdb.so
   6214c53e0000-6214c53f0000 rw-p 00010000 08:01 1279423                    /home/jaruga/git/ruby/ruby/.ext/powerpc64le-linux/enc/trans/transdb.so
   6214c53f0000-6214c5400000 ---p 00000000 00:00 0
   6214c5400000-6214c5c00000 rw-p 00000000 00:00 0
   6214c5c00000-6214ddc00000 rw-p 00000000 00:00 0                          [anon:Ruby:Init_default_shapes:shape_cache]
   6214ddc00000-6214df000000 rw-p 00000000 00:00 0                          [anon:Ruby:Init_default_shapes:shape_list]
   6214df000000-6214df2f0000 r--p 00000000 08:01 5476                       /usr/lib/locale/locale-archive
   6214df2f0000-6214df400000 rw-p 00000000 00:00 0
   6214df400000-6214df660000 r-xp 00000000 08:01 25968                      /usr/lib/powerpc64le-linux-gnu/libc.so.6
   6214df660000-6214df670000 r--p 00260000 08:01 25968                      /usr/lib/powerpc64le-linux-gnu/libc.so.6
   6214df670000-6214df680000 rw-p 00270000 08:01 25968                      /usr/lib/powerpc64le-linux-gnu/libc.so.6
   6214df680000-6214df6b0000 rw-p 00000000 00:00 0
   6214df6b0000-6214df6c0000 r-xp 00000000 08:01 1279351                    /home/jaruga/git/ruby/ruby/.ext/powerpc64le-linux/enc/encdb.so
   6214df6c0000-6214df6d0000 r--p 00000000 08:01 1279351                    /home/jaruga/git/ruby/ruby/.ext/powerpc64le-linux/enc/encdb.so
   6214df6d0000-6214df6e0000 rw-p 00010000 08:01 1279351                    /home/jaruga/git/ruby/ruby/.ext/powerpc64le-linux/enc/encdb.so
   6214df6e0000-6214df750000 rw-p 00000000 00:00 0                          [anon:Ruby:GC:default:heap_page_body_allocate]
   6214df750000-6214df7b0000 r--p 00000000 08:01 26004                      /usr/lib/locale/C.utf8/LC_CTYPE
   6214df7b0000-6214df8e0000 r-xp 00000000 08:01 25971                      /usr/lib/powerpc64le-linux-gnu/libm.so.6
   6214df8e0000-6214df8f0000 r--p 00130000 08:01 25971                      /usr/lib/powerpc64le-linux-gnu/libm.so.6
   6214df8f0000-6214df900000 rw-p 00140000 08:01 25971                      /usr/lib/powerpc64le-linux-gnu/libm.so.6
   6214df900000-6214df940000 r-xp 00000000 08:01 5029                       /usr/lib/powerpc64le-linux-gnu/libcrypt.so.1.1.0
   6214df940000-6214df950000 r--p 00030000 08:01 5029                       /usr/lib/powerpc64le-linux-gnu/libcrypt.so.1.1.0
   6214df950000-6214df960000 rw-p 00040000 08:01 5029                       /usr/lib/powerpc64le-linux-gnu/libcrypt.so.1.1.0
   6214df960000-6214dfa00000 r-xp 00000000 08:01 27939                      /usr/lib/powerpc64le-linux-gnu/libgmp.so.10.5.0
   6214dfa00000-6214dfa10000 r--p 00090000 08:01 27939                      /usr/lib/powerpc64le-linux-gnu/libgmp.so.10.5.0
   6214dfa10000-6214dfa20000 rw-p 000a0000 08:01 27939                      /usr/lib/powerpc64le-linux-gnu/libgmp.so.10.5.0
   6214dfa20000-6214dfa50000 r-xp 00000000 08:01 23504                      /usr/lib/powerpc64le-linux-gnu/libz.so.1.3
   6214dfa50000-6214dfa60000 r--p 00020000 08:01 23504                      /usr/lib/powerpc64le-linux-gnu/libz.so.1.3
   6214dfa60000-6214dfa70000 rw-p 00030000 08:01 23504                      /usr/lib/powerpc64le-linux-gnu/libz.so.1.3
   6214dfa70000-6214dfa80000 r--s 00000000 08:01 25957                      /usr/lib/powerpc64le-linux-gnu/gconv/gconv-modules.cache
   6214dfa80000-6214dfaa0000 r--p 00000000 00:00 0                          [vvar]
   6214dfaa0000-6214dfab0000 r-xp 00000000 00:00 0                          [vdso]
   6214dfab0000-6214dfb00000 r-xp 00000000 08:01 25965                      /usr/lib/powerpc64le-linux-gnu/ld64.so.2
   6214dfb00000-6214dfb10000 r--p 00040000 08:01 25965                      /usr/lib/powerpc64le-linux-gnu/ld64.so.2
   6214dfb10000-6214dfb20000 rw-p 00050000 08:01 25965                      /usr/lib/powerpc64le-linux-gnu/ld64.so.2
   7fffdb140000-7fffdb170000 rw-p 00000000 00:00 0                          [stack]
#1363 test_ractor.rb:1451:
     port = Ractor::Port.new
     workers = (0...8).map do
       Ractor.new port do |port|
         loop do
           10_000.times.map { Object.new }
           port << Time.now
           Ractor.receive
         end
       end
     end

     100.times {
       workers.each do
         port.receive
       end
       workers.each do |w|
         w.send(nil)
       end
     }
     "ok"
  #=> "" (expected "ok")
stderr output is not empty
   vm_core.h:2017: vm_core.h:2017: Assertion Failed: rb_current_execution_context:ec == rb_current_ec_noinline()
   ruby 3.5.0dev (2025-08-06T15:07:49Z master f3206cc79b) +PRISM [powerpc64le-linux]

   -- Control frame information -----------------------------------------------
   c:0006 vm_core.h:2017: Assertion Failed: rb_current_execution_context:ec == rb_current_ec_noinline()
   ruby 3.5.0dev (2025-08-06T15:07:49Z master f3206cc79b) +PRISM [powerpc64le-linux]

   Crashed while printing bug report
test_ractor.rb            FAIL 2/145
test_string.rb            PASS 1
test_struct.rb            PASS 1
test_syntax.rb            PASS 164
test_thread.rb            PASS 50
test_yjit.rb              PASS 358
test_yjit_30k_ifelse.rb   PASS 1
test_yjit_30k_methods.rb  PASS 1
test_yjit_rust_port.rb    PASS 38

Finished in 88.25 sec

Fiber count: 10000 (skipping)
FAIL 2/2030 tests failed
make: *** [uncommon.mk:921: yes-btest-ruby] Error 1

@junaruga junaruga force-pushed the wip/gha-ppc64le-s390x branch 2 times, most recently from 9f30662 to 0bfdb7f Compare August 7, 2025 11:02
@junaruga
Copy link
Member Author

junaruga commented Aug 7, 2025

I opened the Ruby Bug ticket here after I debugged in the ppc64le server.

@junaruga junaruga force-pushed the wip/gha-ppc64le-s390x branch 11 times, most recently from 2d026cb to 1d6fcfb Compare August 12, 2025 11:00
Add the s390x case using GitHub Actions ppc64le/s390x service.
https://github.com/IBM/actionspz

We can run the ppc64le/s390x cases only in the registered upstream repositories.
https://github.com/IBM/actionspz/blob/main/docs/FAQ.md#what-about-forked-repos

The following matrix upstream logic is to skip the ppc64le/s390x in the
downstream (fork) repositories.

```
+        upstream:
+          - ${{ github.repository == 'ruby/ruby' }}
```

Use the "os" list to determine the excluded ppc64le/s390x cases by using the
"exclude" syntax. Because the "exclude" syntax are executed before the
"include" syntax.

Add the ubuntu-24.04-ppc64le as a comment, because the GitHub Actions ppc64le
case has the following test errors and failures.
https://bugs.ruby-lang.org/issues/21534
This is a temporary workaround.
@junaruga junaruga force-pushed the wip/gha-ppc64le-s390x branch from 1d6fcfb to 56326e1 Compare August 12, 2025 11:22
@junaruga junaruga changed the title CI: ubuntu.yml: Migrate Travis CI ppc64le/s390x cases to GitHub Actions. CI: ubuntu.yml: Add GitHub Actions s390x case Aug 12, 2025
@junaruga junaruga marked this pull request as ready for review August 12, 2025 11:33
@junaruga junaruga merged commit 9fa87a6 into ruby:master Aug 12, 2025
86 checks passed
@junaruga junaruga deleted the wip/gha-ppc64le-s390x branch August 12, 2025 13:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants