Ray cpp meson build error

Hi maintainers.

Building and executing ray cpp through bazel was successful. (“ray cpp --generate-bazel-project-template-to ray-template”)

But when I build through meson, an error occurred.
Error message

put_get_result = 100
terminate called after throwing an instance of 'ray::internal::RayTaskException'
  what():  NotFound: Executable function not found, the function name Plus
*** SIGABRT received at time=1644814425 on cpu 3 ***
PC: @     0x7f6ec0b8a18b  (unknown)  raise
    @     0x7f6ec0b8a210  (unknown)  (unknown)
    @ 0x747563657845203a  (unknown)  (unknown)
[2022-02-14 13:53:45,862 E 14061 14061] logging.cc:317: *** SIGABRT received at time=1644814425 on cpu 3 ***
[2022-02-14 13:53:45,862 E 14061 14061] logging.cc:317: PC: @     0x7f6ec0b8a18b  (unknown)  raise
[2022-02-14 13:53:45,862 E 14061 14061] logging.cc:317:     @     0x7f6ec0b8a210  (unknown)  (unknown)
[2022-02-14 13:53:45,862 E 14061 14061] logging.cc:317:     @ 0x747563657845203a  (unknown)  (unknown)
[1]    14061 abort (core dumped)  ./build/example-app

cpp src file is the same file as the file in bazel project.
It only works for putting and getting object.
As in the error message above, a NotFound error occurs in the case of a common task.

int task_result = *(ray::Get(task_object));

Perhaps an error occurred in the process of remote task before Get.

auto task_object = ray::Task(Plus).Remote(1, 2);

Looking through ray memory, it looks like the task is stored.
But when I run it through Get, I get an error.
Any suggestions or comments would be appreciated.

meson.build

project('ray cpp', 'cpp', default_options: ['cpp_std=c++17'])
add_project_arguments('-D_GLIBCXX_USE_CXX11_ABI=0', language: ['cpp'])
raycpp_dep = dependency('raycpp-1.9', required: true)
executable('example-app', 'example-app.cpp', dependencies : [raycpp_dep])

raycpp-1.9.pc

prefix=/home/user/miniconda3/envs/ray/lib/python3.8/site-packages/ray/cpp
includedir=${prefix}/include
libdir=${prefix}/lib

Name: ray cpp
Description: ray cpp 1.9.2
Version: 1.9.2
Libs: -L${libdir} -lray_api
Cflags: -I${includedir}

Maybe there is a way to hack around, I don’t think using the way other than the documentation is supported right now.

But from the logs given, it means the function you are calling is not loaded somehow. Usually, it’s because it’s not compiled into the shared library. Or it can be the case when the ray failed to load it during start.

Thanks for the kind reply.
I checked that both binary files are using the same libray_api.so file.
Also, outputs of ldd are the same.

In the same process of referencing the libray_api.so shared library, I wonder why ray succeeds on one side and fails on the other side.
Any suggestions would be really appreciate.

Yes, not about libray_api.so, but about the binary file.

This means some remote functions can’t be found which should be something inside the binary file.

libray_api.so is not the place defining this.

You should set the code search path which includes your example.so.

Like:
./example --ray_code_search_path=/path/to/example.so

1 Like