From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Tue, 24 Sep 2002 18:00:41 +0400 From: Sergey Vlasov To: sisyphus@altlinux.ru Cc: ldv@altlinux.org Subject: Re: [sisyphus] C++ & gdb Message-Id: <20020924180041.78932562.vsu@altlinux.ru> In-Reply-To: <20020924095231.GF10148@basalt.office.altlinux.ru> References: <20020923124244.GB937@basalt.office.altlinux.ru> <20020923132831.GA7702@sanja.is.com.ua> <20020923134241.GA11462@basalt.office.altlinux.ru> <20020923135336.GA8162@sanja.is.com.ua> <20020923140006.GA14046@basalt.office.altlinux.ru> <20020923141119.GA8263@sanja.is.com.ua> <20020923144526.GC14540@basalt.office.altlinux.ru> <20020923175953.GA9316@sanja.is.com.ua> <20020923182624.GA27164@basalt.office.altlinux.ru> <20020923195718.GA3061@sanja.is.com.ua> <20020924095231.GF10148@basalt.office.altlinux.ru> X-Mailer: Sylpheed version 0.8.1 (GTK+ 1.2.10; i586-alt-linux) Mime-Version: 1.0 Content-Type: multipart/signed; protocol="application/pgp-signature"; micalg=pgp-sha1; boundary="=.)5_WyEWDxYY.Aj" Sender: sisyphus-admin@altlinux.ru Errors-To: sisyphus-admin@altlinux.ru X-BeenThere: sisyphus@altlinux.ru X-Mailman-Version: 2.0.13 Precedence: bulk Reply-To: sisyphus@altlinux.ru List-Unsubscribe: , List-Id: List-Post: List-Help: List-Subscribe: , List-Archive: Archived-At: List-Archive: --=.)5_WyEWDxYY.Aj Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: 8bit On Tue, 24 Sep 2002 13:52:31 +0400 "Dmitry V. Levin" wrote: > On Mon, Sep 23, 2002 at 10:57:18PM +0300, Sanja Byelkin wrote: > > Доброе (РЕАЛЬНО!!!) время суток! > > > > On Mon, Sep 23, 2002 at 10:26:24PM +0400, Dmitry V. Levin wrote: > > [skip] > > > Удалось воспроизвести. > > > > > > Workaround: > > > 1. установить пакет glibc-core-debug и > > > 2. запускать gdb/ddd с LD_LIBRARY_PATH=/usr/lib/debug > > > > _ОГРОМНОЕ_ спасибо! это действительно помогло (осталось только подумать как > > это пристроить удобнее - но это уже детали) > > Честно говоря, мне пока что не ясно, почему эту нужно делать для > многопоточных программ (для обычных - не нужно). > Возможно, в по'strip'анном libpthread удалена какая-то важная для gdb > информация. Если кто-нибудь в курсе, напишите. Я, кажется, понял, в чем дело. В gdb поддержка потоков теперь сделана через libthread_db.so.1 (linuxthreads_db в glibc), а там в коде можно обнаружить, например, следующее: /* Get the global event mask. This is one of the variables which are new in the thread library to enable debugging. If it is not available we cannot debug. */ if (ps_pglobal_lookup (ps, LIBPTHREAD_SO, "__pthread_threads_events", &addr) != PS_OK) return TD_NOLIBTHREAD; Символ __pthread_threads_events встречается в libpthread.so.0 только в отладочной информации - он не экспортируется (и правильно - программам, кроме отладчика, нечего делать в этих внутренностях). Есть еще несколько аналогичных символов. Поэтому после отрезания отладочной информации libthread_db.so.1 просто не видит потоков. В сборке glibc-2.2.5-alt12 (Master updates) /lib/libpthread.so.0 содержит отладочную информацию, поэтому там эта проблема не возникает (если только не добавить к нему glibc-core-i686 из Сизифа - там /lib/i686/libpthread.so.0 обрезанный). --=.)5_WyEWDxYY.Aj Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9kHAOW82GfkQfsqIRAvy8AJ4mPFLOX9bNhpX0ftl6XZtMWXuoWQCeLC+X LVHj5hAN43AT07zAFYDapHI= =VZAV -----END PGP SIGNATURE----- --=.)5_WyEWDxYY.Aj--