Node.js: EBADF, плохой дескриптор файла - PullRequest
11 голосов
/ 14 июля 2011

Если я перезагружаю свое приложение (из браузера с помощью кнопки перезагрузки) много раз, как 50 reload/10 seconds, это выдает мне такую ​​ошибку:

events.js:45
    throw arguments[1]; // Unhandled 'error' event
                   ^
Error: EBADF, Bad file descriptor

Это мне кажется ошибкой пропускной способности или чем-то вродевот так, изначально у меня была ошибка, когда я играл с HTML 5 Audio API, и если я загружал аудиофайл 10-15 раз последовательно, то я получал ошибку, но теперь я обнаружил, что получаюошибка без Audio API тоже, просто перезагрузив сайт много раз, также Safari выдает ошибку намного быстрее, чем Chrome (WTF?)

Я использую Node.js 0.4.8 с express+ jade и я также подключен к базе данных MySQL с модулем db-mysql.

Я не могу найти в Интернете никаких статей на эту тему, что может помочь, поэтому, пожалуйста, дайте мне знать, что можетвызвать эту ошибку, потому что это действительно сбивает с толку: (

Ответы [ 2 ]

5 голосов
/ 14 июля 2011

Под «перезагрузкой приложения» вы подразумеваете обновление домашней страницы приложения из браузера или фактически остановку и перезапуск серверного процесса node.js?Я предполагаю первое, и в этом случае, если вы не можете надежно воспроизвести это, отладку будет довольно сложно, тем более что у вас нет хорошей трассировки стека для точного определения источника.Но если вы используете ловушку express.js app.error ( документы здесь ), вы захотите записать путь ошибки из ошибки «Bad file descriptor», которая, мы надеемся, подскажет вам, является ли этовременный файл, который был удален или что.С точки зрения фактической причины, мы можем предложить только предположения, так как «Плохой дескриптор файла» является очень общей ошибкой низкого уровня, которая в основном означает, что вы вызываете операцию с файловым дескриптором, который больше не находится в правильном состоянии для обработки этой операции (например, чтение закрытого файла, открытие удаленного файла и т. д.).

0 голосов
/ 28 июля 2011

@ CIRK, взгляните на это: https://github.com/joyent/node/issues/1189

это не проблема узла, а проблема настройки системы.

edit: или возможно это связано с этой ошибкой в ​​connect 1.4.3: https://github.com/senchalabs/connect/issues/297

если это ваш случай, попробуйте обновить его

...