My $.02:

а если еще и exception используются, то gcc надо конфигурять с --with-threads.
Кроме того, имеет смысл убедиться, что gdb собран с патчем для threads.

--cdi

P.S. Откровенно говоря, исходя из моего "опыта" :) работы со threads (в
частности, linuxthreads) от дебуггера толку предельно мало. code review +
отладочная печать -- наш выбор ;)

On Tue, Aug 01, 2000 at 10:37:23AM +0500, Vlad Harchev wrote:
> On Tue, 1 Aug 2000, Alexander Kotelnikov wrote:
> 
> > On Tue, Aug 01, 2000 at 01:09:27AM +0400, Peter Novodvorsky wrote:
> > > ++ 01/08/00 01:03 +0400 - Alexander Kotelnikov:
> > > > Hi,
> > > > 
> > > > multithreaded программа делает Sefmentation fault, приотладки с gdb 
> > > > выясняется, что она получает "SIGTTOU", я как-то в первые с этим 
> > > > сигналом 
> > > > столкнулся, чтобы это могло значить? У программы две нитки, пишущие в 
> > > > stdout
> > > 
> > > SIGTTOU  Остановка фонового процесса, если он пытается записать данные
> > >    на свой управляющий терминал.
> > > 
> > >                                           (C) Terrence Chan.
> > 
> > ну это еще и ``man 7 signal'' впрос почему это возникает.
> > 
> > Есть некоторое чувство, что "главная" нитка каким-либо образом блокирует
> > stdout для "побочной". Возникает это чувство из-за того, что программа не 
> > всегда получат Segfault'ы, но достаточно часто, чтобы обеспокоиться. При 
> > этом 
> > замечено, что если "главной" нитке увеличить жизнь, добавив sleep(3) в 
> > конце,
> > то все перестает глючить напрочь.
> 
>   У меня такая гипотеза: SIGTTOU программа получает только когда отлаживается
> под gdb (так как от SITTOU программы не сегфаултятся и не падают - см. man 7
> signal - их просто останавливают). Поэтому, если софтина падает по sefault,
> значит ошибка происходит в другом месте. Я бы порекомендовал разрешить кидать 
> корки и посмотреть в корке где упала софтина:
>  gdb -c core-file-name или что-то типа того - я не помню (насколько я помню,
> после запуска gdb таким образом надо набрать where и он скажет где софтина
> упала).
> 
>  И еще - я чувствую, что программа на С++ - поэтому я бы удостоверился, что
> либы, которые используются обоими витками, мультинитевые (иначе программа
> может падать в какой-то либе). Если используется STL, то надо определить 
> какой-то макрос - и т.д.
> 
> > 
> > -- 
> > Alexander Kotelnikov
> > Saint-Petersburg, Russia
> > 
> 
>  Best regards,
>   -Vlad
> 
> 
> --  
> To UNSUBSCRIBE, email to [EMAIL PROTECTED]
> with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
> 

-- 

Ответить