mattn / mattn/mruby-uv

Test failed on no IPv6 Debian GNU/Linux

Open
#75 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
92
Forks
25
PR merge metrics
No merged PRs in 30d

Description

Normal (IPv6 enabled) Debian GNU/Linux works fine, but test on IPv6 disabled one is failed.

  • mruby-uv: current master (25775c934d3030b9f26d0ce5220eadbadaca570f)
  • mruby: current master (7b88c1a8e5e7316c1ddad6fc63c2a90678a146fc) and 1.2.0
Setup and my environment
% VBoxManage --version
4.3.36_Debianr105129
% vagrant --version
Vagrant 1.9.7
% cat Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "debian/stretch64"
  if Vagrant.has_plugin?("vagrant-cachier")
    config.cache.disable!
  end
  config.vm.provision(:shell, inline: <<-SHELL)
set -xe

export DEBIAN_FRONTEND=noninteractive
apt-get update

cat > /etc/sysctl.d/50-disable_ipv6.conf <<EOS
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.all.disable_ipv6 = 1
EOS
sysctl --system

apt-get install -y ruby git build-essential bison curl automake libtool
cd ~vagrant/
sudo -u vagrant git clone https://github.com/mruby/mruby.git
sudo -u vagrant tee build_config.rb > /dev/null <<EOS
MRuby::Build.new do |conf|
  toolchain(:gcc)
  enable_debug
  enable_test
  gem(core: "mruby-print")
  gem(core: "mruby-sprintf")
  gem(core: "mruby-time")
  gem(mgem: "mruby-uv")
end
EOS

for i in master 1.2.0
do
  (cp -a mruby mruby-$i
   cd mruby-$i
   sudo -u vagrant git checkout $i
   cp -a ../build_config.rb .
   sudo -u vagrant ./minirake all) &
done
wait
  SHELL
end
% vagrant up && vagrant ssh
...
vagrant@stretch:~$ cd ~/mruby-master/
vagrant@stretch:~/mruby-master$ git rev-parse HEAD
7b88c1a8e5e7316c1ddad6fc63c2a90678a146fc
vagrant@stretch:~/mruby-master$ cd build/mrbgems/mruby-uv/
vagrant@stretch:~/mruby-master/build/mrbgems/mruby-uv$ git rev-parse HEAD
25775c934d3030b9f26d0ce5220eadbadaca570f
Run test
master
vagrant@stretch:~/mruby-master/build/mrbgems/mruby-uv$ cd ~/mruby-master/
vagrant@stretch:~/mruby-master$ ./minirake test
(in /home/vagrant/mruby-master)
GEN   *.rb -> build/host/mrbgems/mruby-test/mrbtest.c
CC    build/host/mrbgems/mruby-test/mrbtest.c -> build/host/mrbgems/mruby-test/mrbtest.o
LD    build/host/bin/mrbtest

Build summary:

================================================
      Config Name: host
 Output Directory: build/host
         Binaries: mrbc, mrbtest
    Included Gems:
             mruby-print - standard print/puts/p
             mruby-sprintf - standard Kernel#sprintf method
             mruby-time - standard Time class
             mruby-uv - libuv mruby binding
             mruby-compiler - mruby compiler library
             mruby-bin-mrbc - mruby compiler executable
             mruby-test - mruby test
================================================

>>> Test host <<<
mrbtest - Embeddable Ruby Test

...........................................................................................XXXXX....................................................................?..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
UVError: UV::UDP server/client => address not available (mrbgems: mruby-uv)
UVError: UV::Prepare, UV::Check => resource busy or locked (mrbgems: mruby-uv)
UVError: UV::Idle => resource busy or locked (mrbgems: mruby-uv)
UVError: UV::TCP IPv6 server/client => address not available (mrbgems: mruby-uv)
UVError: Process => address not available (mrbgems: mruby-uv)
Skip: Module#prepend super in alias  super does not currently work in aliased methods
Total: 710
   OK: 705
   KO: 0
Crash: 5
 Time: 0.46 seconds
rake aborted!
Command Failed: ["build/host/bin/mrbtest"]
Rakefile:123:in `block (2 levels) in <top (required)>'
1.2.0
vagrant@stretch:~/mruby-master$ cd ~/mruby-1.2.0/
vagrant@stretch:~/mruby-1.2.0$ ./minirake test
(in /home/vagrant/mruby-1.2.0)

Build summary:

================================================
      Config Name: host
 Output Directory: build/host
         Binaries: mrbc, mrbtest
    Included Gems:
             mruby-print - standard print/puts/p
             mruby-sprintf - standard Kernel#sprintf method
             mruby-time - standard Time class
             mruby-uv - libuv mruby binding
             mruby-compiler - mruby compiler library
             mruby-bin-mrbc - mruby compiler executable
             mruby-test - mruby test
================================================

>>> Test host <<<
mrbtest - Embeddable Ruby Test

........................................................?..........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XXXXX
Skip: Module#prepend super in alias  super does not currently work in aliased methods
UVError: UV::UDP server/client => address not available (mrbgems: mruby-uv)
UVError: UV::Prepare, UV::Check => resource busy or locked (mrbgems: mruby-uv)
UVError: UV::Idle => resource busy or locked (mrbgems: mruby-uv)
UVError: UV::TCP IPv6 server/client => address not available (mrbgems: mruby-uv)
UVError: Process => address not available (mrbgems: mruby-uv)
Total: 663
   OK: 658
   KO: 0
Crash: 5
 Time: 0.15 seconds
rake aborted!
Command Failed: ["build/host/bin/mrbtest"]
Rakefile:119:in `block (2 levels) in <top (required)>'

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure using the supplied Vagrantfile, which disables IPv6 on Debian, then run ./minirake test and review the mruby-uv test output and the Rakefile test invocation. Done means the suite handles an IPv6-disabled environment without the reported crashes while retaining the existing test coverage.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, ruby
Domain
networking, operating-systems, testing-qa
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.