Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

вопрос по работе pthread

46K
23 января 2009 года
sedoylev
3 / / 23.01.2009
Доброго времени суток!
Вопрос следующий может ли дочерний процесс порождать свои дочерние процессы?
Столкнулся с траблой, библиотека libptreads.so.1, ОС FreeBSD 5.4. Порождаю поток который слушает входящие соединия, при поступлении входящего запроса создает отдельный поток для обработки. Падает в кору.
Заранее благодарен
554
23 января 2009 года
Zhilin Mike
159 / / 11.02.2003
Мм...

А какие-нибудь подробности есть еще?

+ Пятерки нет под рукой, могу попробовать на семерке релизовской для чистоты эксперимента.
2
23 января 2009 года
squirL
5.6K / / 13.08.2003
Цитата: sedoylev
Доброго времени суток!
Вопрос следующий может ли дочерний процесс порождать свои дочерние процессы?
Столкнулся с траблой, библиотека libptreads.so.1, ОС FreeBSD 5.4. Порождаю поток который слушает входящие соединия, при поступлении входящего запроса создает отдельный поток для обработки. Падает в кору.
Заранее благодарен


а на код можно взглянуть? а то вопрос очень странно сформулирован.

ЗЫ: 5.4?? зачем вам этот динозавр?

46K
23 января 2009 года
sedoylev
3 / / 23.01.2009
Тьфу... Шайтан. Извиняюсь, не то сказал. Я имел ввиду не процессы, а потоки.
Может ли дочерний поток порождать новые потоки.
gdb говорит так:
Цитата:

GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-marcel-freebsd"...
Core was generated by `interconsole'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /lib/libkvm.so.2...done.
Loaded symbols for /lib/libkvm.so.2
Reading symbols from /usr/lib/libxml2.so.8...done.
Loaded symbols for /usr/lib/libxml2.so.8
Reading symbols from /lib/libncurses.so.5...done.
Loaded symbols for /lib/libncurses.so.5
Reading symbols from /usr/lib/libdialog.so.4...done.
Loaded symbols for /usr/lib/libdialog.so.4
Reading symbols from /usr/lib/libpthread.so.1...done.
Loaded symbols for /usr/lib/libpthread.so.1
Reading symbols from /lib/libc.so.5...done.
Loaded symbols for /lib/libc.so.5
Reading symbols from /usr/lib/libiconv.so.6...done.
Loaded symbols for /usr/lib/libiconv.so.6
Reading symbols from /usr/lib/libstdc++.so.4...done.
Loaded symbols for /usr/lib/libstdc++.so.4
Reading symbols from /lib/libm.so.3...done.
Loaded symbols for /lib/libm.so.3
Reading symbols from /libexec/ld-elf.so.1...done.
Loaded symbols for /libexec/ld-elf.so.1
#0 0x2820031b in pthread_testcancel () from /usr/lib/libpthread.so.1
(gdb) bt
#0 0x2820031b in pthread_testcancel () from /usr/lib/libpthread.so.1
#1 0x281f8902 in pthread_mutexattr_init () from /usr/lib/libpthread.so.1
#2 0x00000000 in ?? ()
(gdb)



Сам код к сожалению выложить не могу. Буду благодарен хотя бы за данное направление поисков. Из того что нашел было только невнятное "поврежден стэк". По логам по-крайней мере понятно, что поток запускается и валится внутри. Я вот подумал, может проблема в каком то отсутствующем патче. Потому что код уже прочесал вдоль и поперек.
Использование такой ОС поставлено в задаче.
Спасибо

355
23 января 2009 года
<SCORP>
786 / / 21.10.2006
попробуйте сделать простой прототип, не нагруженый логикой приложения, а просто реализующий создание дочернего потока внутри другого дочернего потока. если будет работать - значит проблема не в этом. если так же будет падать, можно будет как минимум выложить сюда код и разговаривать предметно
502
24 января 2009 года
Jail
550 / / 30.01.2007
[QUOTE=sedoylev ]Может ли дочерний поток порождать новые потоки.[/QUOTE]
Может. А что ему мешает это сделать? Важно понимать что из себя представляет еденица - поток, каким образом настраиваются ресурсы выделяемые еденичному потоку и что еще более важно - правильный контроль потовок и избежание борьбы за ресурсы между потоками в пределах одного процесса, а так же попадание потоков в "мертвую блокировку". Литературку почетать вам точно не мешало бы.....
[QUOTE=sedoylev ]Core was generated by `interconsole'.
Program terminated with signal 11, Segmentation fault.[/QUOTE]
Не о чем не говорит? Более чем похоже на ошибку при работе с ФС - или недостаточно места в разделе (вызванное переполнением) или же ошибка записи по правам доступа.....
[QUOTE=sedoylev]#0 0x2820031b in pthread_testcancel () from /usr/lib/libpthread.so.1
#1 0x281f8902 in pthread_mutexattr_init () from /usr/lib/libpthread.so.1
#2 0x00000000 in ?? ()[/QUOTE]
ошибка переполнения (эсли таковая имеет место быть) могла быть вызванна неправильной/ошибочной работой с мьютексами.
[QUOTE=sedoylev]Сам код к сожалению выложить не могу.[/QUOTE]
тогда и мы вам помочь ни чем не можем.
[QUOTE=sedoylev]Я вот подумал, может проблема в каком то отсутствующем патче. Потому что код уже прочесал вдоль и поперек.[/QUOTE]
дык к тому же не очень осведомлены о системе установки ПО во FreeBSD......
патчи присутствуют с системе портов и при сборке пакеджа из сорцев, с помощью этих самых портов, патчи майнтайнеров и накладываються на сорцы скаченные с репозитариев. Обновите локальное дерево портов и соберите новые библиотеки или же установите новые версии библиотек при помощи пакеджей (что будет менее накладнее).
[QUOTE=sedoylev]Использование такой ОС поставлено в задаче. [/QUOTE]
Извиняюсь, но....задача глупа изначально.
46K
28 января 2009 года
sedoylev
3 / / 23.01.2009
Спасибо всем за помощь. Вопрос отпал.

По поводу комментариев:
Цитата:
ошибка переполнения (эсли таковая имеет место быть) могла быть вызванна неправильной/ошибочной работой с мьютексами.


Если уж читать до конца все что пишет gdb то получается что ошибка вызвана вызовом соответствующих функций внутри библиотеки libpthread, судя по стеку внутри pthread_testcancel вызывалась функция pthread_mutexattr_init, которая и вызвала сбой. Я мутексы не трогал.

Спасибо вам уважаемый за желание помочь, но видимо вы плохо представляете себе что такое работа с заказчиком и кто говорит какая ОС должна использоваться, будет ли она иметь выход в сеть и даже какая версия ОС и какие обновления. Глупая не глупая, но это задача направленная на конкретное промышленное решение, здесь не стоит вопрос красивости решения или оптимальности, здесь стоит вопрос как сделать из того что есть то что работает и работает как надо. Грубо говоря, "вот тебе две палки и веревка, на большее нет желания, возможностей и денег. сделай качели".
В любом случае большое спасибо.

2
28 января 2009 года
squirL
5.6K / / 13.08.2003
Цитата: sedoylev

Спасибо вам уважаемый за желание помочь, но видимо вы плохо представляете себе что такое работа с заказчиком и кто говорит какая ОС должна использоваться, будет ли она иметь выход в сеть и даже какая версия ОС и какие обновления.



:) ну да. мы все - 13-ти летние пионеры. есть такой закон в бизнесе - если заказчик идиот - с ним дешевле не работать. 5.4 - ветка, во-первых, не поддерживаемая, а во-вторых - вся пятая ветка была экспериментальной, по большому счету. и говорить о промышленных решениях тут как-то странно.
впрочем ладно, дело ваше. а проблема то как решилась?

502
28 января 2009 года
Jail
550 / / 30.01.2007
Цитата: sedoylev

Спасибо вам уважаемый за желание помочь, но видимо вы плохо представляете себе что такое работа с заказчиком и кто говорит какая ОС должна использоваться, будет ли она иметь выход в сеть и даже какая версия ОС и какие обновления. Глупая не глупая, но это задача направленная на конкретное промышленное решение, здесь не стоит вопрос красивости решения или оптимальности, здесь стоит вопрос как сделать из того что есть то что работает и работает как надо. Грубо говоря, "вот тебе две палки и веревка, на большее нет желания, возможностей и денег. сделай качели".
В любом случае большое спасибо.


Я понял вашу лирику, но абсолютно не ясна позиция и приоритет выбора....
Мне кажется нет ничего сложного в обновлении версии 5.4 до последней версии из ветки 6 или 7. И у вас меньше проблем и в конце концов вы ничего не теряете, а только приобретаете. Как ни погляди, но вы выступая в качестве специалиста вполне могли бы переубедить заказчика в некорректности принятого им решения и посоветовать более продуктивные предметы и методы решения проблемы.
Говорю так смело потому, что имею опыт работы с заказчиками разных "мастей" и нравов, так как на данный момент работаю в одном из ведущих Российских частных банков. И поверте, клиенты/заказчики бывают разные и с любым можно найти общий язык. По собственному опыту могу так смело высказаться :)
Если нафлудил, то извиняюсь...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог