kgio RubyGem user+dev discussion/patches/pulls/bugs/help
 help / color / mirror / code / Atom feed
* Test failure caused by commit 377028d99
@ 2013-09-04 20:14 Hleb Valoshka
  2013-09-04 20:51 ` Eric Wong
  0 siblings, 1 reply; 9+ messages in thread
From: Hleb Valoshka @ 2013-09-04 20:14 UTC (permalink / raw)
  To: kgio

On my Debian Sid with kernel 3.11-rc7 4 of 5 invocations of
test_poll_EINTR_changed finished with failure:

$ make test/test_poll.rb
ruby -I lib:tmp/ext/ruby-1.9.3/ext/kgio test/test_poll.rb 
Loaded suite test/test_poll
Started
..F
===============================================================================
Failure:
test_poll_EINTR_changed(TestPoll)
test/test_poll.rb:105:in `test_poll_EINTR_changed'
     102:     res = Kgio.poll(pollset, 1000)
     103:     diff = Time.now - t0
     104:     thr.join
  => 105:     assert_equal({@wr => Kgio::POLLOUT}, res)
     106:     assert diff < 1.0, "diff=#{diff}"
     107:     assert ok
     108:     ensure
<{#<IO:fd 6>=>4}> expected but was
<nil>

diff:
? {#<IO:fd 6>=>4}
? nil            
===============================================================================
......

Finished in 7.476580682 seconds.

9 tests, 22 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
88.8889% passed

1.20 tests/s, 2.94 assertions/s

With commit 377028d99 (test_poll: avoid potentially thread-unsafe test)
reverted this test finishes successfully.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Test failure caused by commit 377028d99
  2013-09-04 20:14 Test failure caused by commit 377028d99 Hleb Valoshka
@ 2013-09-04 20:51 ` Eric Wong
  2013-09-05  7:55   ` Hleb Valoshka
  2013-09-05 19:48   ` Hleb Valoshka
  0 siblings, 2 replies; 9+ messages in thread
From: Eric Wong @ 2013-09-04 20:51 UTC (permalink / raw)
  To: kgio

Hleb Valoshka <375gnu@gmail.com> wrote:
> On my Debian Sid with kernel 3.11-rc7 4 of 5 invocations of
> test_poll_EINTR_changed finished with failure:

Thanks for the report.  Unfortunately, I can't seem to reproduce it,
here on 1.9.3 nor 2.0.0 with Linux 3.10.10.

The test will probably not work well under heavy load, and I've
considered removing it, even.  Current behavior may not be compatible
with all Ruby versions depending on how signal handling is implemented.

Does the following change increase reliability for you?

--- a/test/test_poll.rb
+++ b/test/test_poll.rb
@@ -96,7 +96,10 @@ def test_poll_EINTR_changed
     end
     thr = Thread.new do
       sleep 0.100
-      Process.kill(:USR1, $$)
+      100.times do
+        Process.kill(:USR1, $$)
+        Thread.pass
+      end
     end
     t0 = Time.now
     res = Kgio.poll(pollset, 1000)

If not, I think we can just drop the test...


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Test failure caused by commit 377028d99
  2013-09-04 20:51 ` Eric Wong
@ 2013-09-05  7:55   ` Hleb Valoshka
  2013-09-05 19:48   ` Hleb Valoshka
  1 sibling, 0 replies; 9+ messages in thread
From: Hleb Valoshka @ 2013-09-05  7:55 UTC (permalink / raw)
  To: kgio

On 9/4/13, Eric Wong <normalperson@yhbt.net> wrote:
>> On my Debian Sid with kernel 3.11-rc7 4 of 5 invocations of
>> test_poll_EINTR_changed finished with failure:
>
> Thanks for the report.  Unfortunately, I can't seem to reproduce it,
> here on 1.9.3 nor 2.0.0 with Linux 3.10.10.

It also unreproducible on 3.2.46-1+deb7u1 (Debian stable).

> The test will probably not work well under heavy load, and I've
> considered removing it, even.  Current behavior may not be compatible
> with all Ruby versions depending on how signal handling is implemented.
>
> Does the following change increase reliability for you?

I'll test it when I return home.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Test failure caused by commit 377028d99
  2013-09-04 20:51 ` Eric Wong
  2013-09-05  7:55   ` Hleb Valoshka
@ 2013-09-05 19:48   ` Hleb Valoshka
  2013-09-05 23:13     ` Eric Wong
  1 sibling, 1 reply; 9+ messages in thread
From: Hleb Valoshka @ 2013-09-05 19:48 UTC (permalink / raw)
  To: kgio

On 9/4/13, Eric Wong <normalperson@yhbt.net> wrote:
> Does the following change increase reliability for you?

Yes, it helps. Thanks.

> --- a/test/test_poll.rb
> +++ b/test/test_poll.rb
> @@ -96,7 +96,10 @@ def test_poll_EINTR_changed
>      end
>      thr = Thread.new do
>        sleep 0.100
> -      Process.kill(:USR1, $$)
> +      100.times do
> +        Process.kill(:USR1, $$)
> +        Thread.pass
> +      end
>      end
>      t0 = Time.now
>      res = Kgio.poll(pollset, 1000)


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Test failure caused by commit 377028d99
  2013-09-05 19:48   ` Hleb Valoshka
@ 2013-09-05 23:13     ` Eric Wong
  2013-09-15 19:07       ` Hleb Valoshka
  0 siblings, 1 reply; 9+ messages in thread
From: Eric Wong @ 2013-09-05 23:13 UTC (permalink / raw)
  To: kgio

Hleb Valoshka <375gnu@gmail.com> wrote:
> On 9/4/13, Eric Wong <normalperson@yhbt.net> wrote:
> > Does the following change increase reliability for you?
> 
> Yes, it helps. Thanks.

Thanks for testing, pushed as
commit ff940137dc5098c9d8094e041e9be053cb3e139f


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Test failure caused by commit 377028d99
  2013-09-05 23:13     ` Eric Wong
@ 2013-09-15 19:07       ` Hleb Valoshka
  2013-09-21  9:30         ` Eric Wong
  0 siblings, 1 reply; 9+ messages in thread
From: Hleb Valoshka @ 2013-09-15 19:07 UTC (permalink / raw)
  To: kgio

On 9/6/13, Eric Wong <normalperson@yhbt.net> wrote:
>> > Does the following change increase reliability for you?
>> Yes, it helps. Thanks.
> Thanks for testing, pushed as
> commit ff940137dc5098c9d8094e041e9be053cb3e139f

Another problem has emerged :) Sometimes ruby delivers signals too
late and this test dies because of unhandled USR1. At least Ruby2.0 is
affected (I have no problem with this test under Ruby1.9.3). May be
it's better to remove it.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Test failure caused by commit 377028d99
  2013-09-15 19:07       ` Hleb Valoshka
@ 2013-09-21  9:30         ` Eric Wong
  2013-09-24 15:02           ` Hleb Valoshka
  0 siblings, 1 reply; 9+ messages in thread
From: Eric Wong @ 2013-09-21  9:30 UTC (permalink / raw)
  To: kgio

Hleb Valoshka <375gnu@gmail.com> wrote:
> On 9/6/13, Eric Wong <normalperson@yhbt.net> wrote:
> >> > Does the following change increase reliability for you?
> >> Yes, it helps. Thanks.
> > Thanks for testing, pushed as
> > commit ff940137dc5098c9d8094e041e9be053cb3e139f
> 
> Another problem has emerged :) Sometimes ruby delivers signals too
> late and this test dies because of unhandled USR1. At least Ruby2.0 is
> affected (I have no problem with this test under Ruby1.9.3). May be
> it's better to remove it.

Ugh, yes, this is tricky to test...
Does the following help?

diff --git a/test/test_poll.rb b/test/test_poll.rb
index d9a2b07..5c8071d 100644
--- a/test/test_poll.rb
+++ b/test/test_poll.rb
@@ -108,6 +108,8 @@ class TestPoll < Test::Unit::TestCase
     assert_equal({@wr => Kgio::POLLOUT}, res)
     assert diff < 1.0, "diff=#{diff}"
     assert ok
+
+    1000.times { Thread.pass } # let signal handlers fire
     ensure
       trap(:USR1, orig)
   end


(I'm sleepy myself and thinking out loud)
Or it could be just made to sleep (and slow down the tests even more)
Thanks!


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: Test failure caused by commit 377028d99
  2013-09-21  9:30         ` Eric Wong
@ 2013-09-24 15:02           ` Hleb Valoshka
  2013-09-25 17:46             ` Eric Wong
  0 siblings, 1 reply; 9+ messages in thread
From: Hleb Valoshka @ 2013-09-24 15:02 UTC (permalink / raw)
  To: kgio

On 9/21/13, Eric Wong <normalperson@yhbt.net> wrote:

> Does the following help?

No. I was using ruby 2.1.0dev (2013-09-22 trunk 43011) [x86_64-linux].

20 runs, 2 signals still were delivered too late, 1 test failure:

[3/9] TestPoll#test_poll_EINTR_changed = 1.00 s
  1) Failure:
TestPoll#test_poll_EINTR_changed [test/test_poll.rb:108]:
<{#<IO:fd 9>=>4}> expected but was
<nil>.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: Test failure caused by commit 377028d99
  2013-09-24 15:02           ` Hleb Valoshka
@ 2013-09-25 17:46             ` Eric Wong
  0 siblings, 0 replies; 9+ messages in thread
From: Eric Wong @ 2013-09-25 17:46 UTC (permalink / raw)
  To: kgio

Hleb Valoshka <375gnu@gmail.com> wrote:
> On 9/21/13, Eric Wong <normalperson@yhbt.net> wrote:
> 
> > Does the following help?
> 
> No. I was using ruby 2.1.0dev (2013-09-22 trunk 43011) [x86_64-linux].
> 
> 20 runs, 2 signals still were delivered too late, 1 test failure:

Thanks for the report.  I'm not sure what can be done :< git will
remember for us in case we want to resurrect a fixed version of it.
I'll push this out:

Subject: [PATCH] test_poll: remove race prone test_poll_EINTR_changed test

We haven't figured out a way to reliably test this w/o races, so lets
just remove it for now and trust it works by reading the C code.

ref: <CAAB-KcnpvcG6=OZNsBmvv440OHfCWs6-eDD7L6oD=ziCRXPHLA@mail.gmail.com>
---
 test/test_poll.rb | 25 -------------------------
 1 file changed, 25 deletions(-)

diff --git a/test/test_poll.rb b/test/test_poll.rb
index d9a2b07..6463ef9 100644
--- a/test/test_poll.rb
+++ b/test/test_poll.rb
@@ -87,31 +87,6 @@ class TestPoll < Test::Unit::TestCase
       trap(:USR1, orig)
   end
 
-  def test_poll_EINTR_changed
-    ok = false
-    pollset = { @rd => Kgio::POLLIN }
-    orig = trap(:USR1) do
-      pollset[@wr] = Kgio::POLLOUT
-      ok = true
-    end
-    thr = Thread.new do
-      sleep 0.100
-      100.times do
-        Process.kill(:USR1, $$)
-        Thread.pass
-      end
-    end
-    t0 = Time.now
-    res = Kgio.poll(pollset, 1000)
-    diff = Time.now - t0
-    thr.join
-    assert_equal({@wr => Kgio::POLLOUT}, res)
-    assert diff < 1.0, "diff=#{diff}"
-    assert ok
-    ensure
-      trap(:USR1, orig)
-  end
-
   def test_poll_signal_torture
     usr1 = 0
     empty = 0
-- 
1.8.4


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2013-09-25 17:46 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-09-04 20:14 Test failure caused by commit 377028d99 Hleb Valoshka
2013-09-04 20:51 ` Eric Wong
2013-09-05  7:55   ` Hleb Valoshka
2013-09-05 19:48   ` Hleb Valoshka
2013-09-05 23:13     ` Eric Wong
2013-09-15 19:07       ` Hleb Valoshka
2013-09-21  9:30         ` Eric Wong
2013-09-24 15:02           ` Hleb Valoshka
2013-09-25 17:46             ` Eric Wong

Code repositories for project(s) associated with this public inbox

	https://yhbt.net/kgio.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).