Hi Jonas, I believe I fixed the issue, and I've recommitted the change as r337765. Please let me know if you still see the failures. I think there might be a lingering issues with how we handle DT_UNKNOWN.
/Eric On Mon, Jul 23, 2018 at 3:53 PM Eric Fiselier <e...@efcs.ca> wrote: > I think I've found the bug, but I need to spend some more time on it. > > I've reverted in for now in r337749. > > /Eric > > On Mon, Jul 23, 2018 at 1:25 PM Eric Fiselier <e...@efcs.ca> wrote: > >> Thanks. I'm looking into this. >> >> /Eric >> >> On Mon, Jul 23, 2018 at 12:58 PM Jonas Hahnfeld <hah...@hahnjo.de> wrote: >> >>> Hi Eric, >>> >>> this breaks >>> test/std/experimental/filesystem/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp >>> >>> for me: >>> In access_denied_on_recursion_test_case():176 Assertion TEST_CHECK(ec) >>> failed. >>> in file: >>> >>> <<<LLVM>>>/projects/libcxx/test/std/experimental/filesystem/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp >>> >>> In access_denied_on_recursion_test_case():177 Assertion TEST_CHECK(it == >>> endIt) failed. >>> in file: >>> >>> <<<LLVM>>>/projects/libcxx/test/std/experimental/filesystem/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp >>> >>> In access_denied_on_recursion_test_case():189 Assertion >>> TEST_REQUIRE_THROW(filesystem_error,++it) failed. >>> in file: >>> >>> <<<LLVM>>>/projects/libcxx/test/std/experimental/filesystem/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp >>> >>> In test_PR35078():285 Assertion TEST_REQUIRE(it != endIt) failed. >>> in file: >>> >>> <<<LLVM>>>/projects/libcxx/test/std/experimental/filesystem/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp >>> >>> In test_PR35078_with_symlink():384 Assertion TEST_CHECK(ec) failed. >>> in file: >>> >>> <<<LLVM>>>/projects/libcxx/test/std/experimental/filesystem/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp >>> >>> In test_PR35078_with_symlink():385 Assertion TEST_CHECK(ec == eacess_ec) >>> failed. >>> in file: >>> >>> <<<LLVM>>>/projects/libcxx/test/std/experimental/filesystem/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp >>> >>> In test_PR35078_with_symlink_file():461 Assertion TEST_CHECK(*it == >>> symFile) failed. >>> in file: >>> >>> <<<LLVM>>>/projects/libcxx/test/std/experimental/filesystem/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp >>> >>> In test_PR35078_with_symlink_file():467 Assertion TEST_REQUIRE(it != >>> EndIt) failed. >>> in file: >>> >>> <<<LLVM>>>/projects/libcxx/test/std/experimental/filesystem/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp >>> >>> Summary for testsuite recursive_directory_iterator_increment_tests: >>> 5 of 9 test cases passed. >>> 156 of 164 assertions passed. >>> 0 unsupported test cases. >>> >>> Do you have an idea? I'm on a local XFS mount, the sources are on NFS... >>> >>> Thanks, >>> Jonas >>> >>> On 2018-07-23 06:55, Eric Fiselier via cfe-commits wrote: >>> > Author: ericwf >>> > Date: Sun Jul 22 21:55:57 2018 >>> > New Revision: 337669 >>> > >>> > URL: http://llvm.org/viewvc/llvm-project?rev=337669&view=rev >>> > Log: >>> > Use possibly cached directory entry values when performing recursive >>> > directory iteration. >>> > >>> > Modified: >>> > libcxx/trunk/src/experimental/filesystem/directory_iterator.cpp >>> > >>> > Modified: >>> > libcxx/trunk/src/experimental/filesystem/directory_iterator.cpp >>> > URL: >>> > >>> http://llvm.org/viewvc/llvm-project/libcxx/trunk/src/experimental/filesystem/directory_iterator.cpp?rev=337669&r1=337668&r2=337669&view=diff >>> > >>> ============================================================================== >>> > --- libcxx/trunk/src/experimental/filesystem/directory_iterator.cpp >>> > (original) >>> > +++ libcxx/trunk/src/experimental/filesystem/directory_iterator.cpp >>> > Sun Jul 22 21:55:57 2018 >>> > @@ -359,13 +359,13 @@ bool recursive_directory_iterator::__try >>> > bool skip_rec = false; >>> > std::error_code m_ec; >>> > if (!rec_sym) { >>> > - file_status st = curr_it.__entry_.symlink_status(m_ec); >>> > + file_status st(curr_it.__entry_.__get_sym_ft(&m_ec)); >>> > if (m_ec && status_known(st)) >>> > m_ec.clear(); >>> > if (m_ec || is_symlink(st) || !is_directory(st)) >>> > skip_rec = true; >>> > } else { >>> > - file_status st = curr_it.__entry_.status(m_ec); >>> > + file_status st(curr_it.__entry_.__get_ft(&m_ec)); >>> > if (m_ec && status_known(st)) >>> > m_ec.clear(); >>> > if (m_ec || !is_directory(st)) >>> > >>> > >>> > _______________________________________________ >>> > cfe-commits mailing list >>> > cfe-commits@lists.llvm.org >>> > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >>> >>
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits