Skip to main content

std::bad_alloc Loading SDK Sample Libraries

  • Jan 3, 2018 5:35 AM UTC
  • 12 replies
  • 37 views

jpotts
Forum|alt.badge.img
  • Participating Frequently

My problem is very similar to these two unanswered questions, but with a different Vertica version:

https://forum.vertica.com/discussion/235890/rollback-3399-vsql-create-library-failure-in-udx-error

https://forum.vertica.com/discussion/238717/unable-to-create-library-rollback-3399-failure-in-udx-rpc-call-invokegetlibrarymanifest

I installed Vertica 9.0.1 on Ubuntu using vertica_9.0.1-0_amd64.deb and installed the following:

sudo apt-get install libboost-dev libboost-doc
sudo apt-get install libbz2-dev
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install zlib1g-dev

Next I:
1. copied /opt/vertica/sdk/examples to a subfolder of my home folder
2. ran make
3. Ran vsql -f on a few of the sql scripts

All of them produced:

[Code: 3399, SQL State: VP001] [Vertica]VJDBC ROLLBACK: Failure in UDx RPC call InvokeGetLibraryManifest(): Exception calling getLibraryManifest() in User Defined Object [], message: std::bad_alloc

Vertica is running fine; I have some schema and data loaded.

12 replies

Forum|alt.badge.img+2
  • Participating Frequently
  • Jan 3, 2018 1:58 PM UTC

For what it's worth, there may be some additional hints on what's happening (e.g. out of memory in PermGen space) in the UDxFencedProcessesJava.log which resides under your database catalog/UDxLogs dir.


Jim_Knicely
Forum|alt.badge.img+2
  • Participating Frequently
  • Jan 4, 2018 3:32 AM UTC

Can you post the results of trying to compile just one of the Java example?

Example:

make JavaFunctions


jpotts
Forum|alt.badge.img
  • Author
  • Participating Frequently
  • Jan 5, 2018 2:55 AM UTC

See below for rerun results.

I initially built using make. It gave warnings about skipping different components due to missing headers; the build appeared successful otherwise. I did not try loading it at this point; instead I installed headers using the apt-get commands above, rebuilt incrementially after each one, and then got a clean build from make. I have tried using make clean and then make again, and loading again, and still get bad_alloc.

Log file is attached; interestingly there is only one failure directly related to the library file (I made multiple attempts on Jan 2).

Rerun results from today:

$ make clean

rm -rf /home/jpotts/code/vertica-9-examples/build/tmp
rm -f /home/jpotts/code/vertica-9-examples/build/.so
rm -f /home/jpotts/code/vertica-9-examples/build/
.jar
rm -rf /home/jpotts/code/vertica-9-examples/build/Java*
rmdir /home/jpotts/code/vertica-9-examples/build >/dev/null 2>&1 || true

$ make

(see attached; some folders obfuscated. appears successful)

$ g++ --version

g++ (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ java -version

java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

$ javac -version

javac 1.8.0_151

$ free -m

          total        used        free      shared  buff/cache   available

Mem: 15914 1629 10592 629 3693 13281
Swap: 16251 0 16251


jpotts
Forum|alt.badge.img
  • Author
  • Participating Frequently
  • Jan 5, 2018 3:08 AM UTC

Error I get using vsql (error in first post is using DBVisualizer):

vsql:AggregateFunctions.sql:12: ROLLBACK 3399: Failure in UDx RPC call InvokeGetLibraryManifest(): Exception calling getLibraryManifest() in User Defined Object [], message: std::bad_alloc


jpotts
Forum|alt.badge.img
  • Author
  • Participating Frequently
  • Jan 5, 2018 3:52 AM UTC

And a portion of the vertica.log file from the immediately above vsql run, attached.


sKwa
Forum|alt.badge.img+1
  • Participating Frequently
  • Jan 5, 2018 4:02 AM UTC

Hi!

What is version of Ubuntu?

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:    14.04
Codename:   trusty

Can you post full output of:

$ ldd /opt/vertica/bin/vertica-udx-C++
    linux-vdso.so.1 =>  (0x00007ffc856a5000)
    libvmalloc.so => /opt/vertica/bin/../lib/libvmalloc.so (0x00007f0220724000)
    libncurses.so.5 => /lib/x86_64-linux-gnu/libncurses.so.5 (0x00007f02202e3000)
    libgssapi_krb5.so.2 => /opt/vertica/bin/../lib/libgssapi_krb5.so.2 (0x00007f02206b6000)
   ...

???


jpotts
Forum|alt.badge.img
  • Author
  • Participating Frequently
  • Jan 5, 2018 4:47 AM UTC

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial

$ ldd /opt/vertica/bin/vertica-udx-C++

linux-vdso.so.1 =>  (0x00007ffc2bd4e000)
libvmalloc.so => /opt/vertica/bin/../lib/libvmalloc.so (0x00007fc0c7a5e000)
libncurses.so.5 => /lib/x86_64-linux-gnu/libncurses.so.5 (0x00007fc0c7823000)
libgssapi_krb5.so.2 => /opt/vertica/bin/../lib/libgssapi_krb5.so.2 (0x00007fc0c77c9000)
libkrb5.so.3 => /opt/vertica/bin/../lib/libkrb5.so.3 (0x00007fc0c76d8000)
libkrb5support.so.0 => /opt/vertica/bin/../lib/libkrb5support.so.0 (0x00007fc0c76ca000)
libk5crypto.so.3 => /opt/vertica/bin/../lib/libk5crypto.so.3 (0x00007fc0c7684000)
libcom_err.so.3 => /opt/vertica/bin/../lib/libcom_err.so.3 (0x00007fc0c7680000)
libcrypto.so.10 => /opt/vertica/bin/../lib/libcrypto.so.10 (0x00007fc0c729d000)
libssl.so.10 => /opt/vertica/bin/../lib/libssl.so.10 (0x00007fc0c7030000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fc0c6cae000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc0c69a5000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc0c6787000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fc0c657f000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc0c637b000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc0c5fb0000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fc0c5d9a000)
libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007fc0c5b71000)
libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007fc0c596c000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fc0c5751000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fc0c5536000)
libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007fc0c5332000)
/lib64/ld-linux-x86-64.so.2 (0x000055ca7058d000)

tldr: java fixed now; c++ sample still not working

$ vsql -U dbadmin -f JavaFunctions.sql

vsql:JavaFunctions.sql:14: ROLLBACK 5702: Couldn't create new UDx side process: Java Binary not found: /usr/bin/java/bin/java

$ sudo -u dbadmin printenv | grep JAVA_HOME
JAVA_HOME=/usr/bin/java

The JAVA_HOME variable above is incorrect; it points at an executable rather than a folder. It wasn't obvious because it was only affecting the dbadmin user rather than my user account.

How I found where JAVA_HOME was set
grep -r JAVA_HOME /etc/* 2>&1 | grep -v "Permission denied"
grep -r JAVA_HOME ~/.*

JAVA_HOME was being set correctly here:

  • /etc/profile.d/jdk.sh
  • /etc/profile.d/jdk.csh

But I had set it incorrectly here:

  • /etc/environment

The profile.d flavor was loading into my personal login, but the /etc/environment flavor was being used for the dbadmin user.

Fixed it by setting JAVA_HOME in /home/dbadmin/.bashrc

Still getting std::bad_alloc for C++ example


sKwa
Forum|alt.badge.img+1
  • Participating Frequently
  • Jan 5, 2018 4:55 AM UTC

Hi!

Ubuntu 16.04.3 LTS is unsupported platform, try 14.04 LTS.

ps: I got same error on 16.04(just checked).


jpotts
Forum|alt.badge.img
  • Author
  • Participating Frequently
  • Jan 5, 2018 5:00 AM UTC

That's disappointing.


Sergey_Cherepan_1
Forum|alt.badge.img+2

Hi Josh,
Hope you are doing well.
I got same error... on CentOS 7.3.... on gcc 7.3.1... and I can load properly with gcc 7.2.1... and it completely unexplainable.
Statement that Ubuntu version is desupported is not relevant here, just a way to send you out.
Try to compile on different box, may be luck will be with you.


jpotts
Forum|alt.badge.img
  • Author
  • Participating Frequently
  • Feb 27, 2018 4:13 AM UTC

Great to hear from you, hope all is well. We should grab a beer soon.

I may try compiling on Ubuntu 14 with the default packages and see if I can get the binary to run on Ubuntu 16.

Reach out to me through LinkedIn.


phil2
Forum|alt.badge.img+2
  • Participating Frequently
  • Apr 30, 2019 8:10 AM UTC

you need to compile with

CXXFLAGS="-fabi-version=2 -D_GLIBCXX_USE_CXX11_ABI=0"

to disable new ABI of std::string
unless vertica is compiled with modern gcc

tested on ubuntu 16 and debian 9 with vertica binaries compiled on gcc4X

and now with vertica 9 you need to patch sdk (see attachment)