こんな感じ
OpenJDK Client VM warning: You have loaded library /home/elasticsearch/elasticsearch-0.90.5/lib/sigar/libsigar-x86-linux.so which might have disabled stack guard. The VM will try to fix the stack guard now.
It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
言われた通りに
execstack -c lib/sigar/libsigar-x86-linux.so
で、
[elasticsearch@localhost elasticsearch-0.90.5]$ ./bin/elasticsearch -f
[2013-09-27 10:14:01,379][WARN ][bootstrap ] jvm uses the client vm, make sure to run `java` with the server vm for best performance by adding `-server` to the command line
[2013-09-27 10:14:01,543][INFO ][node ] [Hamilton Slade] version[0.90.5], pid[8053], build[c8714e8/2013-09-17T12:50:20Z]
[2013-09-27 10:14:01,543][INFO ][node ] [Hamilton Slade] initializing ...
[2013-09-27 10:14:01,562][INFO ][plugins ] [Hamilton Slade] loaded [analysis-kuromoji], sites []
[2013-09-27 10:14:05,202][INFO ][node ] [Hamilton Slade] initialized
[2013-09-27 10:14:05,203][INFO ][node ] [Hamilton Slade] starting ...
[2013-09-27 10:14:05,420][INFO ][transport ] [Hamilton Slade] bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/192.168.100.2:9300]}
[2013-09-27 10:14:08,488][INFO ][cluster.service ] [Hamilton Slade] new_master [Hamilton Slade][7nOVYzdYTw6pBl7G70S89A][inet[/192.168.100.2:9300]], reason: zen-disco-join (elected_as_master)
[2013-09-27 10:14:08,550][INFO ][discovery ] [Hamilton Slade] elasticsearch/7nOVYzdYTw6pBl7G70S89A
[2013-09-27 10:14:08,587][INFO ][http ] [Hamilton Slade] bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/192.168.100.2:9200]}
[2013-09-27 10:14:08,588][INFO ][node ] [Hamilton Slade] started
[2013-09-27 10:14:08,660][INFO ][gateway ] [Hamilton Slade] recovered [0] indices into cluster_state
今度は出ない。
これ何やねんというと、
execstack(8) System Manager's Manual execstack(8)
NAME
execstack - tool to set, clear, or query executable stack flag of ELF binaries and shared libraries
SYNOPSIS
execstack [OPTION...] [FILES]
DESCRIPTION
execstack is a program which sets, clears, or queries executable stack flag of ELF binaries and shared libraries. Linux has in the past allowed execution of instruc‐
tions on the stack and there are lots of binaries and shared libraries assuming this behaviour. Furthermore, GCC trampoline code for e.g. nested functions requires
executable stack on many architectures. To avoid breaking binaries and shared libraries which need executable stack, ELF binaries and shared libraries now can be
marked as requiring executable stack or not requiring it. This marking is done through the p_flags field in the PT_GNU_STACK program header entry. If the marking is
missing, kernel or dynamic linker need to assume it might need executable stack. The marking is done automatically by recent GCC versions (objects using trampolines
on the stack are marked as requiring executable stack, all other newly built objects are marked as not requiring it) and linker collects these markings into marking of
the whole binary or shared library. The user can override this at assembly time (through --execstack or --noexecstack assembler options), at link time (through -z
execstack or -z noexecstack linker options) and using the execstack tool also on an already linker binary or shared library. This tool is especially useful for third
party shared libraries where it is known that they don't need executable stack or testing proves it.
OPTIONS
-s --set-execstack
Mark binary or shared library as requi
あーなるほどね、全然分かりません。
つまりこういうことでした。