Недавно на моем Mac появились странные сообщения, такие как «Месяц 13 вышел за пределы».
Как исправить эту ошибку? Я не могу обратиться в авторизованный сервисный центр Ant Apple, потому что он находится очень далеко от Apple.
Недавно на моем Mac появились странные сообщения, такие как «Месяц 13 вышел за пределы».
Как исправить эту ошибку? Я не могу обратиться в авторизованный сервисный центр Ant Apple, потому что он находится очень далеко от Apple.
Ответы:
Эта ошибка регистрируется в iOS 11 и macOS 10.13, и я не вижу, чтобы она вызывала какую-либо конкретную функцию или проблему на любой платформе.
Здесь я приведу основной вопрос о том, «слишком ли много в MacOS регистрируется», так как это мнение и впечатление заслуживают обсуждения. Некоторые люди могли бы чувствовать себя лучше, если бы не было сообщений, если действительно серьезное состояние не требует действий. Другие хотят еще больше деталей, чтобы они могли знать, что происходит / учиться / измерять. Таким образом, это будет компромисс, как эти проблемы / классифицировать / использовать.
Одним из интересных разработчиков, у которого есть некоторые инструменты, является Говард Окли, который ведет блог на https://eclecticlight.co/
На его странице загрузок есть два интересующих приложения (используйте левую ссылку для загрузки, поскольку приведенные ниже версии продукта являются бета-версиями и могут не обновляться в течение дня или недели):
Я могу проверить законность этой проблемы. Вчера у меня была такая же проблема, и после перезагрузки компьютер стал почти бесполезным из-за этой ошибки. По какой-то причине компьютер не может справиться с этим месяцем и выдает ошибки везде, где есть базы данных или списки.
Чтобы исправить это:
Open Activity Monitor и силы бросить два процесса: lsd
,UserEventAgent
Откройте Системные настройки и перейдите к «Дата и время»
Снимите флажок «Установить дату и время автоматически»
В календаре выберите дату до декабря 2017 года и нажмите Сохранить
Если UserEventAgent
или lsd
продолжают вызывать проблемы, то принудительно закройте их снова после установки даты.
Другие люди здесь имеют эту проблему
Зачем?
Мне кажется, UserEventAgent пытался использовать два plist-файла:
System/Library/LaunchAgents/com.apple.UserEventAgent-Aqua.plist
а также
System/Library/LaunchAgents/com.apple.UserEventAgent-LoginWindow.plist
Когда он попытался использовать списки, он получил ошибку:
Month 13 is out of bounds
Я не уверен, что на самом деле произошло в UserEventAgent, но очевидно, что когда он получает ошибку, он не может с ней справиться и вызывает высокую загрузку ЦП и ОЗУ.
У меня была такая же проблема с чрезвычайно высоким использованием процессора UserEventAgent и использованием памяти, начиная с начала декабря 2017 года. Консоль показала ошибку «Месяц вне границ», как описано выше.
Я пробовал дисковую утилиту «Первая помощь», перезагрузки, безопасный режим (для очистки системного кэша), очистки NVRAM и SMD, ничего не помогло. Я заметил, что использование процессора и памяти в безопасном режиме не увеличилось.
Как и @tgray и u / kidtexas , в какой-то момент я понял, что если я отключу все свои собственные списки запуска, проблема не возникнет.
В конце концов я написал небольшой скрипт ниже, чтобы помочь мне отладить, какой plist вызывал проблему. В итоге получился список, который запускается первого числа каждого месяца:
<key>StartCalendarInterval</key>
<dict>
<key>Day</key>
<integer>1</integer>
<key>Hour</key>
<integer>03</integer>
<key>Minute</key>
<integer>00</integer>
</dict>
Многие из моих списков используют StartCalendarInterval
ключ, и, используя приведенный ниже сценарий, я мог показать, что они, похоже, не вызывают скачков памяти и памяти, поэтому мне не совсем понятно, почему один конкретный список причин проблемы. Независимо от того, как я с этим разобрался.
Я настоятельно рекомендую читателям просмотреть сценарий, чтобы попытаться понять, что он делает, а не просто копировать и вставлять. В частности, как написано это будет работать только для plists в ~/Library/LaunchAgents
(не /Library/LaunchDaemons
и других), и он намеренно проверяет только plists чьего имени файла и <key>Label</key>
следовать шаблону конкретного: com.USERNAME.my_plist_name[.plist]
. Перед запуском я использовал однострочник для bootout
всех моих списков for plist in com."$(whoami)".*.plist; do launchctl bootout gui/"${MYUID}"/"${plist%.plist}" || true; done
, а затем убедился , что они больше не отображаются в launchctl list
результатах.
#! /bin/bash
# /apple/307512/month-13-is-out-of-bounds
set -euf -o pipefail
MYUID="$(id -u)"
pushd "${HOME}"/Library/LaunchAgents
while IFS= read -r -d '' plist; do
echo "${plist}"
stats=($(ps ux | grep -v grep | grep UserEventAgent | awk '{ print $3, $5}'))
cpu="${stats[0]}"
vmem="${stats[1]}"
echo "CPU use and virtual memory size while disabled: ${stats[@]}"
launchctl bootstrap gui/"${MYUID}" "${plist}"
sleep 5
stats=($(ps ux | grep -v grep | grep UserEventAgent | awk '{ print $3, $5}'))
echo "CPU use and virtual memory size while enabled: ${stats[@]}"
echo "Change in vmem: $(( "${vmem}" - "${stats[1]}" ))"
echo
done < <(find . -iname "com.$(whoami).*.plist" -print0)
popd
bootout
будьте внимательны, чтобы запустить (или аналогичный), который рекомендует n8henrie.
Как и у других, у меня было высокое использование процессора и огромное использование оперативной памяти от UserEventAgent (см. Мой комментарий выше). Измените дату на ноябрь и принудительно завершите работу с UserEventAgent. Все началось в субботу после перезагрузки.
Я понял это для меня. Надеюсь, для других, у кого есть проблемы, это будет работать для вас.
Проблема была в списке LaunchAgent, который у меня есть в ~ / Library / LaunchAgents. Это простой plist-файл, который вызывает StartCalendarInterval, который является допустимым ключом для launchd plists. Задание LaunchAgent вызывает сценарий оболочки, который копирует некоторые файлы в резервное хранилище в первый день месяца. Задание вообще не вызывается - я думаю, что оно запускается, проверяя загруженные задания по календарю, который вызывает проблему. Как только я выгрузил этот список и переместил файл из каталога, UserEventAgent был в порядке (после принудительного выхода). Когда я загрузил plist (launchctl load xxxx), UserEventAgent сошел с ума.
StartCalendarInterval является действительным ключом для запуска, как показано здесь в документации Apple .
Так что для тех, у кого есть проблемы, проверьте свои каталоги LaunchAgent и найдите ключ StartCalendarInterval (или любой другой ключ, связанный с календарем). У меня не было проблем со списками интервалов времени.
Примечание: это не исправляет ошибки «Месяца 13 вне пределов», только сумасшедшее поведение UserEventAgent.
После сообщения об этом в Apple и масштабирования цепочки эскалации мне сказали, что это должно быть исправлено в macOS 10.13.3.
По-видимому, это вызвано тем, что приложение вызывает устаревшую процедуру NSDate «descriptionWithCalendarFormat» .
Вы можете прочитать больше на https://forums.developer.apple.com/thread/88417 .
В некоторых случаях редактирование или удаление определенных файлов plist не позволит программам вызывать устаревшую процедуру, но реальное исправление - это обновление ОС.