codehaus


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Weird symbol resolution error with llvm JIT in gandiva jni


In other words, see if:
  nm --defined-only libgandiva.a | grep _ZNSt8ios_base4InitC1Ev

outputs anything.

Regards

Antoine.


Le 16/12/2018 à 14:03, Antoine Pitrou a écrit :
> 
> Does the static gandiva lib bundle libstdc++? Otherwise you'll probably
> need to load it explicitly in the Java process.
> 
> Regards
> 
> Antoine.
> 
> 
> Le 16/12/2018 à 04:53, Ravindra Pindikura a écrit :
>> I think this happens if any of the cpp files that are used for IR generation (clang —emit-llvm) includes <iostream>. For decimal support, I’m generating IR code from arrow/util/decimal.cc <http://decimal.cc/> which includes <iostream> (many times in the header file chain).
>>
>>> On Dec 16, 2018, at 9:14 AM, Ravindra Pindikura <ravindra@xxxxxxxxxx> wrote:
>>>
>>> Hi,
>>>
>>> I’ve been working on adding decimal support in gandiva - I’m hitting a symbol resolution error with std::ios_base::Init with the java tests on ubuntu. Any ideas on what I may be doing wrong ?
>>>
>>> LLVM ERROR: Program used external function '_ZNSt8ios_base4InitC1Ev' which could not be resolved!
>>>
>>>
>>> I’ve the same test (add two decimals) in three forms : 
>>>
>>> 1. Cpp test executable with shared gandiva lib
>>>
>>> Works on both ubuntu and Mac
>>>
>>> 2. Cpp test executable with static gandiva lib
>>>
>>> Works on both ubuntu and Mac
>>>
>>> 3. Java test (internally uses jni over static gandiva lib)
>>>
>>> Works on Mac, but fails on ubuntu !!
>>>
>>> Ubuntu failure : https://travis-ci.org/apache/arrow/jobs/468562791
>>>
>>> I tried switching to ORC JIT (from MC JIT) but that didn’t help. In the JIT, the symbol is not found in the process address space for ubuntu+java. For all the other cases, the symbol is found.
>>>
>>> https://github.com/apache/arrow/pull/2942/files#diff-5ef29a5cabe384645dbf7a9c704aceeaR36
>>>
>>> Thanks & regards,
>>> Ravindra.
>>
>>