Issue #16360 has been updated by jaruga (Jun Aruga).


https://bugs.ruby-lang.org/issues/16360#note-7

I am still debugging for the "stack level too deep (SystemStackError)" issue that happens on only ppc64le.

When I was debugging with following file,

```
$ cat spec/ruby/library/socket/socket/udp_server_loop_debug3_spec.rb
require_relative '../../../spec_helper'
require 'socket'

describe 'Socket.udp_server_loop debug' do
  it 'blocks the caller' do
    # socket_block = -> do
    #   Socket.ip_address_list
    # end

    socket_block = proc { Socket.ip_address_list }

    # This line is okay.
    puts "[DEBUG] 1 Socket.ip_address_list"
    p Socket.ip_address_list

    # This line is error.
    # See spec/mspec/lib/mspec/matchers/block_caller.rb
    puts "[DEBUG] 2 Socket.ip_address_list with mspec block_caller"
    socket_block.should_not block_caller
  end
end
```

running like this.

.travis.yml

```
- $SETARCH make test-spec MSPECOPT="-ff -V" SPECOPTS="../spec/ruby/library/socket/socket/udp_server_loop_debug3_spec.rb"
```

The "[DEBUG] 1" `p Socket.ip_address_list` is okay.
But "[DEBUG] 2" when `proc { Socket.ip_address_list }` is used with mspec block_caller, it's not okay. The result is like this.
https://travis-ci.org/junaruga/ruby/jobs/646473964#L2792

Here is the strace's log.
It might be related to the socket with network device and Thread.

```
[pid 17528] getsockname(5, {sa_family=AF_NETLINK, pid=17527, groups=00000000}, [12]) = 0
[pid 17528] --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_ACCERR, si_addr=0x7d7fd6d8d620} ---
```

Rei Odaira, is it possible to run `make test-spec SPECOPTS="spec/ruby/library/socket/socket/udp_server_loop_spec.rb"` on your ppc64le environment? Does it work on your environment?
Thanks.



----------------------------------------
Misc #16360: Enabling IBM PowerPC/Z cases in Travis CI
https://bugs.ruby-lang.org/issues/16360#change-84168

* Author: jaruga (Jun Aruga)
* Status: Open
* Priority: Normal
----------------------------------------
We added `arm64-linux` and `arm32-linux` cases to Travis CI by [the ticket](https://bugs.ruby-lang.org/issues/16234).
The `arm32-linux` case is going to be stable after [this pull-request](https://github.com/ruby/ruby/pull/2686) will be merged.

So, I would like to talk about this topic.
Currently Travis CI has following 4 multiple CPU architectures cases.

* `x86_64-linux` (Intel, 64-bit, Little-endian)
* `arm64-linux` (ARM, 64-bit, Little-endian)
* `i686-linux` (Intel, 32-bit, Little-endian)
* `arm32-linux` (ARM, 32-bit, Little-endian)

And a exciting news came from Travis CI this month.
Now Travis supports `arch: ppc64le` and `arch: s390x` as `arch: arm64` as well.

Build your open source projects on IBM Power and IBM Z CPU architecture
https://blog.travis-ci.com/2019-11-12-multi-cpu-architecture-ibm-power-ibm-z


So, how do you think about adding following 2 cases to Travis CI too?

* `ppc64le-linux` (IBM PowerPC, 64-bit, Little-endian)
* `s390x-linux` (IBM Z/Linux One, 64-bit, Big-endian)


## ppc64le, s390x use cases in Ruby project

* Searching tickets in Redmine, there were some architecture specific issues in the past.
* https://rubyci.org/ has s390x. But it seems it does not have ppc64le.
* s390x is a big-endian. It looks good to check the big-endian specific issue.


## ppc64le, s390x use cases in Linux distributions

For example Ubuntu is supporting ppc64le, s390x, providing the container image.

> https://hub.docker.com/_/ubuntu
> Supported architectures: (more info)
> amd64, arm32v7, arm64v8, i386, ppc64le, s390x

Fedora project is supporting ppc64le, s390x too.

> https://hub.docker.com/_/fedora
> Supported architectures: (more info)
> amd64, arm32v7, arm64v8, ppc64le, s390x

Are you interested in adding the ppc64le and s390x test cases to Travis CI?




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>