Skip to content

USDT Probe Test Failures on RISCV Architecture. #5492

@harishsadineni1

Description

@harishsadineni1

Hi all,

When running the BCC test suite on a riscv64 Yocto build, several tests that rely on USDT probes fail because the sample probes are not embedded in the test binaries.

The tests that failed include:
cc test finding a probe in our own process
cc test find a probe in our own binary with C++ API
cc test find probes in our own binary with C++ API
cc test find a probe in our process with C++ API
cc test find a probe in our process' shared libs with C++ API
cc test uprobe refcnt semaphore activation
cc test usdt partial init with fail init_usdt

After building the test binary tests/cc/test_libbcc_no_libbpf, inspecting it with readelf shows no USDT probe notes:
$ readelf -n ./tests/cc/test_libbcc_no_libbpf | grep -A5 stapsdt
no output

On a supported architecture (e.g., x86_64) the same command would produce output similar to:
Displaying notes found in: .note.stapsdt
Owner Data size Description
stapsdt 0x00000044 NT_STAPSDT (SystemTap probe descriptors)
Provider: libbcc_test
Name: sample_probe_2

The absence of the .note.stapsdt section on riscv64 confirms that the probes were not generated.

From my analysis FOLLY_SDT macro from Facebook's Folly library is used to define the probes in bcc.
At present, Folly does not have full support for riscv64 in StaticTracepoint.h (the required architecture specific definitions are missing ). As a result, on riscv64 the FOLLY_SDT macros likely expand to nothing, and no probe information is emitted

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions