I was able to narrow down this apparmor_parser error to shiftfs:
AppArmor parser error for /etc/apparmor.d/sbin.dhclient in /etc/apparmor.d/tunables/home at line 25: Could not process include directory '/etc/apparmor.d/tunables/home.d' in 'tunables/home.d'
The problem stems from shiftfs not handling this sequence:
getdents()
lseek() to reset the f_pos to 0
getdents()
I'm attaching a test case for this issue, called dir-seek.c.
When ran on a non-shiftfs filesystem, you'll see something like this:
I was able to narrow down this apparmor_parser error to shiftfs:
AppArmor parser error for /etc/apparmor. d/sbin. dhclient in /etc/apparmor. d/tunables/ home at line 25: Could not process include directory '/etc/apparmor. d/tunables/ home.d' in 'tunables/home.d'
The problem stems from shiftfs not handling this sequence:
getdents()
lseek() to reset the f_pos to 0
getdents()
I'm attaching a test case for this issue, called dir-seek.c.
When ran on a non-shiftfs filesystem, you'll see something like this:
$ ./dir-seek
PASS: orig_count (29) == new_count (29)
When you run the test case on shiftfs, you'll see something like this:
$ ./dir-seek
FAIL: orig_count (29) != new_count (0)
The f_pos of the directory file is not properly tracked/reset on shiftfs.