Still broken with lzf-compress 1.0.3

https://gist.github.com/jprante/d2d829b497db4963aea5

Jörg


On Tue, Aug 26, 2014 at 7:54 PM, joergpra...@gmail.com <
joergpra...@gmail.com> wrote:

> Thanks for the logstash mapping command. I can reproduce it now.
>
> It's the LZF encoder that bails out at
> org.elasticsearch.common.compress.lzf.impl.UnsafeChunkEncoderBE._getInt
>
> which uses in turn sun.misc.Unsafe.getInt
>
> I have created a gist of the JVM crash file at
>
> https://gist.github.com/jprante/79f4b4c0b9fd83eb1c9b
>
> There has been a fix in LZF lately
> https://github.com/ning/compress/commit/db7f51bddc5b7beb47da77eeeab56882c650bff7
>
> for version 1.0.3 which has been released recently.
>
> I will build a snapshot ES version with LZF 1.0.3 and see if this works...
>
> Jörg
>
>
>
> On Mon, Aug 25, 2014 at 11:30 PM, <tony.apo...@iqor.com> wrote:
>
>> I captured a WireShark trace of the interaction between ES and Logstash
>> 1.4.1.  The error occurs even before my data is sent.  Can you try to
>> reproduce it on your testbed with this message I captured?
>>
>> curl -XPUT http://amssc103-mgmt-app2:9200/_template/logstash -d @y
>>
>> Contests of file 'y":
>> {  "template" : "logstash-*",  "settings" : {    "index.refresh_interval"
>> : "5s"  },  "mappings" : {    "_default_" : {       "_all" : {"enabled" :
>> true},       "dynamic_templates" : [ {         "string_fields" : {
>>   "match" : "*",           "match_mapping_type" : "string",
>> "mapping" : {             "type" : "string", "index" : "analyzed",
>> "omit_norms" : true,               "fields" : {                 "raw" :
>> {"type": "string", "index" : "not_analyzed", "ignore_above" : 256}
>>       }           }         }       } ],       "properties" : {
>> "@version": { "type": "string", "index": "not_analyzed" },         "geoip"
>>  : {           "type" : "object",             "dynamic": true,
>> "path": "full",             "properties" : {               "location" : {
>> "type" : "geo_point" }             }         }       }    }  }}
>>
>>
>>
>> On Monday, August 25, 2014 3:53:18 PM UTC-4, tony....@iqor.com wrote:
>>>
>>> I have no plugins installed (yet) and only changed "es.logger.level" to
>>> DEBUG in logging.yml.
>>>
>>> elasticsearch.yml:
>>> cluster.name: es-AMS1Cluster
>>> node.name: "KYLIE1"
>>> node.rack: amssc2client02
>>> path.data: /export/home/apontet/elasticsearch/data
>>> path.work: /export/home/apontet/elasticsearch/work
>>> path.logs: /export/home/apontet/elasticsearch/logs
>>> network.host: ********       <===== sanitized line; file contains actual
>>> server IP
>>> discovery.zen.ping.multicast.enabled: false
>>> discovery.zen.ping.unicast.hosts: ["s1", "s2", "s3", "s5" , "s6", "s7"]
>>>   <===== Also sanitized
>>>
>>> Thanks,
>>> Tony
>>>
>>>
>>>
>>>
>>> On Saturday, August 23, 2014 6:29:40 AM UTC-4, Jörg Prante wrote:
>>>>
>>>> I tested a simple "Hello World" document on Elasticsearch 1.3.2 with
>>>> Oracle JDK 1.7.0_17 64-bit Server VM, Sparc Solaris 10, default settings.
>>>>
>>>> No issues.
>>>>
>>>> So I would like to know more about the settings in elasticsearch.yml,
>>>> the mappings, and the installed plugins.
>>>>
>>>> Jörg
>>>>
>>>>
>>>> On Sat, Aug 23, 2014 at 11:25 AM, joerg...@gmail.com <
>>>> joerg...@gmail.com> wrote:
>>>>
>>>>> I have some Solaris 10 Sparc V440/V445 servers available and can try
>>>>> to reproduce over the weekend.
>>>>>
>>>>> Jörg
>>>>>
>>>>>
>>>>> On Sat, Aug 23, 2014 at 4:37 AM, Robert Muir <
>>>>> rober...@elasticsearch.com> wrote:
>>>>>
>>>>>> How big is it? Maybe i can have it anyway? I pulled two ancient
>>>>>> ultrasparcs out of my closet to try to debug your issue, but 
>>>>>> unfortunately
>>>>>> they are a pita to work with (dead nvram battery on both, zeroed mac
>>>>>> address, etc.) Id still love to get to the bottom of this.
>>>>>>  On Aug 22, 2014 3:59 PM, <tony....@iqor.com> wrote:
>>>>>>
>>>>>>> Hi Adrien,
>>>>>>> It's a bunch of garbled binary data, basically a dump of the process
>>>>>>> image.
>>>>>>> Tony
>>>>>>>
>>>>>>>
>>>>>>> On Thursday, August 21, 2014 6:36:12 PM UTC-4, Adrien Grand wrote:
>>>>>>>>
>>>>>>>> Hi Tony,
>>>>>>>>
>>>>>>>> Do you have more information in the core dump file? (cf. the "Core
>>>>>>>> dump written" line that you pasted)
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Aug 21, 2014 at 7:53 PM, <tony....@iqor.com> wrote:
>>>>>>>>
>>>>>>>>> Hello,
>>>>>>>>> I installed ES 1.3.2 on a spare Solaris 11/ T4-4 SPARC server to
>>>>>>>>> scale out of small x86 machine.  I get a similar exception running ES 
>>>>>>>>> with
>>>>>>>>> JAVA_OPTS=-d64.  When Logstash 1.4.1 sends the first message I get the
>>>>>>>>> error below on the ES process:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> #
>>>>>>>>> # A fatal error has been detected by the Java Runtime Environment:
>>>>>>>>> #
>>>>>>>>> #  SIGBUS (0xa) at pc=0xffffffff7a9a3d8c, pid=14473, tid=209
>>>>>>>>> #
>>>>>>>>> # JRE version: 7.0_25-b15
>>>>>>>>> # Java VM: Java HotSpot(TM) 64-Bit Server VM (23.25-b01 mixed mode
>>>>>>>>> solaris-sparc compressed oops)
>>>>>>>>> # Problematic frame:
>>>>>>>>> # V  [libjvm.so+0xba3d8c]  Unsafe_GetInt+0x158
>>>>>>>>> #
>>>>>>>>> # Core dump written. Default location: /export/home/elasticsearch/
>>>>>>>>> elasticsearch-1.3.2/core or core.14473
>>>>>>>>> #
>>>>>>>>> # If you would like to submit a bug report, please visit:
>>>>>>>>> #   http://bugreport.sun.com/bugreport/crash.jsp
>>>>>>>>> #
>>>>>>>>>
>>>>>>>>> ---------------  T H R E A D  ---------------
>>>>>>>>>
>>>>>>>>> Current thread (0x0000000107078000):  JavaThread
>>>>>>>>> "elasticsearch[KYLIE1][http_server_worker][T#17]{New I/O worker
>>>>>>>>> #147}" daemon [_thread_in_vm, id=209, stack(0xffffffff5b800000,
>>>>>>>>> 0xffffffff5b840000)]
>>>>>>>>>
>>>>>>>>> siginfo:si_signo=SIGBUS: si_errno=0, si_code=1 (BUS_ADRALN),
>>>>>>>>> si_addr=0x0000000709cc09e7
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I can run ES using 32bit java but have to shrink ES_HEAPS_SIZE
>>>>>>>>> more than I want to.  Any assistance would be appreciated.
>>>>>>>>>
>>>>>>>>> Regards,
>>>>>>>>> Tony
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tuesday, July 22, 2014 5:43:28 AM UTC-4, David Roberts wrote:
>>>>>>>>>>
>>>>>>>>>> Hello,
>>>>>>>>>>
>>>>>>>>>> After upgrading from Elasticsearch 1.0.1 to 1.2.2 I'm getting JVM
>>>>>>>>>> core dumps on Solaris 10 on SPARC.
>>>>>>>>>>
>>>>>>>>>> # A fatal error has been detected by the Java Runtime Environment:
>>>>>>>>>> #
>>>>>>>>>> #  SIGBUS (0xa) at pc=0xffffffff7e452d78, pid=15483, tid=263
>>>>>>>>>> #
>>>>>>>>>> # JRE version: Java(TM) SE Runtime Environment (7.0_55-b13)
>>>>>>>>>> (build 1.7.0_55-b13)
>>>>>>>>>> # Java VM: Java HotSpot(TM) 64-Bit Server VM (24.55-b03 mixed
>>>>>>>>>> mode solaris-sparc compressed oops)
>>>>>>>>>> # Problematic frame:
>>>>>>>>>> # V  [libjvm.so+0xc52d78]  Unsafe_GetLong+0x158
>>>>>>>>>>
>>>>>>>>>> I'm pretty sure the problem here is that Elasticsearch is making
>>>>>>>>>> increasing use of "unsafe" functions in Java, presumably to speed 
>>>>>>>>>> things
>>>>>>>>>> up, and some CPUs are more picky than others about memory alignment. 
>>>>>>>>>>  In
>>>>>>>>>> particular, x86 will tolerate misaligned memory access whereas SPARC 
>>>>>>>>>> won't.
>>>>>>>>>>
>>>>>>>>>> Somebody has tried to report this to Oracle in the past and
>>>>>>>>>> (understandably) Oracle has said that if you're going to use unsafe
>>>>>>>>>> functions you need to understand what you're doing:
>>>>>>>>>> http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8021574
>>>>>>>>>>
>>>>>>>>>> A quick grep through the code of the two versions of
>>>>>>>>>> Elasticsearch shows that the new use of "unsafe" memory access 
>>>>>>>>>> functions is
>>>>>>>>>> in the BytesReference, MurmurHash3 and HyperLogLogPlusPlus classes:
>>>>>>>>>>
>>>>>>>>>> bash-3.2$ git checkout v1.0.1
>>>>>>>>>> Checking out files: 100% (2904/2904), done.
>>>>>>>>>>
>>>>>>>>>> bash-3.2$ find . -name '*.java' | xargs grep UnsafeUtils
>>>>>>>>>> ./src/main/java/org/elasticsearch/common/util/UnsafeUtils.java:public
>>>>>>>>>> enum UnsafeUtils {
>>>>>>>>>> ./src/main/java/org/elasticsearch/search/aggregations/bucket/
>>>>>>>>>> BytesRefHash.java:            if (id == -1L ||
>>>>>>>>>> UnsafeUtils.equals(key, get(id, spare))) {
>>>>>>>>>> ./src/main/java/org/elasticsearch/search/aggregations/bucket/
>>>>>>>>>> BytesRefHash.java:            } else if (UnsafeUtils.equals(key,
>>>>>>>>>> get(curId, spare))) {
>>>>>>>>>> ./src/test/java/org/elasticsearch/benchmark/common/util/Byte
>>>>>>>>>> sRefComparisonsBenchmark.java:import
>>>>>>>>>> org.elasticsearch.common.util.UnsafeUtils;
>>>>>>>>>> ./src/test/java/org/elasticsearch/benchmark/common/util/Byte
>>>>>>>>>> sRefComparisonsBenchmark.java:                return
>>>>>>>>>> UnsafeUtils.equals(b1, b2);
>>>>>>>>>>
>>>>>>>>>> bash-3.2$ git checkout v1.2.2
>>>>>>>>>> Checking out files: 100% (2220/2220), done.
>>>>>>>>>>
>>>>>>>>>> bash-3.2$ find . -name '*.java' | xargs grep UnsafeUtils
>>>>>>>>>> ./src/main/java/org/elasticsearch/common/bytes/BytesReference.java:import
>>>>>>>>>> org.elasticsearch.common.util.UnsafeUtils;
>>>>>>>>>> ./src/main/java/org/elasticsearch/common/bytes/BytesReferenc
>>>>>>>>>> e.java:                return UnsafeUtils.equals(a.array(),
>>>>>>>>>> a.arrayOffset(), b.array(), b.arrayOffset(), a.length());
>>>>>>>>>> ./src/main/java/org/elasticsearch/common/hash/MurmurHash3.java:import
>>>>>>>>>> org.elasticsearch.common.util.UnsafeUtils;
>>>>>>>>>> ./src/main/java/org/elasticsearch/common/hash/MurmurHash3.java:
>>>>>>>>>> return UnsafeUtils.readLongLE(key, blockOffset);
>>>>>>>>>> ./src/main/java/org/elasticsearch/common/hash/MurmurHash3.ja
>>>>>>>>>> va:                long k1 = UnsafeUtils.readLongLE(key, i);
>>>>>>>>>> ./src/main/java/org/elasticsearch/common/hash/MurmurHash3.ja
>>>>>>>>>> va:                long k2 = UnsafeUtils.readLongLE(key, i + 8);
>>>>>>>>>> ./src/main/java/org/elasticsearch/common/util/BytesRefHash.java:
>>>>>>>>>> if (id == -1L || UnsafeUtils.equals(key, get(id, spare))) {
>>>>>>>>>> ./src/main/java/org/elasticsearch/common/util/BytesRefHash.java:
>>>>>>>>>> } else if (UnsafeUtils.equals(key, get(curId, spare))) {
>>>>>>>>>> ./src/main/java/org/elasticsearch/common/util/UnsafeUtils.java:public
>>>>>>>>>> enum UnsafeUtils {
>>>>>>>>>> ./src/main/java/org/elasticsearch/search/aggregations/metrics/
>>>>>>>>>> cardinality/HyperLogLogPlusPlus.java:import
>>>>>>>>>> org.elasticsearch.common.util.UnsafeUtils;
>>>>>>>>>> ./src/main/java/org/elasticsearch/search/aggregations/metrics/
>>>>>>>>>> cardinality/HyperLogLogPlusPlus.java:            return
>>>>>>>>>> UnsafeUtils.readIntLE(readSpare.bytes, readSpare.offset);
>>>>>>>>>> ./src/test/java/org/elasticsearch/benchmark/common/util/Byte
>>>>>>>>>> sRefComparisonsBenchmark.java:import
>>>>>>>>>> org.elasticsearch.common.util.UnsafeUtils;
>>>>>>>>>> ./src/test/java/org/elasticsearch/benchmark/common/util/Byte
>>>>>>>>>> sRefComparisonsBenchmark.java:                return
>>>>>>>>>> UnsafeUtils.equals(b1, b2);
>>>>>>>>>>
>>>>>>>>>> Presumably one of these three new uses is what is causing the JVM
>>>>>>>>>> SIGBUS error I'm seeing.
>>>>>>>>>>
>>>>>>>>>> A quick look at the MurmurHash3 class shows that the hash128
>>>>>>>>>> method accepts an arbitrary offset and passes it to an unsafe 
>>>>>>>>>> function with
>>>>>>>>>> no check that it's a multiple of 8:
>>>>>>>>>>
>>>>>>>>>>     public static Hash128 hash128(byte[] key, int offset, int
>>>>>>>>>> length, long seed, Hash128 hash) {
>>>>>>>>>>         long h1 = seed;
>>>>>>>>>>         long h2 = seed;
>>>>>>>>>>
>>>>>>>>>>         if (length >= 16) {
>>>>>>>>>>
>>>>>>>>>>             final int len16 = length & 0xFFFFFFF0; // higher
>>>>>>>>>> multiple of 16 that is lower than or equal to length
>>>>>>>>>>             final int end = offset + len16;
>>>>>>>>>>             for (int i = offset; i < end; i += 16) {
>>>>>>>>>>                 long k1 = UnsafeUtils.readLongLE(key, i);
>>>>>>>>>>                 long k2 = UnsafeUtils.readLongLE(key, i + 8);
>>>>>>>>>>
>>>>>>>>>> This is a recipe for generating JVM core dumps on architectures
>>>>>>>>>> such as SPARC, Itanium and PowerPC that don't support unaligned 64 
>>>>>>>>>> bit
>>>>>>>>>> memory access.
>>>>>>>>>>
>>>>>>>>>> Does Elasticsearch have any policy for support of hardware other
>>>>>>>>>> than x86?  If not, I don't think many people would care but you 
>>>>>>>>>> really
>>>>>>>>>> ought to clearly say so on your platform support page.  If you do 
>>>>>>>>>> intend to
>>>>>>>>>> support non-x86 architectures then you need to be much more careful 
>>>>>>>>>> about
>>>>>>>>>> the use of unsafe memory accesses.
>>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>>
>>>>>>>>>> David
>>>>>>>>>>
>>>>>>>>>  --
>>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>>> Groups "elasticsearch" group.
>>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>>> send an email to elasticsearc...@googlegroups.com.
>>>>>>>>> To view this discussion on the web visit
>>>>>>>>> https://groups.google.com/d/msgid/elasticsearch/eb7f4c23-b63
>>>>>>>>> e-4c2e-87c3-029fc58449fc%40googlegroups.com
>>>>>>>>> <https://groups.google.com/d/msgid/elasticsearch/eb7f4c23-b63e-4c2e-87c3-029fc58449fc%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>> .
>>>>>>>>>
>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Adrien Grand
>>>>>>>>
>>>>>>>  --
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "elasticsearch" group.
>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>> send an email to elasticsearc...@googlegroups.com.
>>>>>>> To view this discussion on the web visit
>>>>>>> https://groups.google.com/d/msgid/elasticsearch/12aa33de-
>>>>>>> ccc7-485a-8c52-562f3e91a535%40googlegroups.com
>>>>>>> <https://groups.google.com/d/msgid/elasticsearch/12aa33de-ccc7-485a-8c52-562f3e91a535%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>
>>>>>>  --
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "elasticsearch" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an email to elasticsearc...@googlegroups.com.
>>>>>> To view this discussion on the web visit https://groups.google.com/d/
>>>>>> msgid/elasticsearch/CAMUKNZXOKeJq8Datx2KY7cSfJXDH1
>>>>>> YGDNmQjNWDQ2jci%3DfN31Q%40mail.gmail.com
>>>>>> <https://groups.google.com/d/msgid/elasticsearch/CAMUKNZXOKeJq8Datx2KY7cSfJXDH1YGDNmQjNWDQ2jci%3DfN31Q%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>>
>>>>>
>>>>  --
>> You received this message because you are subscribed to the Google Groups
>> "elasticsearch" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to elasticsearch+unsubscr...@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/elasticsearch/c62191ea-543b-462d-95e9-aff125c0a6f0%40googlegroups.com
>> <https://groups.google.com/d/msgid/elasticsearch/c62191ea-543b-462d-95e9-aff125c0a6f0%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elasticsearch+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/CAKdsXoGN-Dx-toi1gmAhFkmqT8RV6BdOF9ZtcsZmhu9iTkX75Q%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to