On 08/04/2025 11:22, Bruno Haible wrote:
Paul Eggert wrote:
I don't see the problem on cfarm220.cfarm.net with the current coreutils
That's because you are not on the /dev/wd0a disk on that machine.
What I see by single-stepping through "ls -Z ." in gdb is:
1. f->scontext gets set to "?".
2. Upon the first entry to function file_has_aclinfo_cache,
all 4 variables
static int unsupported_return;
static char *unsupported_scontext;
static int unsupported_scontext_err;
static dev_t unsupported_device;
are 0 or NULL, respectively. (As expected, since it's the first call
to this function.)
f->stat.st_dev is 0 (since "." is on the /dev/wd0a disk and this device
has major and minor number both 0).
Thus the condition (f->stat_ok && f->stat.st_dev == unsupported_device)
evaluates to true, and four lines later, in
ai->scontext = unsupported_scontext;
an scontext gets set to NULL.
The fix is obviously to ignore these 4 static variables if they have not
been initialized. Done through the attached patch, which fixes the crash.
Excellent.
I'll also apply this logic to has_capability_cache().
Marking this as done.
thanks!
Pádraig