The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"open & select из разных потоков  NPTL"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"open & select из разных потоков  NPTL"  
Сообщение от rmf email on 13-Апр-07, 12:42 
Задача
========

1) glibc 2.3.6
GNU C Library stable release version 2.3.6, by Roland McGrath et al.
Copyright (C) 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21).
Compiled on a Linux 2.6.18 system on 2007-02-03.
Available extensions:
        GNU libio by Per Bothner
        crypt add-on version 2.1 by Michael Glad and others
        GNU Libidn by Simon Josefsson
        linuxthreads-0.10 by Xavier Leroy
        BIND-8.2.3-T5B
        libthread_db work sponsored by Alpha Processor Inc
        NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
Thread-local storage support included.

2) -lpthread -D_REENTANT
слинковано с NPTL тредлибом
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0

3) fd = open() в одном потоке (main)

4) select(fd) в другом
----

Реультат
============

select(fd) возвращает ошибку "Bad file descriptor"

На старой glibc 2.3.2 с linuxthreads ( без NPTL)
дискрипторы нормально разделялись.


Вопрос
==========
Если от схемы не уйти ( open в одном, select в другом), то как можно решить проблему?
Собрать с старым linuxthreads или можно указать что-нибудь при сборке с NTPL lib или ещё как-то?
Подскажите кто сталкивался.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "open & select из разных потоков  NPTL"  
Сообщение от Hordi email on 13-Апр-07, 17:39 
А уверен, что поток с select вызывается не первее потока с open?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "open & select из разных потоков  NPTL"  
Сообщение от rmf email on 13-Апр-07, 19:33 
>А уверен, что поток с select вызывается не первее потока с open?
>

Если запустить с LD_ASSUME_KERNEL=2.4.19 ( то есть точно со старым linuxthreads ),
то все нормально.

Но так как софтина своя, то хочется
1) собрать её так чтобы она желизно использовала старую библиотеку linuxthreads (она есть в glibc)
или
2) использовать NPTL но с разделением ресурсов между потоками, как это и есть linuxthreads

Не могу найти четкой доки, везде советы с LD_ASSUME_KERNEL.
УЖОС какой-то. Ткните носом, plz.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "open & select из разных потоков  NPTL"  
Сообщение от Michelnok (ok) on 14-Апр-07, 13:45 
>>А уверен, что поток с select вызывается не первее потока с open?
>
>Если запустить...

Ты не ответил на вопрос. А похоже что это именно тот вопрос, который решает твою проблему.
Если у тебя select теоретически может вызываться до open, то с linuxthreads оно работало лишь по случайному совпадению и NPTL тут не при чем.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "open & select из разных потоков  NPTL"  
Сообщение от rmf on 14-Апр-07, 15:32 
>>>А уверен, что поток с select вызывается не первее потока с open?
>>
>>Если запустить...
>
>Ты не ответил на вопрос. А похоже что это именно тот вопрос,
>который решает твою проблему.

Сорри, все как обычно - рукаляпсус :

open(нужные файлы)
fork()
close(_ВСЕ_ открытые файлы)
...
select()

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру