On 13 January 2015 at 01:12, sebb <seb...@gmail.com> wrote:
> On 13 January 2015 at 00:53, Phil Steitz <phil.ste...@gmail.com> wrote:
>> On 1/12/15 5:44 PM, sebb wrote:
>>> On 12 January 2015 at 22:21, Thomas Neidhart <thomas.neidh...@gmail.com> 
>>> wrote:
>>>> On 01/12/2015 11:17 PM, Phil Steitz wrote:
>>>>> On 1/12/15 2:30 PM, Thomas Neidhart wrote:
>>>>>> On 01/12/2015 10:26 PM, Thomas Neidhart wrote:
>>>>>>> On 01/12/2015 08:09 PM, Phil Steitz wrote:
>>>>>>>> On 1/12/15 11:37 AM, sebb wrote:
>>>>>>>>> On 12 January 2015 at 18:11, Phil Steitz <phil.ste...@gmail.com> 
>>>>>>>>> wrote:
>>>>>>>>>> On 1/12/15 10:50 AM, sebb wrote:
>>>>>>>>>>> On 11 January 2015 at 22:10, Phil Steitz <phil.ste...@gmail.com> 
>>>>>>>>>>> wrote:
>>>>>>>>>>>> On 1/11/15 11:19 AM, Phil Steitz wrote:
>>>>>>>>>>>>> On 1/10/15 10:49 PM, Phil Steitz wrote:
>>>>>>>>>>>>>> On 1/9/15 6:09 PM, sebb wrote:
>>>>>>>>>>>>>>> On 10 January 2015 at 01:01, Phil Steitz 
>>>>>>>>>>>>>>> <phil.ste...@gmail.com> wrote:
>>>>>>>>>>>>>>>> On 1/9/15 5:32 PM, sebb wrote:
>>>>>>>>>>>>>>>>> On 9 January 2015 at 23:48, sebb <seb...@gmail.com> wrote:
>>>>>>>>>>>>>>>>>> Of the last 6 runs, only 1 had a problem with unit test 
>>>>>>>>>>>>>>>>>> failures.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> All the builds ran on ubuntu3, apart from the failure which 
>>>>>>>>>>>>>>>>>> ran on H10.
>>>>>>>>>>>>>>>>>> This may have some bearing on the result; I don't yet know.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> I had a quick look at 2 tests that failed:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> SimpleRegressionTest.testPerfect
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> SimpleRegressionTest.testPerfectNegative
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Although the test case has some instance data, these 
>>>>>>>>>>>>>>>>>> particular tests
>>>>>>>>>>>>>>>>>> do not use any, so it does not look like a concurrency issue 
>>>>>>>>>>>>>>>>>> in the
>>>>>>>>>>>>>>>>>> unit test itself.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> The SimpleRegression class has mutable instance data, but 
>>>>>>>>>>>>>>>>>> the test
>>>>>>>>>>>>>>>>>> cases create their own instance.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> I don't know anything about the math functions involved, but 
>>>>>>>>>>>>>>>>>> it looks
>>>>>>>>>>>>>>>>>> as though Infinity might result from getSignificance() if
>>>>>>>>>>>>>>>>>> getSlopeStdErr() returns 0, as the latter is used as a 
>>>>>>>>>>>>>>>>>> divisor. Or if
>>>>>>>>>>>>>>>>>> the field sumXX is 0 because that is also used as a divisor.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Maybe the H10 host has different floating point hardware?
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> I'll try running some more tests on H10.
>>>>>>>>>>>>>>>>> the build failed again on H10; exactly the same tests failed 
>>>>>>>>>>>>>>>>> as before:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> This test:
>>>>>>>>>>>>>>>>> https://builds.apache.org/job/Commons%20Math%20H10/1/console
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Previous failure:
>>>>>>>>>>>>>>>>> https://builds.apache.org/job/Commons%20Math/14/console
>>>>>>>>>>>>>>>> This is actually a bug.  Thanks, sebb (and Jenkins)!
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Has been here since 1.x.  What is going on is that the data 
>>>>>>>>>>>>>>>> sets
>>>>>>>>>>>>>>>> used in the test cases are set up to be perfect linear
>>>>>>>>>>>>>>>> relationships, which should in fact lead to mean square error 
>>>>>>>>>>>>>>>> (and
>>>>>>>>>>>>>>>> hence slope standard error) equal to 0.  The Jenkins box must 
>>>>>>>>>>>>>>>> be
>>>>>>>>>>>>>>>> getting exact 0.  The funny thing is the test is there to 
>>>>>>>>>>>>>>>> validate
>>>>>>>>>>>>>>>> correct performance for models like this.  Its success 
>>>>>>>>>>>>>>>> unfortunately
>>>>>>>>>>>>>>>> depends on poor precision.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I will open a JIRA for this.  I don't think it is a release 
>>>>>>>>>>>>>>>> blocker
>>>>>>>>>>>>>>>> for 3.4.1, as I am sure you would get the same thing in any 
>>>>>>>>>>>>>>>> earlier
>>>>>>>>>>>>>>>> version of [math].
>>>>>>>>>>>>>>> OK good to know.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I'll leave the H10 Jenkins job for now to make it easy to 
>>>>>>>>>>>>>>> retest.
>>>>>>>>>>>>>> My first guess here was wrong.  The infinities are being handled
>>>>>>>>>>>>>> correctly for the JDKs I have.  Something must be going awry in 
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>> t distribution cumulative probability computation for +INF on the
>>>>>>>>>>>>>> box that is failing.  Is there a way to find out exactly what JDK
>>>>>>>>>>>>>> and OS version are being used?
>>>>>>>>>>>>> I just committed a test that tests the t distribution computations
>>>>>>>>>>>>> directly.  It seems to have run clean; but the other test ran 
>>>>>>>>>>>>> clean
>>>>>>>>>>>>> too.  Is there any way to force the build to use the host that 
>>>>>>>>>>>>> fails?
>>>>>>>>>>>> I can't make any sense of what is going on with the Jenkins builds.
>>>>>>>>>>>> Clean runs and then lots of errors.  This one explains the
>>>>>>>>>>>> SimpleRegression "problem" (which is not a problem with that class
>>>>>>>>>>>> at least)
>>>>>>>>>>>>
>>>>>>>>>>>> testCumulativeProbablilityExtremes(org.apache.commons.math3.distribution.TDistributionTest)
>>>>>>>>>>>>   Time elapsed: 0.001 sec  <<< FAILURE!
>>>>>>>>>>>> java.lang.AssertionError: expected:<1.0> but was:<-Infinity>
>>>>>>>>>>>>         at org.junit.Assert.fail(Assert.java:88)
>>>>>>>>>>>>         at org.junit.Assert.failNotEquals(Assert.java:743)
>>>>>>>>>>>>         at org.junit.Assert.assertEquals(Assert.java:494)
>>>>>>>>>>>>         at org.junit.Assert.assertEquals(Assert.java:592)
>>>>>>>>>>>>         at 
>>>>>>>>>>>> org.apache.commons.math3.distribution.TDistributionTest.testCumulativeProbablilityExtremes(TDistributionTest.java:109)
>>>>>>>>>>>>
>>>>>>>>>>>> Earlier runs this ran clean. There is nothing non-deterministic 
>>>>>>>>>>>> about this test (or quite a few of the others that randomly seem 
>>>>>>>>>>>> to fail).
>>>>>>>>>>>>
>>>>>>>>>>>> I wonder if we have a bad cpu or something somewhere.
>>>>>>>>>>> AFAICS all the failed builds ran on H10.
>>>>>>>>>>>
>>>>>>>>>>> IMO it is consistent; the apparent randomness comes from the fact 
>>>>>>>>>>> the
>>>>>>>>>>> there are several Ubuntu hosts, including H10.
>>>>>>>>>> Am I reading it / looking at the wrong one, or did this one succeed?
>>>>>>>>>>
>>>>>>>>>> https://builds.apache.org/view/All/job/Commons%20Math%20H10/6/
>>>>>>>>>>
>>>>>>>>>> That one was right after I added tests confirming that the t
>>>>>>>>>> distribution cum prob handles INFs correctly.
>>>>>>>>> That did run on H10 and did succeed; I'd not noticed that one before.
>>>>>>>>>
>>>>>>>>> I think it is still true that the failures have only occurred on H10.
>>>>>>>>>
>>>>>>>>> However, the latest one is failing:
>>>>>>>>>
>>>>>>>>> https://builds.apache.org/job/Commons%20Math/24/console
>>>>>>>>>
>>>>>>>>> This is on H11 - I think that's the first time H11 has been used.
>>>>>>>>>
>>>>>>>>> I suppose it's possible that H10 and H11 have a common failing, but it
>>>>>>>>> seems less likely.
>>>>>>>>>
>>>>>>>>> I added a bit more debug - showing the value of sumXX - but that seems
>>>>>>>>> OK on H11.
>>>>>>>>>
>>>>>>>>> I just added a bit more debug.
>>>>>>>> I am pretty sure the SimpleRegressionTest failure is actually cause
>>>>>>>> by the same thing causing the t-distribution test to fail (the
>>>>>>>> reason I added that one).
>>>>>>>>
>>>>>>>> One that is more straightforward to chase is this one, which fails
>>>>>>>> pretty consistently when "bad things happen"
>>>>>>>>
>>>>>>>> testExpInf(org.apache.commons.math3.complex.ComplexTest)  Time 
>>>>>>>> elapsed: 0.001 sec  <<< FAILURE!
>>>>>>>> java.lang.AssertionError: expected:<0.0> but was:<Infinity>
>>>>>>>>    at org.junit.Assert.fail(Assert.java:88)
>>>>>>>>    at org.junit.Assert.failNotEquals(Assert.java:743)
>>>>>>>>    at org.junit.Assert.assertEquals(Assert.java:494)
>>>>>>>>    at org.junit.Assert.assertEquals(Assert.java:592)
>>>>>>>>    at org.apache.commons.math3.TestUtils.assertSame(TestUtils.java:76)
>>>>>>>>    at org.apache.commons.math3.TestUtils.assertSame(TestUtils.java:84)
>>>>>>>>    at 
>>>>>>>> org.apache.commons.math3.complex.ComplexTest.testExpInf(ComplexTest.java:788)
>>>>>>>>
>>>>>>>> I would wager that what is going on here is 0.0 * -INF = INF.
>>>>>>> The output returned by the debug statements added by sebb is:
>>>>>>>
>>>>>>> expReal=Infinity
>>>>>>> cosImag=0.5403023058681398
>>>>>>> sinImag=0.8414709848078965
>>>>>>> result=(Infinity, Infinity)
>>>>>>>
>>>>>>> while expReal should be -Infinity.
>>>>>>>
>>>>>>> of course, Math.exp(Infinity) = Infinity.
>>>>>> oh stupid mistake, please forget my last post.
>>>>>> I messed up expReal with the actual real value.
>>>>> But it should be 0, since expReal should be exp(-INF)
>>>> just added a few more debug output to the test and the result is:
>>>>
>>>> real=-Infinity
>>>> -real=2147483647
>>>> expReal=Infinity
>>>>
>>>> according to FastMath.exp(), with these values, the code path should be
>>>> as follows:
>>>>
>>>>         if (x < 0.0) {
>>>>             intVal = (int) -x;
>>>>
>>>>             if (intVal > 746) {
>>>>                 if (hiPrec != null) {
>>>>                     hiPrec[0] = 0.0;
>>>>                     hiPrec[1] = 0.0;
>>>>                 }
>>>> -->             return 0.0;
>>>>             }
>>>>
>>>>
>>>> but obviously it doesn't do this. I guess we can only inspect the
>>>> generated class files for a potential compiler bug.
>>> That suggests there should be some additional FastMath tests to show
>>> the underlying error.
>
> Actually there is such a test and it also fails.
>
>>> Perhaps compare with the basic Math versions where relevant.
>>
>> What Thomas is pointing out is that the code is not executing
>> correctly, unless we are missing something.  This has nothing to do
>> with FastMath vs. Math.
>
> I was just suggesting that it would be worth checking Math to make
> sure it does not behave the same way.
>
>>  Did we ever find out what the JDK is?
>
> No, but could probably add debug to show the java system variables.

I've added a new test with that, plus a test of Math.exp()

>> Given the sporadic nature of the failures (different tests failing
>> different times),
>
> Are we sure different tests are failing?
> I've not checked that.
>
> The same hosts fail each time.

Oops, no they don't always fail.

>> I wonder if there is some kind of storage /
>> filesystem or cpu corruption going on.  Do the Jenkins slaves share
>> a common file system or disk array?  Are they virtual hosts?
>
> No idea.
> I just think its suspicious that the failures seem to be repeatable.
> If a host fails once, it always fails.

Oops - not so, they sometimes work...

> Hardware failures tend to be more random, and given the test
> environment it's unlikely that the same memory will be used each time.

>> Phil
>>>
>>>> Thomas
>>>>
>>>>> Phil
>>>>>> Thomas
>>>>>>
>>>>>>> Thomas
>>>>>>>
>>>>>>>>> I can perhaps change the H10 job to additionally run on H11.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Phi
>>>>>>>>>>>> Phil
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>> Phil
>>>>>>>>>>>>>> Phil
>>>>>>>>>>>>>>>> Phil
>>>>>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>>>>>>>>>>>>>>>> For additional commands, e-mail: dev-h...@commons.apache.org
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>>>>>>>>>>>>>>> For additional commands, e-mail: dev-h...@commons.apache.org
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>>>>>>>>>>>>>> For additional commands, e-mail: dev-h...@commons.apache.org
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>>>>>>>>>>> For additional commands, e-mail: dev-h...@commons.apache.org
>>>>>>>>>>>>
>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>>>>>>>>>> For additional commands, e-mail: dev-h...@commons.apache.org
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>>>>>>>>> For additional commands, e-mail: dev-h...@commons.apache.org
>>>>>>>>>>
>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>>>>>>>> For additional commands, e-mail: dev-h...@commons.apache.org
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>>>>>>> For additional commands, e-mail: dev-h...@commons.apache.org
>>>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>>>>> For additional commands, e-mail: dev-h...@commons.apache.org
>>>>>>
>>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>>>> For additional commands, e-mail: dev-h...@commons.apache.org
>>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>>> For additional commands, e-mail: dev-h...@commons.apache.org
>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>>> For additional commands, e-mail: dev-h...@commons.apache.org
>>>
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
>> For additional commands, e-mail: dev-h...@commons.apache.org
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to