<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Apr 2, 2020, at 14:05, Duncan Exon Smith <<a href="mailto:dexonsmith@apple.com" class="">dexonsmith@apple.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""><blockquote type="cite" class="">It looks like the following bots assigned to you started failing recently:<br class=""></blockquote><br class="">I agree the bots should be fixed, but...<br class=""><br class=""><blockquote type="cite" class="">I strongly suspect this is due to the fact that your builder is running as root. Libc++'s filesystem tests are known to fail when run as root, because some of them need to check for failure to access some files for which there's no permission. This doesn't seem to work when run as root.<br class=""></blockquote><br class="">It seems like these tests could have a line like:<br class="">```<br class="">REQUIRES: -user=root<br class="">```<br class="">and libcxx's lit target could export a `user=root` feature when tests were being run as root.  WDYT?<br class=""><br class="">WDYT?<br class=""><br class=""></div></div></blockquote></div><br class=""><div class=""><div class="">I think you mean `// UNSUPPORTED: -user=root`? Yes, I think it would make sense. Either that or actually spend the time to make them work as root.</div><div class=""><br class=""></div><div class="">FWIW, I think the root cause of the issue is that "traverse" permissions in directories are not honoured when run as root:</div><div class=""><br class=""></div><div class=""><font face="Monaco" class=""><span style="font-style: normal;" class="">    root $ d=$(mktemp -d)</span></font></div><div class=""><font face="Monaco" class=""><span style="font-style: normal;" class="">    root $ touch $d/foo</span></font></div><div class=""><font face="Monaco" class=""><span style="font-style: normal;" class="">    root $ chmod 000 $d</span></font></div><div class=""><font face="Monaco" class=""><span style="font-style: normal;" class="">    root $ stat $d/foo</span></font></div><div class=""><font face="Monaco" class=""><span style="font-style: normal;" class="">    16777221 234259215 -rw-r--r-- 1 root wheel 0 0 <...></span></font></div><div class=""><br class=""></div><div class="">When I would expect:</div><div class=""><br class=""></div><div class=""><font face="Monaco" class=""><span style="font-style: normal;" class="">    ldionne $ d=$(mktemp -d)</span></font></div><div class=""><font face="Monaco" class=""><span style="font-style: normal;" class="">    ldionne $ touch $d/foo</span></font></div><div class=""><font face="Monaco" class=""><span style="font-style: normal;" class="">    ldionne $ chmod 000 $d</span></font></div><div class=""><font face="Monaco" class=""><span style="font-style: normal;" class="">    ldionne $ stat $d/foo</span></font></div><div class=""><font face="Monaco" class=""><span style="font-style: normal;" class="">    stat: <...>/tmp.JoY6Ixmo/foo: stat: Permission denied</span></font></div><div class=""><br class=""></div><div class="">Does that make sense? I didn't know 'root' had a free pass like that.</div><div class=""><br class=""></div><div class="">Louis</div></div><div class=""><br class=""></div></body></html>