Re: JVM crash on 64 bit SPARC with Elasticsearch 1.2.2 due to unaligned memory access

2014-08-29 Thread tony . aponte
Thanks again and sorry to bother you guys but I'm new to Github and don't 
know what do do from here.  Can you point me to the right place where I can 
take the next step to put this patch on my server?  I only know how to 
untar the tarball I downloaded from the main ES page.

Thanks.
Tony

On Wednesday, August 27, 2014 1:35:06 PM UTC-4, tony@iqor.com wrote:

 Kudos!

 Tony

 On Wednesday, August 27, 2014 1:16:11 PM UTC-4, Jörg Prante wrote:

 All praise should go to the fantastic Elasticsearch team who did not 
 hesitate to test the fix immediately and replaced it with a better working 
 solution, since the lzf-compress software is having weaknesses regarding 
 threadsafety.

 Jörg


 On Wed, Aug 27, 2014 at 7:01 PM, Ivan Brusic iv...@brusic.com wrote:

 Amazing job. Great work.

 -- 
 Ivan


 On Tue, Aug 26, 2014 at 12:41 PM, joerg...@gmail.com joerg...@gmail.com
  wrote:

 I fixed the issue by setting the safe LZF encoder in LZFCompressor and 
 opened a pull request 

 https://github.com/elasticsearch/elasticsearch/pull/7466

 Jörg


 On Tue, Aug 26, 2014 at 8:17 PM, joerg...@gmail.com joerg...@gmail.com
  wrote:

 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, joerg...@gmail.com 
 joerg...@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@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 

Re: JVM crash on 64 bit SPARC with Elasticsearch 1.2.2 due to unaligned memory access

2014-08-29 Thread tony . aponte
The easiest for me is to install fresh binaries but I'm not shy about 
learning about Maven while I build it from source.  

Thanks
Tony

On Friday, August 29, 2014 11:21:34 AM UTC-4, Jörg Prante wrote:

 Do you want to build from source? Or do you want to install a fresh binary?

 At jenkins.elasticsearch.org I can not find any snapshot builds but it 
 may be just me.

 It would be a nice add-on to provide snapshot builds for users that 
 eagerly await bug fixes or take a ride on the bleeding edge before the next 
 release arrives, without release notes etc.

 Jörg


 On Fri, Aug 29, 2014 at 4:29 PM, tony@iqor.com javascript: wrote:

 Thanks again and sorry to bother you guys but I'm new to Github and don't 
 know what do do from here.  Can you point me to the right place where I can 
 take the next step to put this patch on my server?  I only know how to 
 untar the tarball I downloaded from the main ES page.

 Thanks.
 Tony


 On Wednesday, August 27, 2014 1:35:06 PM UTC-4, tony@iqor.com wrote:

 Kudos!

 Tony

 On Wednesday, August 27, 2014 1:16:11 PM UTC-4, Jörg Prante wrote:

 All praise should go to the fantastic Elasticsearch team who did not 
 hesitate to test the fix immediately and replaced it with a better working 
 solution, since the lzf-compress software is having weaknesses regarding 
 threadsafety.

 Jörg


 On Wed, Aug 27, 2014 at 7:01 PM, Ivan Brusic iv...@brusic.com wrote:

 Amazing job. Great work.

 -- 
 Ivan


 On Tue, Aug 26, 2014 at 12:41 PM, joerg...@gmail.com 
 joerg...@gmail.com wrote:

 I fixed the issue by setting the safe LZF encoder in LZFCompressor 
 and opened a pull request 

 https://github.com/elasticsearch/elasticsearch/pull/7466

 Jörg


 On Tue, Aug 26, 2014 at 8:17 PM, joerg...@gmail.com 
 joerg...@gmail.com wrote:

 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, joerg...@gmail.com 
 joerg...@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@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 

Re: JVM crash on 64 bit SPARC with Elasticsearch 1.2.2 due to unaligned memory access

2014-08-29 Thread tony . aponte
Thank you very much.
Tony

On Friday, August 29, 2014 3:27:33 PM UTC-4, Jörg Prante wrote:

 Quick guide:

 - install Java 7 (or Java 8), Apache Maven, and git, also ensure internet 
 connection to the Maven central repo 

 - clone 1.3 branch only (you could also clone the whole repo and switch to 
 the branch): git clone https://github.com/elasticsearch/elasticsearch.git 
 --branch 1.3 --single-branch es-1.3

 - enter folder es-1.3

 - start build: mvn -DskipTests clean install

 - wait a few minutes while Maven loads all dependent artifacts and 
 compiles ~3000 source files

 The result will be a complete build of all binaries. In the 'target' 
 folder, after the Build complete message of Maven, you will see a file 
 elasticsearch-VERSION.jar

 VERSION is something like 1.3.3-SNAPSHOT. You can copy this file into 
 your existing Elasticsearch 1.3.x installation lib folder. Do not forget 
 to adjust bin/elasticsearch.in.sh to point to the new 
 elasticsearch-VERSION.jar file in the classpath configuration (at the top 
 lines). This must be the first jar on the classpath so it can patch Lucene 
 jars.

 If you have already data in the existing Elasticsearch I recommend to 
 backup everything before starting the new snapshot build - no guarantees, 
 use at your own risk.

 Jörg




 On Fri, Aug 29, 2014 at 7:36 PM, tony@iqor.com javascript: wrote:

 The easiest for me is to install fresh binaries but I'm not shy about 
 learning about Maven while I build it from source.  

 Thanks
 Tony


 On Friday, August 29, 2014 11:21:34 AM UTC-4, Jörg Prante wrote:

 Do you want to build from source? Or do you want to install a fresh 
 binary?

 At jenkins.elasticsearch.org I can not find any snapshot builds but it 
 may be just me.

 It would be a nice add-on to provide snapshot builds for users that 
 eagerly await bug fixes or take a ride on the bleeding edge before the next 
 release arrives, without release notes etc.

 Jörg


 On Fri, Aug 29, 2014 at 4:29 PM, tony@iqor.com wrote:

 Thanks again and sorry to bother you guys but I'm new to Github and 
 don't know what do do from here.  Can you point me to the right place 
 where 
 I can take the next step to put this patch on my server?  I only know how 
 to untar the tarball I downloaded from the main ES page.

 Thanks.
 Tony


 On Wednesday, August 27, 2014 1:35:06 PM UTC-4, tony@iqor.com 
 wrote:

 Kudos!

 Tony

 On Wednesday, August 27, 2014 1:16:11 PM UTC-4, Jörg Prante wrote:

 All praise should go to the fantastic Elasticsearch team who did not 
 hesitate to test the fix immediately and replaced it with a better 
 working 
 solution, since the lzf-compress software is having weaknesses regarding 
 threadsafety.

 Jörg


 On Wed, Aug 27, 2014 at 7:01 PM, Ivan Brusic iv...@brusic.com 
 wrote:

 Amazing job. Great work.

 -- 
 Ivan


 On Tue, Aug 26, 2014 at 12:41 PM, joerg...@gmail.com 
 joerg...@gmail.com wrote:

 I fixed the issue by setting the safe LZF encoder in LZFCompressor 
 and opened a pull request 

 https://github.com/elasticsearch/elasticsearch/pull/7466

 Jörg


 On Tue, Aug 26, 2014 at 8:17 PM, joerg...@gmail.com 
 joerg...@gmail.com wrote:

 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, joerg...@gmail.com 
 joerg...@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@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,   
   

Re: JVM crash on 64 bit SPARC with Elasticsearch 1.2.2 due to unaligned memory access

2014-08-27 Thread tony . aponte
Kudos!

Tony

On Wednesday, August 27, 2014 1:16:11 PM UTC-4, Jörg Prante wrote:

 All praise should go to the fantastic Elasticsearch team who did not 
 hesitate to test the fix immediately and replaced it with a better working 
 solution, since the lzf-compress software is having weaknesses regarding 
 threadsafety.

 Jörg


 On Wed, Aug 27, 2014 at 7:01 PM, Ivan Brusic iv...@brusic.com 
 javascript: wrote:

 Amazing job. Great work.

 -- 
 Ivan


 On Tue, Aug 26, 2014 at 12:41 PM, joerg...@gmail.com javascript: 
 joerg...@gmail.com javascript: wrote:

 I fixed the issue by setting the safe LZF encoder in LZFCompressor and 
 opened a pull request 

 https://github.com/elasticsearch/elasticsearch/pull/7466

 Jörg


 On Tue, Aug 26, 2014 at 8:17 PM, joerg...@gmail.com javascript: 
 joerg...@gmail.com javascript: wrote:

 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, joerg...@gmail.com javascript: 
 joerg...@gmail.com javascript: 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@iqor.com javascript: 
 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 

Re: JVM crash on 64 bit SPARC with Elasticsearch 1.2.2 due to unaligned memory access

2014-08-25 Thread tony . aponte
It's as big as my ES_HEAP_SIZE parameter, 30g.

Tony

On Friday, August 22, 2014 10:37:39 PM UTC-4, Robert Muir 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 javascript: 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=0x7a9a3d8c, 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 (0x000107078000):  JavaThread 
 elasticsearch[KYLIE1][http_server_worker][T#17]{New I/O worker #147} 
 daemon [_thread_in_vm, id=209, stack(0x5b80,
 0x5b84)]

 siginfo:si_signo=SIGBUS: si_errno=0, si_code=1 (BUS_ADRALN), 
 si_addr=0x000709cc09e7


 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=0x7e452d78, 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.

Re: JVM crash on 64 bit SPARC with Elasticsearch 1.2.2 due to unaligned memory access

2014-08-25 Thread tony . aponte
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 javascript: 
 joerg...@gmail.com javascript: 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 
 javascript: 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 javascript: 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=0x7a9a3d8c, 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 (0x000107078000):  JavaThread 
 elasticsearch[KYLIE1][http_server_worker][T#17]{New I/O worker 
 #147} daemon [_thread_in_vm, id=209, stack(0x5b80,
 0x5b84)]

 siginfo:si_signo=SIGBUS: si_errno=0, si_code=1 (BUS_ADRALN), 
 si_addr=0x000709cc09e7


 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=0x7e452d78, 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/

Re: JVM crash on 64 bit SPARC with Elasticsearch 1.2.2 due to unaligned memory access

2014-08-25 Thread tony . aponte
I was able to trim the heap size and, consequently, the core file down to 
about 530m.  

Tony

On Monday, August 25, 2014 3:41:14 PM UTC-4, tony@iqor.com wrote:

 It's as big as my ES_HEAP_SIZE parameter, 30g.

 Tony

 On Friday, August 22, 2014 10:37:39 PM UTC-4, Robert Muir 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=0x7a9a3d8c, 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 (0x000107078000):  JavaThread 
 elasticsearch[KYLIE1][http_server_worker][T#17]{New I/O worker 
 #147} daemon [_thread_in_vm, id=209, stack(0x5b80,
 0x5b84)]

 siginfo:si_signo=SIGBUS: si_errno=0, si_code=1 (BUS_ADRALN), 
 si_addr=0x000709cc09e7


 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=0x7e452d78, 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;
 

Re: JVM crash on 64 bit SPARC with Elasticsearch 1.2.2 due to unaligned memory access

2014-08-25 Thread tony . aponte
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=0x7a9a3d8c, 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 (0x000107078000):  JavaThread 
 elasticsearch[KYLIE1][http_server_worker][T#17]{New I/O worker 
 #147} daemon [_thread_in_vm, id=209, stack(0x5b80,
 0x5b84)]

 siginfo:si_signo=SIGBUS: si_errno=0, si_code=1 (BUS_ADRALN), 
 si_addr=0x000709cc09e7


 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=0x7e452d78, 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 
 

Re: JVM crash on 64 bit SPARC with Elasticsearch 1.2.2 due to unaligned memory access

2014-08-22 Thread tony . aponte
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 javascript: 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=0x7a9a3d8c, 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 (0x000107078000):  JavaThread 
 elasticsearch[KYLIE1][http_server_worker][T#17]{New I/O worker #147} 
 daemon [_thread_in_vm, id=209, stack(0x5b80,0x5b84)]

 siginfo:si_signo=SIGBUS: si_errno=0, si_code=1 (BUS_ADRALN), 
 si_addr=0x000709cc09e7


 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=0x7e452d78, 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/
 BytesRefComparisonsBenchmark.java:import org.elasticsearch.common.util.
 UnsafeUtils;
 ./src/test/java/org/elasticsearch/benchmark/common/util/
 BytesRefComparisonsBenchmark.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/
 BytesReference.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.java:long k1 = UnsafeUtils.readLongLE(key, 
 i);
 ./src/main/java/org/elasticsearch/common/hash/
 MurmurHash3.java: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, 

Re: JVM crash on 64 bit SPARC with Elasticsearch 1.2.2 due to unaligned memory access

2014-08-21 Thread tony . aponte
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=0x7a9a3d8c, 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 (0x000107078000):  JavaThread 
elasticsearch[KYLIE1][http_server_worker][T#17]{New I/O worker #147} 
daemon [_thread_in_vm, id=209, stack(0x5b80,0x5b84)]

siginfo:si_signo=SIGBUS: si_errno=0, si_code=1 (BUS_ADRALN), 
si_addr=0x000709cc09e7


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=0x7e452d78, 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/BytesRefComparisonsBenchmark.java:import
  
 org.elasticsearch.common.util.UnsafeUtils;
 ./src/test/java/org/elasticsearch/benchmark/common/util/BytesRefComparisonsBenchmark.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/BytesReference.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.java:   
  
 long k1 = UnsafeUtils.readLongLE(key, i);
 ./src/main/java/org/elasticsearch/common/hash/MurmurHash3.java:   
  
 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