This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libc/10071] 2.9.90 (2009-04-14) libio/genops.c : __underflow() does not handle NULL FP


------- Additional Comments From jason dot vas dot dias at gmail dot com  2009-04-15 00:14 -------
Thanks for the response - sorry for not submitting a test case,
but I usually report a bug without a detailed test case first
to see if is a "known problem" and then submit a detailed test
case if it is not - which I am now doing.

BTW - RE: Comment #1 - you state:
 > provide a test case for a sane environment or stick with a distribution
 >
Are you suggesting that linux-2.6.30 + gcc-4.3.4 + binutils-2.19.51.20090412
does not constitute a "sane environment" ? If so, in what way ? Is the glibc 
in the CVS root `:pserver:anoncvs@sources.redhat.com:/cvs/glibc' not meant
to be built under any system other than a Red Hat one ? If so, this should
be stated clearly in the documentation at :
  http://www.gnu.org/software/libc/resources.html
which lists the above CVS root as the primary CVS source for GLIBC . 
I've set up different chroot environments for testing of my software, 
which I do not release until all test cases pass under each chroot 
environment:
  o LATEST of EVERTHING - originally gentoo 2008-02 based
    - this is the one which now has glibc-2.9.90 20090414 installed. 
    It also has multiple versions of GCC and binutils installed so I
    can test older versions against later dependency installations.
  o FC-11     o FC-10   o FC-8  o FC-6
  o RHEL-5    o RHEL-4  o RHEL-3
  o SuSe      o debian  o mandriva  o ubuntu
  o Solaris X86   o FreeBSD   o NetBSD
I try to report all bug reports found - is this somehow wrong to do ?

OK, so here's the test case :

TEST CASE
~~~~~~~~~

Environment:

gcc-4.3.4 ( svn 2009-04-09T00:16:16.646518Z )
binutils  ( CVS 2009-04-13, 2.19.51.20090412)
gtk-2.14.8 & all dependencies rebuilt as of 2000-04-01
Xorg @ 2009-04-01 : EVERYTHING under git://git.freedesktop.org/xorg rebuilt.

The AT&T AST SFIO and vmalloc packages rebuilt and installed from 
http://www.research.att.com/~gsf/download/tgz/sfio.2005-02-01.tgz,
with "posix_memalign" added to vmalloc (source available on request).

#include <gtk/gtk.h>
int main(int argc, char **argv, char **envp)
{
    gtk_init(&argc, &argv);
    GtkWidget *main_win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    GtkWidget *label    = gtk_label_new("It Works!");
    gtk_container_add(GTK_CONTAINER(main_win),label);
    g_signal_connect (G_OBJECT (main_win), "delete_event",
                      G_CALLBACK (gtk_widget_destroy), main_win);
    g_signal_connect (G_OBJECT (main_win), "destroy",
                      G_CALLBACK (gtk_main_quit), NULL);
    gtk_widget_show_all(main_win);
    gtk_main();
    return(0);
}' > tgtk.c
$ gcc -o tgtk tgtk.c -I${DS_DIR} -L${DS_DIR} \
-I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/atk-1.0
-I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0
-I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2
-I/usr/include/libpng12 \
-Wl,--whole-archive,--export-dynamic /usr/ds_bin/libstdio.a
/usr/ds_bin/libsfio.a /usr/ds_bin/libvmalloc.a -Wl,--no-whole-archive
-lgtk-x11-2.0 -lgio-2.0 -lgdk-x11-2.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo
-lpangoft2-1.0 -latk-1.0 -lpango-1.0 -lm -lgobject-2.0 -lgmodule-2.0 -lglib-2.0
-lfreetype -lfontconfig -lcrypt -lresolv -lrt -lpthread -ldl -lc
-Wl,-R,/home/jason/DayGUI:/usr/lib/gcc/x86_64-unknown-linux-gnu/4.3.4

$ gdb ./tgtk
GNU gdb 6.8.0.20090412-cvs
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu"...
(gdb) start
Breakpoint 1 at 0x4231b0
Starting program: /home/jason/D/tGtk/tgtk
[Thread debugging using libthread_db enabled]
[New Thread 0x7f1434a07790 (LWP 10561)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f1434a07790 (LWP 10561)]
*__GI___underflow (fp=<value optimized out>) at genops.c:361
361       return _IO_UNDERFLOW (fp);
(gdb) quit


Now, if I replace the new glibc-2.9.90-20090414 files with those from
glibc-2.9.90-20090320 , and repeat the test case, the above problem does not
occur, and a gtk window displays the string "It Works!" when run .

Yes, this problem is something to do with including the SFIO packages, and
I can sort this out myself.

But ONLY an install of the new glibc is necessary to trigger the problem -
all other software remains unchanged.

So what changed in glibc between 20090320 and 20090414 that would cause these
SFIO glibc function overrides to cause a SIGSEGV in _start ( GI__underflow ) ?

This is what I am now investigating - any assistance or suggestions 
that the GLIBC developers might make would be most gratefully received.

But IMHO it is a bug that GI__underflow() does not detect a NULL fp argument -
if it did, it could use the new libunwind support to print a stack backtrace
that might greatly help track down the root cause of this problem.


-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|SUSPENDED                   |NEW


http://sourceware.org/bugzilla/show_bug.cgi?id=10071

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]