Hello Kou,
Thanks a lot for your reply.
We have followed your advice to adopt a copy of arrow package 16.x
including libgandiva_jni.so from
https://repository.apache.org/#nexus-search;quick~arrow-gandiva.
It seems worked w/o previous issues, however, when we tried a JAVA program
(worked w/ Arrow 9.x on x86 platform) it got failed with errors thrown out
below. I was wondering if there's any difference in JNI APIs between arrow
9..x and 16.x, or where I can find out a workable compiled version of Arrow
which includes libgandiva_jni.so.
Thanks again in advance!
1. Exception thrown from Java program:
Stack slot to memory mapping:
stack at sp + 0 slots: 0x00007f5a347ebb69: <offset 0x00000000008dfb69> in
/usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so at 0x00007f5a33f0c000
stack at sp + 1 slots: 0x0 is NULL
stack at sp + 2 slots: 0x00007f59ed2698c0 is pointing into the stack for
thread: 0x00007f59e875a000
stack at sp + 3 slots: 0x00007f59e875a348 points into unknown readable
memory: 0x00007f5a35147b40 | 40 7b 14 35 5a 7f 00 00
stack at sp + 4 slots: 0x00007f59e2f8c3f7:
Java_org_apache_arrow_gandiva_evaluator_JniWrapper_buildProjector+0x0000000000000057
in /tmp/libgandiva_jni.soa81db5ba-fcd3-4494-b24b-3da3a3a99162 at
0x00007f59e2b1b000
stack at sp + 5 slots: 0x00007f59ed269500 is pointing into the stack for
thread: 0x00007f59e875a000
stack at sp + 6 slots: 0x00007f5a344ec003: <offset 0x00000000005e0003> in
/usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so at 0x00007f5a33f0c000
stack at sp + 7 slots: 0x00007f59ed2697b0 is pointing into the stack for
thread: 0x00007f59e875a000
2. GDB debug info:
gdb /usr/bin/java core
(gdb) bt
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1 0x00007f5a351f7859 in __GI_abort () at abort.c:79
#2 0x00007f5a3418f435 in os::abort(bool, void*, void const*) [clone .cold] ()
from /usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so
#3 0x00007f5a34da7e5d in VMError::report_and_die(int, char const*, char
const*, __va_list_tag*, Thread*, unsigned char*, void*, void*, char const*,
int, unsigned long) () from
/usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so
#4 0x00007f5a34da89cf in VMError::report_and_die(Thread*, unsigned int,
unsigned char*, void*, void*, char const*, ...) () from
/usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so
#5 0x00007f5a34da8a02 in VMError::report_and_die(Thread*, unsigned int,
unsigned char*, void*, void*) () from
/usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so
#6 0x00007f5a34afd166 in JVM_handle_linux_signal () from
/usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so
#7 0x00007f5a34aefc8c in signalHandler(int, siginfo_t*, void*) () from
/usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so
#8 <signal handler called>
#9 0x00007f5a34484764 in
AccessInternal::PostRuntimeDispatch<G1BarrierSet::AccessBarrier<1097844ul,
G1BarrierSet>, (AccessInternal::BarrierType)2,
1097844ul>::oop_access_barrier(void*) () from
/usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so
#10 0x00007f5a347ebb69 in jni_GetArrayLength () from
/usr/lib/jvm/java-11-openjdk-amd64/lib/server/libjvm.so
#11 0x00007f59e2f8c3f7 in
Java_org_apache_arrow_gandiva_evaluator_JniWrapper_buildProjector () from
/tmp/libgandiva_jni.soa81db5ba-fcd3-4494-b24b-3da3a3a99162
#12 0x00007f5a147eaa30 in ?? ()
#13 0x0000000000000001 in ?? ()
#14 0x0000000000000000 in ?? ()
________________________________
发件人: Sutou Kouhei <[email protected]>
发送时间: 2024年5月20日 13:21
收件人: [email protected] <[email protected]>
主题: Re: [DISCUSS][C++][JNI] libgandiva_jni.so fails to run on ARM platform (but
compilation successful)
Hi,
https://github.com/apache/arrow/issues/30701 may be related.
BTW, recent our Gandiva packages include libgandiva_jni.so
for ARM. You may able to use it instead of building it
manually.
Thanks,
--
kou
In
<sezpr02mb55192609c92ff3a349e0f10ddf...@sezpr02mb5519.apcprd02.prod.outlook.com>
"[DISCUSS][C++][JNI] libgandiva_jni.so fails to run on ARM platform (but
compilation successful)" on Mon, 20 May 2024 10:10:28 +0000,
即 云 <[email protected]> wrote:
> Greetings,
> I have encountered an issue about Arrow on ARM platform.
> We compiled successfully“libgandiva_jni.so”on ARM v8, but when we call
> this lib from JAVA environment, it throws out an error "Exception
> java.lang.UnsatisfiedLinkError:/tmp/libgandiva_jni.so9f8bef08-ab7f-425d-8b42-11f522026a10;undefined
> symbol: _ZTIN4llvm11ObjectCacheE"
> Would you anybody give me some clues to handle this issue? Thanks in
> advance!
>
> Env. details:
> Arrow version:maint-9.0.0 (https://github.com/apache/arrow/tree/maint-9.0.0)
> OS:CentOS 7.6 with ARM
> Gcc/llvm:gcc 8.3.1 ,llvm 14.0.0
> Compilation flags:
> mkdir cpp/build
> cd cpp/build
> cmake .. -DARROW_GANDIVA_JAVA=ON -DARROW_GANDIVA=ON -DARROW_WITH_RE2=ON
> -DARROW_WITH_UTF8PROC=ON
> make
>
> CPU info:
> [root@ecs-5f21 arrow]# lscpu
> Architecture: aarch64
> Byte Order: Little Endian
> CPU(s): 2
> On-line CPU(s) list: 0,1
> Thread(s) per core: 1
> Core(s) per socket: 2
> Socket(s): 1
> NUMA node(s): 1
> Model: 0
> CPU max MHz: 2400.0000
> CPU min MHz: 2400.0000
> BogoMIPS: 200.00
> L1d cache: 64K
> L1i cache: 64K
> L2 cache: 512K
> L3 cache: 32768K
> NUMA node0 CPU(s): 0,1
> Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics
> fphp asimdhp cpuid asimdrdm jscvt fcma dcpop asimddp asimdfhm