Data Integration, GoldenGate, Oracle, Virtual Box

Create Wallet causes Segmentation Fault in Oracle GoldenGate12c and VBox5

BonusAheadToday’s blog will be quick. I’m operating in the following environment:
Oracle Virtual Box 5.0.12
MacBook Pro (Retina, 15-inch, Mid 2014)
Processor: 2.2 GHz Intel Core i7
Oracle 12c
Oracle GoldenGate 12c

A few weeks ago I attempted to create a wallet in Oracle GoldenGate and got this:

GGSCI (trg.localdomain) 1> create wallet

Source Context :
SourceModule : [ggapp.util.pcs]
SourceID : [/scratch/aime/adestore/views/aime_adc4150378/oggcore/OpenSys/src/gglib/ggapp/pcsutl.c]
SourceFunction : [AbendHandler]
SourceLine : [1036]
ThreadBacktrace : [27] elements
: [/u01/app/oracle/product/ogg/libgglog.so(CMessageContext::AddThreadContext()+0x1b) [0x7f5c250850ab]]
: [/u01/app/oracle/product/ogg/libgglog.so(CMessageFactory::CreateMessage(CSourceContext*, unsigned int, …)+0x134) [0x7f5c2507f244]]
: [/u01/app/oracle/product/ogg/libgglog.so(_MSG_ERR_SIGNAL_RECEIVED(CSourceContext*, int, char const*, CMessageFactory::MessageDisposition)+0x3a) [0x7f5c2506302c]]
: [./ggsci() [0x530f97]]
: [/lib64/libpthread.so.0() [0x33f140f710]]
: [/u01/app/oracle/product/ogg/libggnnzitp.so(sltsini+0x45) [0x7f5c1c6a7175]]
: [/u01/app/oracle/product/ogg/libggnnzitp.so(slxmxinit+0x29) [0x7f5c1c870569]]
: [/u01/app/oracle/product/ogg/libggnnzitp.so(lxzinit+0x27) [0x7f5c1c853f47]]
: [/u01/app/oracle/product/ogg/libggnnzitp.so(lpminitm+0xa3) [0x7f5c1c834633]]
: [/u01/app/oracle/product/ogg/libggnnzitp.so(lpminit+0x16) [0x7f5c1c834576]]
: [/u01/app/oracle/product/ogg/libggnnzitp.so(+0x15a88f) [0x7f5c1c69e88f]]
: [/u01/app/oracle/product/ogg/libggnnzitp.so(+0x15a0c0) [0x7f5c1c69e0c0]]
: [/u01/app/oracle/product/ogg/libggnnzitp.so(nzdsInitialize_int+0x5d) [0x7f5c1c69ef6d]]
: [/u01/app/oracle/product/ogg/libggnnzitp.so(nzdsi_initialize+0x12) [0x7f5c1c69eef2]]
: [./ggsci() [0x6a87bf]]
: [./ggsci(ggs::gglib::ggsec::CWallet::NZContext::initNZCtx()+0x65) [0x6a99a5]]
: [./ggsci(ggs::gglib::ggsec::CWallet::createWalletFile(char const*, char const*)+0x389) [0x6ad859]]
: [./ggsci(ggs::gglib::ggsec::CWallet::create()+0x5a) [0x6ae0da]]
: [./ggsci(GGSCISEC_wallet_command(ggs::gglib::ggunicode::UString const&)+0x5db) [0x64d90b]]
: [./ggsci(do_cmd(char*, unsigned long, char*, unsigned long)+0x24f7) [0x669a37]]
: [./ggsci() [0x66c50b]]
: [./ggsci(ggs::gglib::MultiThreading::MainThread::ExecMain()+0x60) [0x55b110]]
: [./ggsci(ggs::gglib::MultiThreading::Thread::RunThread(ggs::gglib::MultiThreading::Thread::ThreadArgs*)+0x14d) [0x55bdcd]]
: [./ggsci(ggs::gglib::MultiThreading::MainThread::Run(int, char**)+0xb1) [0x55beb1]]
: [./ggsci(main+0x3b) [0x66cb1b]]
: [/lib64/libc.so.6(__libc_start_main+0xfd) [0x33f101ed5d]]
: [./ggsci() [0x4fc689]]

2016-01-12 18:13:13 ERROR OGG-01117 Received signal: Segmentation violation (11).

2016-01-12 18:13:13 ERROR OGG-01668 PROCESS ABENDING.
Segmentation fault (core dumped)

While working with Oracle on a completely different issue, it turns out that the workaround fixes this as well. The short and sweet:

In order to correct this issue, you must execute the following series of commands PRIOR to running your VM where <VM name> is the name of the VBox VM.
These commands tweak the CPUID bits passed to the guest:

VBoxManage setextradata <VM name> “VBoxInternal/CPUM/HostCPUID/Cache/Leaf” “0x4”
VBoxManage setextradata <VM name> “VBoxInternal/CPUM/HostCPUID/Cache/SubLeaf” “0x4”
VBoxManage setextradata <VM name> “VBoxInternal/CPUM/HostCPUID/Cache/eax” “0”
VBoxManage setextradata <VM name> “VBoxInternal/CPUM/HostCPUID/Cache/ebx” “0”
VBoxManage setextradata <VM name> “VBoxInternal/CPUM/HostCPUID/Cache/ecx” “0”
VBoxManage setextradata <VM name> “VBoxInternal/CPUM/HostCPUID/Cache/edx” “0”
VBoxManage setextradata <VM name> “VBoxInternal/CPUM/HostCPUID/Cache/SubLeafMask” “0xffffffff”

For more details, you can read this: Oracle DB12c / OL7 / VBox 5 – Perl Segmentation Fault

Enjoy!dbaOnTap