[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#608055: g++-4.4: Segfault with GCC 4.4 when C++ .so is dlopen'd by pure-C executable (GCC 4.3 and 4.5 unaffected)



Package: g++-4.4
Version: 4.4.5-8
Severity: normal
Tags: upstream

There is a bug in GCC/G++ 4.4 which leads to segfaults in random places of the C++ library.  The only place it seems to pop up is in Audacious, which is a C program (linked with gcc) that loads C++ plugins at run-time (linked with g++).  Compiling Audacious and the plugins with CC=gcc-4.3 and CXX=g++-4.3 eliminates the problem.  According to reports from Ubuntu and Gentoo users, the problem is also fixed by using GCC 4.5.  So, it would be nice if the change that produced this problem in 4.4 could be reverted, or if the change that fixed it in 4.5 could be backported.

Reports of this same bug outside Debian, with several different backtraces:
http://jira.atheme.org/browse/AUDPLUG-241
https://lists.fedoraproject.org/pipermail/devel/2010-July/139490.html
https://bugs.launchpad.net/ubuntu/+source/audacious-plugins/+bug/640732
http://jira.atheme.org/browse/AUD-264

(In the Ubuntu report, the claim is made that linking the plugins with g++ and not gcc is a workaround.  I do not know the grounds for this claim; however, at least in upstream Audacious source, C++ plugins have always been linked with g++, and the problem still occurs.)

My backtrace (the crash occurred, after enabling the ProjectM visualization plugin and closing Audacious, on the next startup):
Program received signal SIGSEGV, Segmentation fault.
0x00007fffeb5b2079 in std::uncaught_exception() () from /usr/lib/libstdc++.so.6
(gdb) bt
#0  0x00007fffeb5b2079 in std::uncaught_exception() ()
   from /usr/lib/libstdc++.so.6
#1  0x00007fffeb58534d in std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, long) () from /usr/lib/libstdc++.so.6
#2  0x00007fffeb81cb9f in projectM::initPresetTools(int, int) ()
   from /usr/lib/libprojectM.so.2
#3  0x00007fffeb81d46d in projectM::projectM_init(int, int, int, int, int, int)
    () from /usr/lib/libprojectM.so.2
#4  0x00007fffeb81dfcf in projectM::readConfig(std::string const&) ()
   from /usr/lib/libprojectM.so.2
#5  0x00007fffeb81e563 in projectM::projectM(std::string, int) ()
   from /usr/lib/libprojectM.so.2
#6  0x00007fffeca0795c in _gtk_projectm_realize_impl (widget=0x83c9f0, 
    data="" at gtk_projectm_impl.cxx:140
#7  0x00007ffff484947e in IA__g_closure_invoke (closure=0x8761a0, 
    return_value=0x0, n_param_values=1, param_values=0x72b180, 
    invocation_hint=0x7fffffffe020)
    at /scratch/build-area/glib2.0-2.24.2/gobject/gclosure.c:767

-- John Lindgren

-- System Information:
Debian Release: squeeze/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.32-5-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages g++-4.4 depends on:
ii  gcc-4.4                   4.4.5-8        The GNU C compiler
ii  gcc-4.4-base              4.4.5-8        The GNU Compiler Collection (base 
ii  libc6                     2.11.2-7       Embedded GNU C Library: Shared lib
ii  libgmp3c2                 2:4.3.2+dfsg-1 Multiprecision arithmetic library
ii  libmpfr4                  3.0.0-2        multiple precision floating-point 
ii  libstdc++6-4.4-dev        4.4.5-8        The GNU Standard C++ Library v3 (d

g++-4.4 recommends no packages.

Versions of packages g++-4.4 suggests:
pn  g++-4.4-multilib              <none>     (no description available)
pn  gcc-4.4-doc                   <none>     (no description available)
pn  libstdc++6-4.4-dbg            <none>     (no description available)

-- no debconf information

Reply to: