LINUX.ORG.RU

Проблема с linuxthreads


0

0

Есть программа юзающая потоки. Прекрасно работает в FreeBSD, в Линухе под NPTL, а под linuxthreads - нет. Возникают два варианта ошибок: 1) pthread_create при первом же вызове возвращает NULL и ошибку "нехватка ресурсов" 2) поток создается, но первая же попытка выделить в нем или в основном потоке блок памяти где-то >5мб. приводит к возвращению NULLа при том, что свободной памяти предостаточно. Из особенностей самой программы - юзает MPI(lam). Машина, где это запускается имеет 2гб памяти, 2.6 ядро, но glibc только с linuxthreads. Что-либо менять в системе у меня возможности нет, доступ только юзерский, но программа работать должна. :) Как гриЦЦа, помогите, кто что знает как с таким бороться.


Ответ на: комментарий от SevaB

а меня почемуто мучают сомнения вообще на тему поддержки linuxthreads в 2.6

мож у вас там libc кривоватая?

в смысле с завязанная на ядро 2.4?

cvv ★★★★★
()
Ответ на: комментарий от cvv

libc таки да скомпиленная на 2.4 Может есть смысл собрать другую libc? Кстати, отдельно от libc NPTL модуль собрать не выйдет?

SevaB
() автор топика
Ответ на: комментарий от SevaB

>libc таки да скомпиленная на 2.4

здесь определяющим является не где скомпилена libc а для какого ядра.

>Может есть смысл собрать другую libc?

наверное эт ваш наилучший выход. причём подлинковать статически

>Кстати, отдельно от libc NPTL модуль собрать не выйдет?

не знаю.

cvv ★★★★★
()
Ответ на: комментарий от cvv

Вообще-то странно всё это. Попробуйте запустить программу, интенсивно работающую с потоками. Ну хотя бы пример SwingSet2 из пакета Sun JDK (java.sun.com). Если всё работает хорошо - ошибка с вероятностью 99.9% в вашем коде.

В таком случае стоит посмотреть в сторону исходников заюзанной LinuxThreads, если ничего в голову не приходит... А, ещё попробуйте уменьшить размер стека создаваемых потоков. Что будет?

>наверное эт ваш наилучший выход. причём подлинковать статически

Статически не получится.

>Кстати, отдельно от libc NPTL модуль собрать не выйдет?

Нет, нельзя.

jek_
()
Ответ на: комментарий от jek_

>>наверное эт ваш наилучший выход. причём подлинковать статически

>Статически не получится.

так и есть. ошибся

ну ещё можешь попробовать повозится с LD_PRELOAD && LD_LIBRARY_PATH

cvv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.