[Comm] Glibc 2.3.2

Alexander Bokovoy =?iso-8859-1?q?a=2Ebokovoy_=CE=C1_sam-solutions=2Enet?=
Пт Окт 31 12:48:03 MSK 2003


On Fri, Oct 31, 2003 at 08:06:49AM +1000, Igor V. Krutyakov wrote:
> В сообщении от 30 Октябрь 2003 20:56 Andrey Rahmatullin написал(a):
> 
> > >  У меня ALM 2.2. Скачал программу видеомонтажа одну, другую, обе требуют
> > > glibc 2.3. В Мастере же 2.2.6, в Сизифе тоже только 2.2.6, только более
> > > поздней сборки. На сайте же www.gnu.org текущая версия glibc - 2.3.2.
> > > Собираются ли ребята из ALTLinux обновлять glibc?
> > Пока нет AFAIK
> Интересно, почему?
Для меня, например, оказалось достаточным недостатков, упомянутых вот
здесь:
http://www.redhat.com/docs/manuals/enterprise/RHEL-3-Manual/release-notes/es-x86/

В частности:
Red Hat Enterprise Linux 3 includes the Native POSIX Thread Library
(NPTL), a new implementation of POSIX threads for Linux. This library
provides performance improvements and increased scalability.

This thread library is designed to be binary compatible with the old
LinuxThreads implementation; however, applications that rely on the places
where the LinuxThreads implementation deviates from the POSIX standard
will need to be fixed. Notable differences include:

· Signal handling has changed from per-thread signal handling to POSIX
process signal handling.

· getpid() returns the same value in all threads.

· Thread handlers registered with pthread_atfork are not run if vfork() is
used.

· No manager thread.

Applications that are known to have problems using NPTL include:

- Sun JRE prior to version 1.4.1

- IBM JRE

If an application does not work properly with NPTL, it can be run using
the old LinuxThreads implementation by setting the following environment
variable:

LD_ASSUME_KERNEL=<kernel-version>

The following versions are available:

· 2.4.19 — Linuxthreads with floating stacks

· 2.2.5 — Linuxthreads without floating stacks

Note that software using errno, h_errno, and _res must #include the
appropriate header file (errno.h, netdb.h, and resolv.h respectively)
before they are used. However, LD_ASSUME_KERNEL=2.4.19 can be used as a
workaround until the software can be fixed.
#

Multi-threaded C++ programs using thread cancellation might need to be
forced to use the LinuxThreads library using the LD_ASSUME_KERNEL=2.4.19
environment variable setting. Otherwise, the program will terminate
abnormally if the cancellation is acted on (since the generated exception
is not caught).

Newly-written C++ code that uses functions from the C runtime environment
might have to be adjusted to take the cancellation into account. This can
be done by one of the following methods:

· Not marking the C++ function with throw() (so that callers are aware
that an exception might be thrown) and by compiling the code with
exceptions. This is the default compilation option; users should not
specify -fno-exceptions when compiling.

· Disabling cancellation completely before entering the functions that
call the cancel-able C runtime functions. This can be done with the
following call:

pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &oldstate)

After the C functions are called cancellation can be enabled again with
the following call:

pthread_setcancelstate (oldstate, NULL)

NOTE: At this point the cancellations are acted upon and therefore the
function calling pthread_setcancelstate() must be compiled with exceptions
enabled and must be marked as throwing exceptions.

У нас есть некоторое количество критических приложений, работающих только
с Sun JRE <1.4.1.

> > >  Или же, если я соберу glibc 2.3.2, скачанную с gnu.org, какие проблемы
> > > я могу получить? :)
> > А ты соберешь? В RPM?
> Почему в RPM? В исходниках.
>  То есть если я скомпилирую скачанную glibc, не будут ли у меня капризничать 
> альтовские пакеты из-за каких-то особенностей альтовской сборки?
> 
> > Короче, может лучше скачаешь исходники своих софтин и соберешь с нашим
> > glibc?
> К сожалению, не получится, эти софтины в исходниках не распространяются :(
>  Хотя, если кто-нибудь посоветует пакет для видеомонтажа, наиболее похожий на 
> профессиональный, не требующий доустановки чего-то на ALM, буду весьма 
> благодарен и брошу затею с обновлением важных системных компонент не из 
> альтовских репозитариев :)
Можете попробовать выкачать glibc 2.3.2 из Rawhide и поставить ее
куда-нибудь в домашний каталог, затем запускать приложения, требующие
glibc 2.3 вот таким образом:

LD_LIBRARY_PATH=~/.lib/glibc ~/.lib/glibc/ld-2.3.2.so <APPLICATION> 

-- 
/ Alexander Bokovoy
Samba Team                      http://www.samba.org/
ALT Linux Team                  http://www.altlinux.org/
Midgard Project Ry              http://www.midgard-project.org/



Подробная информация о списке рассылки community