Russian Qt Forum

Программирование => Общий => Тема начата: Igors от Ноябрь 20, 2011, 17:31



Название: dlopen error code 24 [решено]
Отправлено: Igors от Ноябрь 20, 2011, 17:31
Добрый день

"Floating" баг, появляется раз раз на 400-600 вызовов. dlopen возвращает NULL, dlerror печатает

Цитировать
dlopen(/Volumes/Macintosh HD/MyApp/MyPlug, 5): no suitable image found.  Did find:
   /Volumes/Macintosh HD/MyApp/MyPlug : open() failed with errno=24
Разумеется файл MyPlug имеется и его архитектура подходящая. Если повторить - dlopen сработает нормально. Но кто такой 24?

Может даже вопрос сформулировать: как "разгуглить"? Даю dlopen  и/или dlerror - масса ссылок но ничего что мне нужно. Добавляю 24 - сваливается в даты. Пробовал зацепиться за errno 24 (+ dlopen) - тоже мусор.

Спасибо


Название: Re: dlopen error code 24 (как нагуглить)
Отправлено: BRE от Ноябрь 20, 2011, 17:36
#define   EMFILE      24   /* Too many open files */


Название: Re: dlopen error code 24 (как нагуглить)
Отправлено: Igors от Ноябрь 20, 2011, 17:47
#define   EMFILE      24   /* Too many open files */

Тогда как посмотреть "а что же открыто"? Те 400-600 соответствуют 400-600 запускам приложения, ну я так полагал что (даже если я чего-то не закрыл) то ОС закроет при выходе. Или это уже не так?

Примечание: возникает только для 64 версии приложения


Название: Re: dlopen error code 24 (как нагуглить)
Отправлено: Igors от Ноябрь 21, 2011, 04:32
Похоже да - остаются незакрытые файлы. Проверил так: запустил параллельно еще копию - и обе падают одновременно с ошибкой 24. Как же я умудрился так насвистеть? Выясню - отпишусь


Название: Re: dlopen error code 24 (как нагуглить)
Отправлено: GreatSnake от Ноябрь 21, 2011, 07:08
Про strerror() (http://ru.wikipedia.org/wiki/Strerror) знать не мешало бы :)


Название: Re: dlopen error code 24 (как нагуглить)
Отправлено: Igors от Ноябрь 21, 2011, 13:05
Про strerror() (http://ru.wikipedia.org/wiki/Strerror) знать не мешало бы :)
В курсе, и про EMFILE  тоже. Но меня сбило с толку что приложение-то каждый раз завершается - откуда взяться открытым файлам? Может 24 в данном контексте нечто другое - вот и стал искать дырку от бублика  :)   


Название: Re: dlopen error code 24 (как нагуглить)
Отправлено: GreatSnake от Ноябрь 21, 2011, 13:17
Workaround (http://usrinapto.wordpress.com/2010/03/06/mac-os-x-10-6-max-open-files-too-many-open-files/).


Название: Re: dlopen error code 24 (как нагуглить)
Отправлено: Igors от Ноябрь 22, 2011, 14:04
Задействовал "File Activity" (Instruments), и он мне прекрасно показал кто, где и чего открывает и закрывает. Да, действительно, при попытке открыть 256-й файл получаю отлуп  :)

Instruments - Вещь