Fast DDS HelloWorld RTP crashes with signal 4 on VxWorks 7 QEMU?

Hi,
I have successfully built Fast DDS 3.3.0 and its HelloWorld example using the wr-cc cross compiler for VxWorks 7 (x86_64, QEMU target).

The build process completed without any errors, and the executable hello_world was generated.However, when I run the program on the VxWorks target shell, it immediately crashes with:
[vxWorks *]# hello_world
Launching process ‘hello_world’ …
Process ‘hello_world’ (process Id = 0xffff800000362100) launched.
0xffff800000367890 (iHello_world): RTP 0xffff800000362100 has been deleted due to signal 4.
[VxWorks *]#

I’ve verified that:

  • The project was built entirely with the VxWorks toolchain (wr-cc / wr-c++)
  • The Fast DDS libraries and dependencies (Fast-CDR, foonathan_memory) were all compiled for VxWorks
  • The same environment successfully runs a simple foo.vxe test program (so the toolchain and QEMU setup seem fine)

But this Fast DDS HelloWorld RTP always crashes with signal 4.

Could you please help me understand what could cause this?

Thank you!

Signal 4 means invalid instruction. I’d check the target capabilities required by the Fast DDS stack. Also make sure to run QEMU in kvm mode with cpu host, that will help eliminate some other potential issues.

I think you may find the ROS2 VxWorks port to be a relevant reference.

Really appreciate your help! After enabling KVM, it works now.

I have validated Fast DDS on the VxWorks 7 SDK. However, our commercial version uses VxWorks 6.6, and the Diab compiler there does not support C++11. Is there any feasible approach to verify Fast DDS on VxWorks 6.6?

Please create a post on the Wind River Knowledge Forum at ask.windriver.com or contact Wind River Customer Support.