diff --git a/src/bpftune.c b/src/bpftune.c index 50f141b..49f9a6e 100644 --- a/src/bpftune.c +++ b/src/bpftune.c @@ -399,9 +399,10 @@ int main(int argc, char *argv[]) bpftune_cap_drop(); - if (init(BPFTUNER_LIB_DIR)) { - bpftune_log(LOG_ERR, "could not initialize tuners in '%s'\n", - BPFTUNER_LIB_DIR); + err = init(BPFTUNER_LIB_DIR); + if (err) { + bpftune_log(LOG_ERR, "could not initialize tuners in '%s': %s\n", + BPFTUNER_LIB_DIR, strerror(-err)); exit(EXIT_FAILURE); } /* optional dir absence will not trigger failure */ diff --git a/src/libbpftune.c b/src/libbpftune.c index 257d19c..931b8bb 100644 --- a/src/libbpftune.c +++ b/src/libbpftune.c @@ -588,8 +588,16 @@ int __bpftuner_bpf_load(struct bpftuner *tuner, const char **optionals) } err = bpf_object__load_skeleton(tuner->skeleton); if (err) { - bpftune_log_bpf_err(err, "could not load skeleton: %s\n"); - goto out; + switch (err) { + case -ESRCH: + bpftune_log(LOG_ERR, "tuner '%s' failed to load, tracing target was not found; this can occur for unstable tracing targets like kernel functions.\n", + tuner->name); + goto out; + default: + bpftune_log(LOG_ERR, "BPF load for tuner '%s; failed: '%s': %s\n", + tuner->name, strerror(-err)); + goto out; + } } bpftuner_map_init(tuner, "ring_buffer_map", &tuner->ring_buffer_map,