Description of problem: kVIRC (written against Qt4) crashes suddenly, but always in QFont::resolve Version-Release number of selected component (if applicable): muelli@bigbox /dev/shm $ yum info qt Loaded plugins: priorities, refresh-packagekit adobe | 951 B 00:00 fedora | 2.8 kB 00:00 fedora-debuginfo | 2.2 kB 00:00 freshrpms | 2.0 kB 00:00 kde-redhat | 2.1 kB 00:00 kde-redhat-all | 1.9 kB 00:00 livna | 2.4 kB 00:00 planetccrma | 1.9 kB 00:00 planetcore | 1.9 kB 00:00 rpmfusion-free | 2.7 kB 00:00 rpmfusion-free-updates | 2.8 kB 00:00 rpmfusion-nonfree | 2.7 kB 00:00 rpmfusion-nonfree-updates | 2.8 kB 00:00 updates | 3.4 kB 00:00 161 packages excluded due to repository priority protections Installed Packages Name : qt Arch : x86_64 Epoch : 1 Version : 4.5.2 Release : 3.fc10 Size : 11 M Repo : installed From repo : updates Summary : Qt toolkit URL : http://www.qtsoftware.com/ License : LGPLv2 with exceptions or GPLv3 with exceptions Description: Qt is a software toolkit for developing applications. : : This package contains base tools, like string, xml, and network : handling. Available Packages Name : qt Arch : i386 Epoch : 1 Version : 4.5.2 Release : 3.fc10 Size : 3.8 M Repo : updates Summary : Qt toolkit URL : http://www.qtsoftware.com/ License : LGPLv2 with exceptions or GPLv3 with exceptions Description: Qt is a software toolkit for developing applications. : : This package contains base tools, like string, xml, and network : handling. muelli@bigbox /dev/shm $ How reproducible: Just start kVIRC and wait. Steps to Reproduce: 1. Compile kVIRC (r3496 from https://svn.kvirc.de/svn/trunk/kvirc) 2. run 3. wait Actual results: Crashes in QFont::resolve Expected results: I expected Qt not to crash whatsoever Additional info: [Thread debugging using libthread_db enabled] [New Thread 0x7fa21d1a4810 (LWP 13466)] 0x0000003fb500ec2f in __libc_waitpid (pid=13752, stat_loc=0x7fff07fb30e0, options=0) at ../sysdeps/unix/sysv/linux/waitpid.c:41 41 int result = INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL); #0 0x0000003fb500ec2f in __libc_waitpid (pid=13752, stat_loc=0x7fff07fb30e0, options=0) at ../sysdeps/unix/sysv/linux/waitpid.c:41 #1 0x0000003d2ae6f169 in IA__g_spawn_sync ( working_directory=<value optimized out>, argv=<value optimized out>, envp=<value optimized out>, flags=<value optimized out>, child_setup=<value optimized out>, user_data=<value optimized out>, standard_output=0x0, standard_error=0x0, exit_status=0x0, error=0x7fff07fb3218) at gspawn.c:382 #2 0x0000003d2ae6f478 in IA__g_spawn_command_line_sync ( command_line=<value optimized out>, standard_output=0x0, standard_error=0x0, exit_status=0x0, error=0x7fff07fb3218) at gspawn.c:694 #3 0x00007fa217a2f6ae in run_bug_buddy () at gnome-breakpad.cc:223 #4 check_if_gdb () at gnome-breakpad.cc:292 #5 0x00007fa217a2f759 in bugbuddy_segv_handle (signum=13752) at gnome-breakpad.cc:84 #6 <signal handler called> #7 QBasicAtomicInt::ref () at ../../src/corelib/arch/qatomic_x86_64.h:121 #8 QFont (this=0x7fff07fb3810, font=@0x9683a8) at text/qfont.cpp:815 #9 0x00000037f35688e3 in QFont::resolve (this=0x9683a8, other=@0x7fff07fb3870) at text/qfont.cpp:1714 #10 0x00000037f33e196d in QWidget::setFont (this=0x359ef40, font=@0x9683a8) at kernel/qwidget.cpp:4371 #11 0x00007fa20c9acfb6 in KviNotifierWindow::updateGui (this=0x359ef40) at /home/muelli/svn/kvirc/src/modules/notifier/notifierwindow.cpp:167 #12 0x00007fa20c9adc0b in KviNotifierWindow (this=0x359ef40) at /home/muelli/svn/kvirc/src/modules/notifier/notifierwindow.cpp:141 #13 0x00007fa20c9a7f5a in notifier_module_ctrl ( operation=0x6d8877 "notifier::message", param=0x7fff07fb3b00) at /home/muelli/svn/kvirc/src/modules/notifier/libkvinotifier.cpp:303 #14 0x00000000006441fe in KviApp::notifierMessage () #15 0x00000000004cbd5d in KviConsole::outputPrivmsg () #16 0x000000000056c23b in KviServerParser::parseLiteralPrivmsg () #17 0x000000000057f522 in KviServerParser::parseMessage () #18 0x000000000067a3ca in KviIrcLink::processData () #19 0x000000000067c56e in KviIrcSocket::readData () #20 0x00000000006b611e in KviIrcSocket::qt_metacall () #21 0x00000037f1d58f52 in QMetaObject::activate (sender=0x1eea140, from_signal_index=<value optimized out>, to_signal_index=4, argv=0x359f040) at kernel/qobject.cpp:3113 #22 0x00000037f1d90c4e in QSocketNotifier::activated (this=0x7fff07fb3810, _t1=21) at .moc/release-shared/moc_qsocketnotifier.cpp:83 #23 0x00000037f1d5e573 in QSocketNotifier::event (this=0x1eea140, e=0x7fff07fb4ba0) at kernel/qsocketnotifier.cpp:316 #24 0x00000037f339008d in QApplicationPrivate::notify_helper (this=0x1c96280, receiver=0x1eea140, e=0x7fff07fb4ba0) at kernel/qapplication.cpp:4056 #25 0x00000037f33982ca in QApplication::notify (this=0x1c961e0, receiver=0x1eea140, e=0x7fff07fb4ba0) at kernel/qapplication.cpp:4021 #26 0x00000037f1d4407c in QCoreApplication::notifyInternal (this=0x1c961e0, receiver=0x1eea140, event=0x7fff07fb4ba0) at kernel/qcoreapplication.cpp:610 #27 0x00000037f1d6d809 in QCoreApplication::sendEvent () at kernel/qcoreapplication.h:213 #28 socketNotifierSourceDispatch (source=0x1c9c4e0) at kernel/qeventdispatcher_glib.cpp:110 #29 0x0000003d2ae377bb in g_main_dispatch () at gmain.c:2144 #30 IA__g_main_context_dispatch (context=0x1c9b920) at gmain.c:2697 #31 0x0000003d2ae3af8d in g_main_context_iterate (context=0x1c9b920, block=1, dispatch=1, self=<value optimized out>) at gmain.c:2778 #32 0x0000003d2ae3b14b in IA__g_main_context_iteration (context=0x1c9b920, may_block=1) at gmain.c:2841 #33 0x00000037f1d6d58f in QEventDispatcherGlib::processEvents (this=0x1c98f70, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:327 #34 0x00000037f34274cf in QGuiEventDispatcherGlib::processEvents ( this=0x7fff07fb3810, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:202 #35 0x00000037f1d42912 in QEventLoop::processEvents ( this=<value optimized out>, flags=) at kernel/qeventloop.cpp:149 #36 0x00000037f1d42ce4 in QEventLoop::exec (this=0x7fff07fb4e00, flags=) at kernel/qeventloop.cpp:201 #37 0x00000037f1d44fb4 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:888 #38 0x000000000068439d in main () Thread 1 (Thread 0x7fa21d1a4810 (LWP 13466)): #0 0x0000003fb500ec2f in __libc_waitpid (pid=13752, stat_loc=0x7fff07fb30e0, options=0) at ../sysdeps/unix/sysv/linux/waitpid.c:41 oldtype = 0 result = <value optimized out> #1 0x0000003d2ae6f169 in IA__g_spawn_sync ( working_directory=<value optimized out>, argv=<value optimized out>, envp=<value optimized out>, flags=<value optimized out>, child_setup=<value optimized out>, user_data=<value optimized out>, standard_output=0x0, standard_error=0x0, exit_status=0x0, error=0x7fff07fb3218) at gspawn.c:382 outpipe = -1 errpipe = -1 pid = 13752 fds = {__fds_bits = {53819744, 8, 16, 16, 56134944, 0, 16, 0, 56134968, 45318336, 56134944, 140733327290904, 3, 262712670422, 140733327290600, 140733327290712}} ret = <value optimized out> outstr = (GString *) 0x0 errstr = (GString *) 0x0 failed = 0 status = <value optimized out> __PRETTY_FUNCTION__ = "IA__g_spawn_sync" #2 0x0000003d2ae6f478 in IA__g_spawn_command_line_sync ( command_line=<value optimized out>, standard_output=0x0, standard_error=0x0, exit_status=0x0, error=0x7fff07fb3218) at gspawn.c:694 retval = 0 argv = (gchar **) 0x3588d20 __PRETTY_FUNCTION__ = "IA__g_spawn_command_line_sync" #3 0x00007fa217a2f6ae in run_bug_buddy () at gnome-breakpad.cc:223 res = <value optimized out> error = (GError *) 0x0 #4 check_if_gdb () at gnome-breakpad.cc:292 mypath = "/opt/kvirc/bin/kvirc4", '\0' <repeats 233 times> gdb = (gchar *) 0x3381a20 "/usr/bin/gdb" appname = (gchar *) 0x1cfdd70 "<unknown>" pid = 13466 #5 0x00007fa217a2f759 in bugbuddy_segv_handle (signum=13752) at gnome-breakpad.cc:84 in_segv = 1 #6 <signal handler called> No locals. #7 QBasicAtomicInt::ref () at ../../src/corelib/arch/qatomic_x86_64.h:121 ret = 112 'p' #8 QFont (this=0x7fff07fb3810, font=@0x9683a8) at text/qfont.cpp:815 No locals. #9 0x00000037f35688e3 in QFont::resolve (this=0x9683a8, other=@0x7fff07fb3870) at text/qfont.cpp:1714 font = {static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x37f3a0ca60 "QFont", data = 0x37f3a0cb20, extradata = 0x0}}, d = 0x6e28f7, resolve_mask = 3003180442} #10 0x00000037f33e196d in QWidget::setFont (this=0x359ef40, font=@0x9683a8) at kernel/qwidget.cpp:4371 d = (QWidgetPrivate * const) 0x359f040 naturalFont = {static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x37f3a0ca60 "QFont", data = 0x37f3a0cb20, extradata = 0x0}}, d = 0x1f0f8b0, resolve_mask = 0} resolvedFont = {static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x37f3a0ca60 "QFont", data = 0x37f3a0cb20, extradata = 0x0}}, d = 0x9682a0, resolve_mask = 1} #11 0x00007fa20c9acfb6 in KviNotifierWindow::updateGui (this=0x359ef40) at /home/muelli/svn/kvirc/src/modules/notifier/notifierwindow.cpp:167 pal = {static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x37f3a0b980 "QPalette", data = 0x37f3a0bac0, extradata = 0x0}}, d = 0x359ef40, current_group = 0, resolve_mask = 3496328} palette = {static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x37f3a0b980 "QPalette", data = 0x37f3a0bac0, extradata = 0x0}}, d = 0x1, current_group = 0, resolve_mask = 13219374} #12 0x00007fa20c9adc0b in KviNotifierWindow (this=0x359ef40) at /home/muelli/svn/kvirc/src/modules/notifier/notifierwindow.cpp:141 No locals. #13 0x00007fa20c9a7f5a in notifier_module_ctrl ( operation=0x6d8877 "notifier::message", param=0x7fff07fb3b00) at /home/muelli/svn/kvirc/src/modules/notifier/libkvinotifier.cpp:303 p = (NotifierMessageSupaDupaParameterStruct *) 0x7fff07fb3b00 #14 0x00000000006441fe in KviApp::notifierMessage () No symbol table info available. #15 0x00000000004cbd5d in KviConsole::outputPrivmsg () No symbol table info available. #16 0x000000000056c23b in KviServerParser::parseLiteralPrivmsg () No symbol table info available. #17 0x000000000057f522 in KviServerParser::parseMessage () No symbol table info available. #18 0x000000000067a3ca in KviIrcLink::processData () No symbol table info available. #19 0x000000000067c56e in KviIrcSocket::readData () No symbol table info available. #20 0x00000000006b611e in KviIrcSocket::qt_metacall () No symbol table info available. #21 0x00000037f1d58f52 in QMetaObject::activate (sender=0x1eea140, from_signal_index=<value optimized out>, to_signal_index=4, argv=0x359f040) at kernel/qobject.cpp:3113 method = 6 currentSender = {sender = 0x1eea140, signal = 4, ref = 1} previousSender = (QObjectPrivate::Sender *) 0x0 count = 1 signal = 4 empty_argv = {0x0} locker = {{mtx = 0x1c96428, val = 29975592}} currentThreadData = (QThreadData *) 0x1c963d0 connectionLists = (QObjectConnectionListVector *) 0x2c3f320 #22 0x00000037f1d90c4e in QSocketNotifier::activated (this=0x7fff07fb3810, _t1=21) at .moc/release-shared/moc_qsocketnotifier.cpp:83 _a = {0x0, 0x7fff07fb461c} #23 0x00000037f1d5e573 in QSocketNotifier::event (this=0x1eea140, e=0x7fff07fb4ba0) at kernel/qsocketnotifier.cpp:316 No locals. #24 0x00000037f339008d in QApplicationPrivate::notify_helper (this=0x1c96280, receiver=0x1eea140, e=0x7fff07fb4ba0) at kernel/qapplication.cpp:4056 consumed = <value optimized out> #25 0x00000037f33982ca in QApplication::notify (this=0x1c961e0, receiver=0x1eea140, e=0x7fff07fb4ba0) at kernel/qapplication.cpp:4021 res = true #26 0x00000037f1d4407c in QCoreApplication::notifyInternal (this=0x1c961e0, receiver=0x1eea140, event=0x7fff07fb4ba0) at kernel/qcoreapplication.cpp:610 result = false cbdata = {0x1eea140, 0x7fff07fb4ba0, 0x7fff07fb4b6f} threadData = (QThreadData *) 0x1c963d0 returnValue = <value optimized out> #27 0x00000037f1d6d809 in QCoreApplication::sendEvent () at kernel/qcoreapplication.h:213 No locals. #28 socketNotifierSourceDispatch (source=0x1c9c4e0) at kernel/qeventdispatcher_glib.cpp:110 p = (GPollFDWithQSocketNotifier *) 0x359f040 i = <value optimized out> event = {_vptr.QEvent = 0x9635f0, d = 0x0, t = 50, posted = 0, spont = 0, m_accept = 1, reserved = 1377} #29 0x0000003d2ae377bb in g_main_dispatch () at gmain.c:2144 No locals. #30 IA__g_main_context_dispatch (context=0x1c9b920) at gmain.c:2697 No locals. #31 0x0000003d2ae3af8d in g_main_context_iterate (context=0x1c9b920, block=1, dispatch=1, self=<value optimized out>) at gmain.c:2778 max_priority = 2147483647 timeout = 652 some_ready = 1 nfds = 13 allocated_nfds = <value optimized out> fds = (GPollFD *) 0x22d37e0 __PRETTY_FUNCTION__ = "g_main_context_iterate" #32 0x0000003d2ae3b14b in IA__g_main_context_iteration (context=0x1c9b920, may_block=1) at gmain.c:2841 retval = <value optimized out> #33 0x00000037f1d6d58f in QEventDispatcherGlib::processEvents (this=0x1c98f70, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:327 d = (QEventDispatcherGlibPrivate * const) 0x1c98f90 canWait = true result = <value optimized out> #34 0x00000037f34274cf in QGuiEventDispatcherGlib::processEvents ( this=0x7fff07fb3810, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:202 d = (QGuiEventDispatcherGlibPrivate * const) 0x1c98f90 returnValue = 247 #35 0x00000037f1d42912 in QEventLoop::processEvents ( this=<value optimized out>, flags=) at kernel/qeventloop.cpp:149 d = (QEventLoopPrivate * const) 0x206cd20 #36 0x00000037f1d42ce4 in QEventLoop::exec (this=0x7fff07fb4e00, flags=) at kernel/qeventloop.cpp:201 d = (QEventLoopPrivate * const) 0x206cd20 app = (class QCoreApplication *) 0x1c961e0 #37 0x00000037f1d44fb4 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:888 threadData = (QThreadData *) 0x1c963d0 eventLoop = {<QObject> = {_vptr.QObject = 0x37f2036030, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x37f1dda440 "QObject", data = 0x37f1dda4e0, extradata = 0x37f202f0c0}}, d_ptr = 0x206cd20, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x37f1de3cc0 "Qt", data = 0x37f1de7040, extradata = 0x0}}}, static staticMetaObject = {d = { superdata = 0x963b00, stringdata = 0x37f1dec140 "QEventLoop", data = 0x37f1dec160, extradata = 0x0}}} returnCode = -1 #38 0x000000000068439d in main () No symbol table info available. The program is running. Quit anyway (and detach it)? (y or n) [answered Y; input not from terminal]
Are you using the same Qt to build against and to run? If you're unsure, the following commands might help to debug this: rpm -q qt-devel ldd /opt/kvirc/bin/kvirc4 ld --verbose -lQtGui -lQtCore ; rm -f a.out A log from Valgrind would probably also be helpful. Something appears to corrupt the QFont's reference count, so copying the font crashes. Or it may be a use-after-free. Both are classes of bugs Valgrind should help figuring out. So can you please run: valgrind /opt/kvirc/bin/kvirc4 2>kvirc4-valgrind.log and attach the resulting kvirc4-valgrind.log file?
I don't remember having Qt installed myself. muelli@bigbox ~/svn/kvirc $ rpm -q qt-devel qt-devel-4.5.2-3.fc10.x86_64 muelli@bigbox ~/svn/kvirc $ ldd /opt/kvirc/bin/kvirc4 linux-vdso.so.1 => (0x00007fffa44fe000) libperl.so => not found libresolv.so.2 => /lib64/libresolv.so.2 (0x0000003fbee00000) libnsl.so.1 => /lib64/libnsl.so.1 (0x0000003fbf600000) libdl.so.2 => /lib64/libdl.so.2 (0x0000003fb4c00000) libcrypt.so.1 => /lib64/libcrypt.so.1 (0x0000003fc3600000) libutil.so.1 => /lib64/libutil.so.1 (0x0000003fb3400000) libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003fb5000000) libm.so.6 => /lib64/libm.so.6 (0x0000003fb4800000) libpython2.5.so.1.0 => /usr/lib64/libpython2.5.so.1.0 (0x0000003fcd600000) libkvilib4.so.4 => not found libz.so.1 => /lib64/libz.so.1 (0x0000003fb5400000) libQtWebKit.so.4 => /usr/lib64/libQtWebKit.so.4 (0x00000037f7600000) libQtGui.so.4 => /usr/lib64/libQtGui.so.4 (0x00000037f3200000) libpng12.so.0 => /usr/lib64/libpng12.so.0 (0x00000034c6800000) libSM.so.6 => /usr/lib64/libSM.so.6 (0x0000003e23600000) libICE.so.6 => /usr/lib64/libICE.so.6 (0x0000003fbfe00000) libXi.so.6 => /usr/lib64/libXi.so.6 (0x000000333b400000) libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x000000333ac00000) libXrandr.so.2 => /usr/lib64/libXrandr.so.2 (0x000000333c000000) libXcursor.so.1 => /usr/lib64/libXcursor.so.1 (0x000000333bc00000) libXinerama.so.1 => /usr/lib64/libXinerama.so.1 (0x000000333b000000) libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x000000333b800000) libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00000030a6a00000) libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x00000030a6e00000) libXext.so.6 => /usr/lib64/libXext.so.6 (0x000000333a800000) libX11.so.6 => /usr/lib64/libX11.so.6 (0x0000003339c00000) libQtDBus.so.4 => /usr/lib64/libQtDBus.so.4 (0x00000037f2e00000) libQtXml.so.4 => /usr/lib64/libQtXml.so.4 (0x00000037f2200000) libQtSql.so.4 => /usr/lib64/libQtSql.so.4 (0x00000037f5a00000) libQtNetwork.so.4 => /usr/lib64/libQtNetwork.so.4 (0x00000037f2a00000) libssl.so.7 => /lib64/libssl.so.7 (0x0000003e24200000) libQtCore.so.4 => /usr/lib64/libQtCore.so.4 (0x00000037f1c00000) libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x0000003d2b600000) libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x0000003d2ae00000) librt.so.1 => /lib64/librt.so.1 (0x0000003fb6000000) libesd.so.0 => /usr/lib64/libesd.so.0 (0x0000003691800000) libaudiofile.so.0 => /usr/lib64/libaudiofile.so.0 (0x0000003fc3a00000) libcrypto.so.7 => /lib64/libcrypto.so.7 (0x00000034c8200000) libc.so.6 => /lib64/libc.so.6 (0x0000003fb4400000) libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003fbfa00000) libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003fbe600000) /lib64/ld-linux-x86-64.so.2 (0x0000003fb3000000) libsqlite3.so.0 => /usr/lib64/libsqlite3.so.0 (0x0000003251400000) libphonon.so.4 => /usr/lib64/libphonon.so.4 (0x00000037f6600000) libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x000000333de00000) libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x0000003d2b200000) libuuid.so.1 => /lib64/libuuid.so.1 (0x0000003e22e00000) libexpat.so.1 => /lib64/libexpat.so.1 (0x0000003fb8000000) libXau.so.6 => /usr/lib64/libXau.so.6 (0x0000003fb6c00000) libxcb-xlib.so.0 => /usr/lib64/libxcb-xlib.so.0 (0x000000333a000000) libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x000000333a400000) libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x0000003e23a00000) libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x0000003e23e00000) libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003e23200000) libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x0000003508800000) libasound.so.2 => /lib64/libasound.so.2 (0x0000003691400000) libcap.so.2 => /lib64/libcap.so.2 (0x0000003fbd600000) libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x0000003fb7400000) libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x0000003508400000) libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x0000003fc0a00000) libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003840600000) muelli@bigbox ~/svn/kvirc $ ld --verbose -lQtGui -lQtCore ; rm -f a.out GNU ld version 2.18.50.0.9-8.fc10 20080822 Supported emulations: elf_x86_64 elf_i386 i386linux using internal linker script: ================================================== /* Script for -z combreloc: combine and sort reloc sections */ OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") OUTPUT_ARCH(i386:x86-64) ENTRY(_start) SEARCH_DIR("/usr/x86_64-redhat-linux/lib64"); SEARCH_DIR("/usr/local/lib64"); SEARCH_DIR("/lib64"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/x86_64-redhat-linux/lib"); SEARCH_DIR("/usr/lib64"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = 0x400000); . = 0x400000 + SIZEOF_HEADERS; .interp : { *(.interp) } .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } .gnu.version : { *(.gnu.version) } .gnu.version_d : { *(.gnu.version_d) } .gnu.version_r : { *(.gnu.version_r) } .rel.dyn : { *(.rel.init) *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) *(.rel.fini) *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*) *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) *(.rel.ctors) *(.rel.dtors) *(.rel.got) *(.rel.sharable_data .rel.sharable_data.* .rel.gnu.linkonce.shrd.*) *(.rel.sharable_bss .rel.sharable_bss.* .rel.gnu.linkonce.shrb.*) *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) *(.rel.ldata .rel.ldata.* .rel.gnu.linkonce.l.*) *(.rel.lbss .rel.lbss.* .rel.gnu.linkonce.lb.*) *(.rel.lrodata .rel.lrodata.* .rel.gnu.linkonce.lr.*) } .rela.dyn : { *(.rela.init) *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) *(.rela.fini) *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) *(.rela.ctors) *(.rela.dtors) *(.rela.got) *(.rela.sharable_data .rela.sharable_data.* .rela.gnu.linkonce.shrd.*) *(.rela.sharable_bss .rela.sharable_bss.* .rela.gnu.linkonce.shrb.*) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*) *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*) *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*) } .rel.plt : { *(.rel.plt) } .rela.plt : { *(.rela.plt) } .init : { KEEP (*(.init)) } =0x90909090 .plt : { *(.plt) } .text : { *(.text .stub .text.* .gnu.linkonce.t.*) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) } =0x90909090 .fini : { KEEP (*(.fini)) } =0x90909090 PROVIDE (__etext = .); PROVIDE (_etext = .); PROVIDE (etext = .); .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } .rodata1 : { *(.rodata1) } .eh_frame_hdr : { *(.eh_frame_hdr) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); /* Exception handling */ .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } /* Thread Local Storage sections */ .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT(.init_array.*))) KEEP (*(.init_array)) PROVIDE_HIDDEN (__init_array_end = .); } .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(.fini_array)) KEEP (*(SORT(.fini_array.*))) PROVIDE_HIDDEN (__fini_array_end = .); } .ctors : { /* gcc uses crtbegin.o to find the start of the constructors, so we make sure it is first. Because this is a wildcard, it doesn't matter if the user does not actually link against crtbegin.o; the linker won't look for a file to match a wildcard. The wildcard also means that it doesn't matter which directory crtbegin.o is in. */ KEEP (*crtbegin.o(.ctors)) KEEP (*crtbegin?.o(.ctors)) /* We don't want to include the .ctor section from the crtend.o file until after the sorted ctors. The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors)) } .dtors : { KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors)) } .jcr : { KEEP (*(.jcr)) } .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro* .gnu.linkonce.d.rel.ro.*) } .dynamic : { *(.dynamic) } .got : { *(.got) } . = DATA_SEGMENT_RELRO_END (24, .); .got.plt : { *(.got.plt) } .data : { *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } /* Sharable data sections. */ .sharable_data : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_data_start = .); *(.sharable_data .sharable_data.* .gnu.linkonce.shrd.*) /* Align here to ensure that the sharable data section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_data_end = .); } _edata = .; PROVIDE (edata = .); __bss_start = .; .bss : { *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON) /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. FIXME: Why do we need it? When there is no .bss section, we don't pad the .data section. */ . = ALIGN(. != 0 ? 64 / 8 : 1); } .lbss : { *(.dynlbss) *(.lbss .lbss.* .gnu.linkonce.lb.*) *(LARGE_COMMON) } /* Sharable bss sections */ .sharable_bss : ALIGN(CONSTANT (MAXPAGESIZE)) { PROVIDE_HIDDEN (__sharable_bss_start = .); *(.dynsharablebss) *(.sharable_bss .sharable_bss.* .gnu.linkonce.shrb.*) *(SHARABLE_COMMON) /* Align here to ensure that the sharable bss section ends at the page boundary. */ . = ALIGN(. != 0 ? CONSTANT (MAXPAGESIZE) : 1); PROVIDE_HIDDEN (__sharable_bss_end = .); } . = ALIGN(64 / 8); .lrodata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.lrodata .lrodata.* .gnu.linkonce.lr.*) } .ldata ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)) : { *(.ldata .ldata.* .gnu.linkonce.l.*) . = ALIGN(. != 0 ? 64 / 8 : 1); } . = ALIGN(64 / 8); _end = .; PROVIDE (end = .); . = DATA_SEGMENT_END (.); /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } .stab.excl 0 : { *(.stab.excl) } .stab.exclstr 0 : { *(.stab.exclstr) } .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } /* DWARF 3 */ .debug_pubtypes 0 : { *(.debug_pubtypes) } .debug_ranges 0 : { *(.debug_ranges) } .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) } } ================================================== attempt to open /usr/x86_64-redhat-linux/lib64/libQtGui.so failed attempt to open /usr/x86_64-redhat-linux/lib64/libQtGui.a failed attempt to open /usr/local/lib64/libQtGui.so failed attempt to open /usr/local/lib64/libQtGui.a failed attempt to open /lib64/libQtGui.so failed attempt to open /lib64/libQtGui.a failed attempt to open /usr/lib64/libQtGui.so succeeded -lQtGui (/usr/lib64/libQtGui.so) attempt to open /usr/x86_64-redhat-linux/lib64/libQtCore.so failed attempt to open /usr/x86_64-redhat-linux/lib64/libQtCore.a failed attempt to open /usr/local/lib64/libQtCore.so failed attempt to open /usr/local/lib64/libQtCore.a failed attempt to open /lib64/libQtCore.so failed attempt to open /lib64/libQtCore.a failed attempt to open /usr/lib64/libQtCore.so succeeded -lQtCore (/usr/lib64/libQtCore.so) libpng12.so.0 needed by /usr/lib64/libQtGui.so found libpng12.so.0 at /usr/lib64/libpng12.so.0 libfreetype.so.6 needed by /usr/lib64/libQtGui.so found libfreetype.so.6 at /usr/lib64/libfreetype.so.6 libgobject-2.0.so.0 needed by /usr/lib64/libQtGui.so found libgobject-2.0.so.0 at /lib64/libgobject-2.0.so.0 libSM.so.6 needed by /usr/lib64/libQtGui.so found libSM.so.6 at /usr/lib64/libSM.so.6 libICE.so.6 needed by /usr/lib64/libQtGui.so found libICE.so.6 at /usr/lib64/libICE.so.6 libz.so.1 needed by /usr/lib64/libQtGui.so found libz.so.1 at /lib64/libz.so.1 libgthread-2.0.so.0 needed by /usr/lib64/libQtGui.so found libgthread-2.0.so.0 at /lib64/libgthread-2.0.so.0 librt.so.1 needed by /usr/lib64/libQtGui.so found librt.so.1 at /lib64/librt.so.1 libglib-2.0.so.0 needed by /usr/lib64/libQtGui.so found libglib-2.0.so.0 at /lib64/libglib-2.0.so.0 libpthread.so.0 needed by /usr/lib64/libQtGui.so found libpthread.so.0 at /lib64/libpthread.so.0 libXi.so.6 needed by /usr/lib64/libQtGui.so found libXi.so.6 at /usr/lib64/libXi.so.6 libXrender.so.1 needed by /usr/lib64/libQtGui.so found libXrender.so.1 at /usr/lib64/libXrender.so.1 libXrandr.so.2 needed by /usr/lib64/libQtGui.so found libXrandr.so.2 at /usr/lib64/libXrandr.so.2 libXfixes.so.3 needed by /usr/lib64/libQtGui.so found libXfixes.so.3 at /usr/lib64/libXfixes.so.3 libXcursor.so.1 needed by /usr/lib64/libQtGui.so found libXcursor.so.1 at /usr/lib64/libXcursor.so.1 libXinerama.so.1 needed by /usr/lib64/libQtGui.so found libXinerama.so.1 at /usr/lib64/libXinerama.so.1 libfontconfig.so.1 needed by /usr/lib64/libQtGui.so found libfontconfig.so.1 at /usr/lib64/libfontconfig.so.1 libXext.so.6 needed by /usr/lib64/libQtGui.so found libXext.so.6 at /usr/lib64/libXext.so.6 libX11.so.6 needed by /usr/lib64/libQtGui.so found libX11.so.6 at /usr/lib64/libX11.so.6 libdl.so.2 needed by /usr/lib64/libQtGui.so found libdl.so.2 at /lib64/libdl.so.2 libstdc++.so.6 needed by /usr/lib64/libQtGui.so found libstdc++.so.6 at /usr/lib64/libstdc++.so.6 libm.so.6 needed by /usr/lib64/libQtGui.so found libm.so.6 at /lib64/libm.so.6 libgcc_s.so.1 needed by /usr/lib64/libQtGui.so found libgcc_s.so.1 at /lib64/libgcc_s.so.1 libc.so.6 needed by /usr/lib64/libQtGui.so found libc.so.6 at /lib64/libc.so.6 libuuid.so.1 needed by /usr/lib64/libSM.so.6 found libuuid.so.1 at /lib64/libuuid.so.1 ld-linux-x86-64.so.2 needed by /lib64/librt.so.1 found ld-linux-x86-64.so.2 at /lib64/ld-linux-x86-64.so.2 libexpat.so.1 needed by /usr/lib64/libfontconfig.so.1 found libexpat.so.1 at /lib64/libexpat.so.1 libXau.so.6 needed by /usr/lib64/libXext.so.6 found libXau.so.6 at /usr/lib64/libXau.so.6 libxcb-xlib.so.0 needed by /usr/lib64/libX11.so.6 found libxcb-xlib.so.0 at /usr/lib64/libxcb-xlib.so.0 libxcb.so.1 needed by /usr/lib64/libX11.so.6 found libxcb.so.1 at /usr/lib64/libxcb.so.1 libXdmcp.so.6 needed by /usr/lib64/libxcb.so.1 found libXdmcp.so.6 at /usr/lib64/libXdmcp.so.6 ld: warning: cannot find entry symbol _start; not setting start address muelli@bigbox ~/svn/kvirc $ muelli@bigbox ~/svn/kvirc $ valgrind /opt/kvirc/bin/kvirc4 2>kvirc4-valgrind.log Segmentation fault muelli@bigbox ~/svn/kvirc $ some excerpts from logfile: ==943== Syscall param writev(vector[...]) points to uninitialised byte(s) ==943== at 0x3FB44DE4F3: writev (writev.c:46) ==943== by 0x333A408BB0: _xcb_conn_wait (xcb_conn.c:170) ==943== by 0x333A409178: _xcb_out_send (xcb_out.c:279) ==943== by 0x333A409653: xcb_send_request (xcb_out.c:55) ==943== by 0x4F6E116: _XPutXCBBuffer (xcb_lock.c:148) ==943== by 0x4F6E43C: _XCBUnlockDisplay (xcb_lock.c:31) ==943== by 0x333AC045E1: XRenderAddGlyphs (Glyph.c:111) ==943== by 0x37F362F5A3: QFontEngineX11FT::uploadGlyphToServer(QFontEngineFT: :QGlyphSet*, unsigned, QFontEngineFT::Glyph*, _XGlyphInfo*, int) const (qfonteng ine_x11.cpp:1167) ==943== by 0x37F363A20F: QFontEngineFT::loadGlyph(QFontEngineFT::QGlyphSet*, unsigned, QFontEngineFT::GlyphFormat, bool) const (qfontengine_ft.cpp:1141) ==943== by 0x37F363B5A4: QFontEngineFT::recalcAdvances(QGlyphLayout*, QFlags< QTextEngine::ShaperFlag>) const (qfontengine_ft_p.h:247) ==943== by 0x37F36364D7: QFontEngineFT::stringToCMap(QChar const*, int, QGlyp hLayout*, int*, QFlags<QTextEngine::ShaperFlag>) const (qfontengine_ft.cpp:1610) ==943== by 0x37F3573083: QFontEngineMulti::stringToCMap(QChar const*, int, QG lyphLayout*, int*, QFlags<QTextEngine::ShaperFlag>) const (qfontengine.cpp:1334) ==943== Address 0x526179d is 7,765 bytes inside a block of size 8,680 alloc'd ==943== at 0x4A05174: calloc (vg_replace_malloc.c:397) ==943== by 0x333A408E2E: xcb_connect_to_fd (xcb_conn.c:224) ==943== by 0x333A40B7F6: xcb_connect (xcb_util.c:332) ==943== by 0x4F6E731: _XConnectXCB (xcb_disp.c:87) ==943== by 0x4F5639C: XOpenDisplay (OpenDis.c:168) ==943== by 0x6840DE: main (in /opt/kvirc/bin/kvirc4) ==943== ==943== Invalid read of size 1 ==943== at 0xF357BDA: KviIrcView::haveUnreadedHighlightedMessages() (kvi_ircv iew.h:150) ==943== by 0xF352250: KviTrayIcon::grabActivityInfo() (libkvitrayicon.cpp:464 ) [...] ==943== ERROR SUMMARY: 9045 errors from 33 contexts (suppressed: 4 from 1) ==943== malloc/free: in use at exit: 24,427,666 bytes in 179,761 blocks. ==943== malloc/free: 2,553,601 allocs, 2,373,840 frees, 680,307,389 bytes alloca ted. ==943== For counts of detected errors, rerun with: -v ==943== searching for pointers to 179,761 not-freed blocks. ==943== checked 23,399,520 bytes. ==943== ==943== LEAK SUMMARY: ==943== definitely lost: 197,826 bytes in 4,580 blocks. ==943== possibly lost: 195,571 bytes in 695 blocks. ==943== still reachable: 24,034,269 bytes in 174,486 blocks. ==943== suppressed: 0 bytes in 0 blocks. I'm attaching the full log. I made it crash by clicking my own name in a channel widget...
Created attachment 360851 [details] Valgrind log
Created attachment 360852 [details] valgrind -v --tool=memcheck --leak-check=full --num-callers=40 --log-file=valgrind.log /opt/kvirc/bin/kvirc4 muelli@bigbox ~/svn/kvirc $ valgrind -v --tool=memcheck --leak-check=full --num-callers=40 --log-file=valgrind.log /opt/kvirc/bin/kvirc4 X Error: BadMatch (invalid parameter attributes) 8 Major opcode: 2 (X_ChangeWindowAttributes) Resource id: 0x86005a9 Segmentation fault muelli@bigbox ~/svn/kvirc $ Again, it didn't crash itself (I probably didn't wait long enough), and I provoked it by clicking my nick in a channel widget.
So your Qt is consistently 4.5.2, no surprises there. The Valgrind log shows a lot of invalid reads/writes in kvirc code and I'm fairly sure the corrupt QFont is also coming from those. I'm going to close this as not a Fedora/Qt bug, please report this (with the full Valgrind log) to kvirc upstream.
Thank you Kevin for your quick support! I have opened a ticket here: https://svn.kvirc.de/kvirc/ticket/565