On 31/07/2025 17:16, Alexis Lothoré (eBPF Foundation) wrote: > When trying to print a specific class layout with recent pahole > versions, we get an error right after the expected class print: > > $ ./build/pahole -C test_bin_struct_packed -F dwarf tests/bin/test_bin > struct test_bin_struct_packed { > char a; /* 0 1 */ > short int b; /* 1 2 */ > int c; /* 3 4 */ > long long unsigned int d; /* 7 8 */ > > /* size: 15, cachelines: 1, members: 4 */ > /* last cacheline: 15 bytes */ > } __attribute__((__packed__)); > > pahole: /home/alexis/src/pahole/tests/bin/test_bin: Invalid argument > > This error is due to pahole_stealer returning LSK__STOP_LOADING when > dealing with a single class and when it is done. This LSK__STOP_LOADING > is then propagated to dwarf_loader__worker_thread and interpreted as an > error (and turned into a DWARF_CB_ABORT). The main issue is that this > LSK__STOP_LOADING value is sometimes generated by actual issues during > pahole stealing, sometimes by "nominal" execution. > > Add a new LSK__ABORT status to distinguish between those nominal and > faulty cases. Still let DWARF_CB_ABORT value propagate when the stealer > returns either LSK__ABORT or LSK__STOP_LOADING (so that any other > running worker is properly asked to stop, thanks to > cus_processsing_queue.abort), but also propagate the LSK status, and > return an error on DWARF_CB_ABORT only if the status is LSK__ABORT. > > Reviewed-by: Alan Maguire <alan.maguire@xxxxxxxxxx> > Signed-off-by: Alexis Lothoré (eBPF Foundation) <alexis.lothore@xxxxxxxxxxx> Applied to the next branch of https://git.kernel.org/pub/scm/devel/pahole/pahole.git/ Thanks! Alan