Периодические, случайные ошибки "файл не найден" в подсистеме Windows для Linux (WSL)

Я получаю сообщение об ошибке "Неустранимая ошибка:... не найден", создавая приложение C++, используя либо gcc 4.8, либо clang 3.8 в Ubuntu 16.04.2, работающий в подсистеме Windows для Linux (WSL), при включении заголовка C++ файлов, но только с момента установки обновления для Windows 10 апреля (версия 1803, OS Build 17134.1) несколько дней назад.

Пример сообщения об ошибке из компилятора clang:

fatal error: 'boost/preprocessor/list/fold_left.hpp' file not found

Пример сообщения об ошибке из gcc-компилятора:

fatal error: boost/mpl/aux_/at_impl.hpp: No such file or directory

Я говорю, что ошибка прерывистая, потому что, если я повторно запустил сборку, то конкретная ошибка, которая прервала сборку, исчезнет, а сборка выполняется некоторое время до тех пор, пока она не завершится успешно или случайно не включит какой-либо другой файл с таким же типом ошибка "файл не найден".

Сроки этой ошибки и случайность этого заставляют меня подозревать, что это новая ошибка в WSL. Кто-нибудь еще видит это или имеет предложения о том, как его исправить?

Ошибка не всегда включена в Boost, но часто это просто потому, что Boost содержит значительную часть общих файлов include. Создаваемые файлы существуют на общем томе под /mnt/d/.

Ответы

Ответ 1

Это было идентифицировано как многопоточная ошибка (https://docs.microsoft.com/en-us/windows/wsl/release-notes#build-17655-skip-ahead) и должна быть исправлена в будущем обновлении Windows.

Поскольку это многопоточная ошибка, возможно, ее можно обойти, не используя многопоточные сборки.

Если вы спешите, возможно, вы сможете просто перейти к инсайдерской программе Windows и использовать один из предварительных сборников.