Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Won't Fix
    • Affects Version/s: 4.0-ALPHA
    • Fix Version/s: None
    • Component/s: None
    • Labels:
    • Environment:

      JDK 7 Preview Release, GA (fixed in JDK 1.7.0_1)

    • Lucene Fields:
      New

      Description

      I dug into the samplingwrappertest fail: https://builds.apache.org/job/Lucene-Solr-tests-only-trunk-java7/22/

      I ran the test hundreds of times, and made 11 more random seeds. In every case, the $facet field had PulsingCodec (or MockRandom, which pulses things)

      Here's an example seed, that fails relatively quickly (4 seconds) every time:
      ant test -Dtestcase=SamplingWrapperTest -Dtestmethod=testCountUsingSamping -Dtests.seed=3028256727308316121:-9062105085025921705

      1. seeds.txt
        2 kB
        Robert Muir

        Issue Links

          Activity

          Hide
          Robert Muir added a comment -

          attached are all the seeds i found, just before i call it quits and drink my last beer.

          at least it doesnt affect 3.x or any release

          Show
          Robert Muir added a comment - attached are all the seeds i found, just before i call it quits and drink my last beer. at least it doesnt affect 3.x or any release
          Hide
          Robert Muir added a comment -

          grr, so the problem appears to occur actually in StandardCodec, but only in the case where its wrapped by pulsing?!

          the test passes if i use:

          ant test -Dtestcase=SamplingWrapperTest -Dtestmethod=testCountUsingSamping -Dtests.seed=3028256727308316121:-9062105085025921705 
          -Dargs='-XX:CompileCommand=exclude,org/apache/lucene/index/codecs/standard/StandardPostingsReader\$SegmentDocsAndPositionsAndPayloadsEnum,nextDoc'
          
          Show
          Robert Muir added a comment - grr, so the problem appears to occur actually in StandardCodec, but only in the case where its wrapped by pulsing?! the test passes if i use: ant test -Dtestcase=SamplingWrapperTest -Dtestmethod=testCountUsingSamping -Dtests.seed=3028256727308316121:-9062105085025921705 -Dargs='-XX:CompileCommand=exclude,org/apache/lucene/index/codecs/standard/StandardPostingsReader\$SegmentDocsAndPositionsAndPayloadsEnum,nextDoc'
          Hide
          Robert Muir added a comment -

          I created some workarounds for some of these seeds (heavy unrolling/manual inlining here and there), but this is really a collection of different broken loops, there are a lot of problems.

          So i will leave this guy alone, hopefully nobody will ever use jdk1.7.0 with pulsing codec

          Show
          Robert Muir added a comment - I created some workarounds for some of these seeds (heavy unrolling/manual inlining here and there), but this is really a collection of different broken loops, there are a lot of problems. So i will leave this guy alone, hopefully nobody will ever use jdk1.7.0 with pulsing codec
          Hide
          Uwe Schindler added a comment -

          And of course never use aggressive opts in 1.6 g

          Show
          Uwe Schindler added a comment - And of course never use aggressive opts in 1.6 g
          Hide
          Robert Muir added a comment -

          I can reproduce one of the bugs here now with StandardCodec, with a core test, it reads a payload wrongly.
          This fails often with jdk1.7.0 official release, it fails if you pass it -XX:-UseLoopPredicate, it fails even if you pass it -Xint (wierd)

          But it passes always with java1.7.0-uschindler on hudson, so somehow one of those patches uwe applied fixes the issue...

          So with trunk, there are bugs you cannot work around with JRE options, that affect StandardCodec.

              [junit] ------------- Standard Error -----------------
              [junit] NOTE: reproduce with: ant test -Dtestcase=TestPayloads -Dtestmethod=testThreadSafety -Dtests.seed=-4249818591398960258:-529634722590138117 -Dtests.codec=Standard
              [junit] NOTE: test params are: codec=Standard, locale=be, timezone=Pacific/Pitcairn
              [junit] NOTE: all tests run in this JVM:
              [junit] [TestPayloads]
              [junit] NOTE: Linux 2.6.38-8-generic amd64/Oracle Corporation 1.7.0 (64-bit)/cpus=8,threads=1,free=194162192,total=252248064
              [junit] ------------- ---------------- ---------------
              [junit] Testcase: testThreadSafety(org.apache.lucene.index.TestPayloads):	Caused an ERROR
              [junit] expected:<�[]> but was:<�[�Ns]>
          
          Show
          Robert Muir added a comment - I can reproduce one of the bugs here now with StandardCodec, with a core test, it reads a payload wrongly. This fails often with jdk1.7.0 official release, it fails if you pass it -XX:-UseLoopPredicate, it fails even if you pass it -Xint (wierd) But it passes always with java1.7.0-uschindler on hudson, so somehow one of those patches uwe applied fixes the issue... So with trunk, there are bugs you cannot work around with JRE options, that affect StandardCodec. [junit] ------------- Standard Error ----------------- [junit] NOTE: reproduce with: ant test -Dtestcase=TestPayloads -Dtestmethod=testThreadSafety -Dtests.seed=-4249818591398960258:-529634722590138117 -Dtests.codec=Standard [junit] NOTE: test params are: codec=Standard, locale=be, timezone=Pacific/Pitcairn [junit] NOTE: all tests run in this JVM: [junit] [TestPayloads] [junit] NOTE: Linux 2.6.38-8-generic amd64/Oracle Corporation 1.7.0 (64-bit)/cpus=8,threads=1,free=194162192,total=252248064 [junit] ------------- ---------------- --------------- [junit] Testcase: testThreadSafety(org.apache.lucene.index.TestPayloads): Caused an ERROR [junit] expected:<�[]> but was:<�[�Ns]>
          Hide
          Robert Muir added a comment -

          I triggered this with Standard's SegmentDocsEnum too, so you don't need payloads to hit this.

          I do not think a workaround is possible, I tried to add asserts in places but I think the bug somehow involves adding docid deltas in the loop...

          Show
          Robert Muir added a comment - I triggered this with Standard's SegmentDocsEnum too, so you don't need payloads to hit this. I do not think a workaround is possible, I tried to add asserts in places but I think the bug somehow involves adding docid deltas in the loop...
          Hide
          Krystian Nowak added a comment -
          Show
          Krystian Nowak added a comment - Seems like finally done in 7u2: http://www.oracle.com/technetwork/java/javase/2col/7u2bugfixes-1394661.html
          Hide
          Uwe Schindler added a comment -

          It is already solved in u1!

          Show
          Uwe Schindler added a comment - It is already solved in u1!

            People

            • Assignee:
              Unassigned
              Reporter:
              Robert Muir
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development