#python #numpy #flask #race-condition #apscheduler
#python #numpy #flask #состояние гонки #apscheduler
Вопрос:
Я разрабатываю веб-сайт на Python, используя (отлично) Фреймворк Flask. В бэкэнд-коде я использую APScheduler для выполнения некоторых заданий, подобных cron, каждую минуту, и я использую Numpy для вычисления некоторых стандартных отклонений. Не знаю, имеет ли значение использование этих модулей, но я подумал, что лучше упомянуть их, поскольку я предполагаю, что они могут быть наиболее вероятной причиной.
В любом случае, в середине работы сам Python, казалось, зависал, выдавая следующее:
*** Error in `/usr/bin/python': double free or corruption (out): 0x00007f7c3c017260 ***
Возможно, я ошибаюсь, но, насколько я знаю, это довольно серьезно. Итак, мой вопрос на самом деле; что могло вызвать это, и как я могу получить больше информации о подобном сбое? Что (out)
означает? Я не могу воспроизвести это, но это происходило 4 раза примерно за 5 месяцев. Я использую стандартный Python 2.7 на сервере Ubuntu 14.04
Я поискал и нашел пару обсуждений о похожих сбоях, из которых одна вещь возвращается: параллелизм, похоже, как-то связан (именно поэтому я включил использование APScheduler).
Если у кого-нибудь есть идеи, как я мог бы это отладить или что может быть причиной этого; все советы приветствуются!
Комментарии:
1. Поздравляю, вы обнаружили ошибку в Python или каком-либо пакете, который вы используете с машинным кодом. Вы мало что можете сделать.
2. Вы можете попытаться запустить приложение с помощью valgrind или какого-либо другого подобного инструмента. Это дало бы намного больше информации о распределении памяти / свободно. Однако это будет довольно медленнее, чем обычный запуск python.
3. Вы можете установить пакеты символов отладки python из репозиториев Ubuntu и запустить свою программу с этим. С информацией о полной трассировке стека сообщите об ошибке команде Ubuntu.
Ответ №1:
У меня была похожая проблема.
У меня была неиспользуемая зависимость: spacy == 1.6.0, ее удаление решило проблему. (возможно, обновление расширенной версии также может сработать)
spacy написан на Cython — оптимизирующем статическом компиляторе для Python. Таким образом, это может быть связано с ошибкой выделения памяти sum в пространственной реализации.