Well, it turned out to be a bug in bcc. Its implementation actually only works for MCJIT. In its cmake settings, bcc actually looks for MCJIT instead of OrcJIT. For the systems with separate LLVM libraries, libLLVMOrcJIT.so is not linked, so bcc (actually llvm::ExecutionEngine) falls back to MCJIT gracefully. Since we built the unified share library, OrcJIT is always there, and the bug hit us. I already sent a pull request(*) to bcc upstream and will submit the updated bcc to Factory. (*) https://github.com/iovisor/bcc/pull/1438