glibc2.1 and Xlib compiled with glibc2.0 (libio incompatibility)

Eugene M. Indenbom bom@classic.iki.rssi.ru
Thu Apr 1 00:00:00 GMT 1999


>Submitter-Id: 
net >Originator: Eugene M. Indenbom >Organization:  Space 
Research Institute, Moscow, Russia >Confidential: no >Synopsis: 
glibc2.1 applications linked with Xlib linked against glibc2.0 are not 
working >Severity: serious
>Priority: 
medium
>Category: 
libc >Class:  sw-bug
>Release: 
libc-2.1.0 >Environment: Host type: i586-pc-linux-gnu System: Linux 
tver 2.2.0 #1 SMP Tue Jan 26 10:42:08 MSK 1999 i686 unknown Architecture: 
i686
  Addons: crypt linuxthreads
  Build CC: gcc Compiler version: 
egcs-2.91.60 19981201 (egcs-1.1.1 release) Kernel headers: 2.2.0 Symbol 
versioning: yes Build static: yes Build shared: yes Build pic-default: 
no Build profile: yes Build omitfp: yes Build bounded: no Build 
static-nss: no Stdio: libio
 
Binutils: 
2.9.1.0.19a
 
>Description:
glibc2.1 applications linked 
with Xlib linked against glibc2.0 will terminate with SIGSEGV
when DISPLAY points to 
non-existent host.
The problem: X11 libs are using 
old libio _IO_stderr_ pointer, but newer programs
has _IO_stdio_used defined in 
crt1.c that forces new libio behavior => SIGSEGV
when called in old format. (Old 
IO is fprintf in Xtrans library when it can not resolve hostname) The 
question is how to overcome this problem?
Is glibc2.1 binary incompatible 
with glibc2.0 so everything has to be recompiled?
Or only shared libraries has to 
be recompiled?
Or I have to use stdio library 
instead of libio on Linux.
 >How-To-Repeat:
1. Take XFree86 binary 
distribution for glibc 2.0, compile any X application with this X 
libraries
provided and glibc2.1. (I try 
xtetris-2.6)
2. 
DISPLAY=tcp/nohost:0.0
3. Run it : got 
SIGSEGV >Fix: ???
Sincerely Yours, 
Eugene



More information about the Libc-alpha mailing list