Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Workaround for the change in libnddscore.so in connext 5.2.0 between gcc4.6.3 and gcc4.8.2 #55

Merged
merged 2 commits into from
Apr 28, 2016

Conversation

dhood
Copy link
Member

@dhood dhood commented Apr 28, 2016

Fixes #52, which I currently understand to be caused by the connext 5.2.0 package labelled as built with gcc4.8.2 not exporting a dependency on dl (in contrast to the one labelled with gcc4.6.3).

The executables do have -ldl in the linking stage, but --no-as-needed is needed to ensure that the linking actually happens.

Adding a dlopen(NULL, RTLD_NOW); call to the service_fixture and client_fixture files is an alternative workaround because it forces dl to not be considered unneeded.

No regressions that I can see
http://ci.ros2.org/job/ci_linux/1243/
http://ci.ros2.org/job/ci_windows/1281/
http://ci.ros2.org/job/ci_osx/998/

@wjwwood wjwwood added the in progress Actively being worked on (Kanban column) label Apr 28, 2016
if(NOT "${ARGN} " STREQUAL " ")
message(FATAL_ERROR "append_link_flags() called with "
"unused arguments: ${ARGN}")
endif()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this is a local macro which is not used externally I would not bother with this check and save the four lines.

@dhood dhood force-pushed the connext-workaround branch from 69de08c to 2ae8819 Compare April 28, 2016 21:28
@dirk-thomas
Copy link
Member

lgtm

@wjwwood
Copy link
Member

wjwwood commented Apr 28, 2016

lgtm too

@wjwwood wjwwood merged commit 7aeb957 into ros2:master Apr 28, 2016
@wjwwood wjwwood removed the in progress Actively being worked on (Kanban column) label Apr 28, 2016
@dirk-thomas
Copy link
Member

With Connext 5.2.3 on Xenial I needed the same patch for these targets (note all failing targets are ending with rmw_fastrtps_cpp):

  • intra_process_demo
    • cyclic_pipeline__rmw_fastrtps_cpp
    • two_node_pipeline__rmw_fastrtps_cpp
  • rclcpp_examples
    • list_parameters_async__rmw_fastrtps_cpp
    • parameter_events_async__rmw_fastrtps_cpp
  • test_communication
    • test_replier_cpp__rmw_fastrtps_cpp
    • test_subscriber_cpp__rmw_fastrtps_cpp
    • test_subscription_valid_data_cpp__rmw_fastrtps_cpp
  • test_rclcpp
    • gtest_multithreaded__rmw_fastrtps_cpp
    • gtest_subscription__rmw_fastrtps_cpp
    • test_services_client_cpp__rmw_fastrtps_cpp
  • tlsf_cpp
    • test_tlsf__rmw_fastrtps_cpp
  • pendulum_contol
    • pendulum_demo__rmw_fastrtps_cpp
    • pendulum_logger__rmw_fastrtps_cpp
    • pendulum_teleop__rmw_fastrtps_cpp

I don't know why only for those targets are affected and not for the others. And therefore I hesitate to apply the same patch in these cases.

Since the RTI Connext release notes mentioned that --no-as-needed is necessary I am leaning to expose this in connext_cmake_module and make sure it is being applied everywhere.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Linking errors for client_fixture and service_fixture tests
3 participants