parser aborts without error message if profile directory contains broken symlink
# head *
==> a_profile <==
profile a_profile {
}
==> last_profile <==
profile last_profile {
}
# apparmor_parser -N . ; echo $?
a_profile
last_profile
0
# ln -s foo bar # create broken symlink
# apparmor_parser -N . ; echo $?
a_profile
2
As you can see, the broken symlink causes the parser to abort with $? = 2, but it doesn't print any error message.
This also happens in other modes, for example when loading profiles (verified in audit.log).