After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 705303 - profiler_try_realloc in glib_mem_profiler_table causes realloc() invalid pointer errors
profiler_try_realloc in glib_mem_profiler_table causes realloc() invalid poin...
Status: RESOLVED DUPLICATE of bug 701694
Product: glib
Classification: Platform
Component: general
unspecified
Other Linux
: Normal normal
: ---
Assigned To: gtkdev
gtkdev
: 706599 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2013-08-01 16:25 UTC by Philip Withnall
Modified: 2013-11-15 11:27 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Philip Withnall 2013-08-01 16:25:04 UTC
If I run this program:
	https://git.gnome.org/browse/libgdata/log/gdata/tests/memory.c
which has the key line:
	g_mem_set_vtable (glib_mem_profiler_table);
I get the following crash:

*** Error in `/opt/gnome3/source/libgdata/gdata/tests/.libs/lt-memory': realloc(): invalid pointer: 0x0000000000616a50 ***
======= Backtrace: =========
/lib64/libc.so.6[0x3723a7bc17]
/lib64/libc.so.6(realloc+0x31d)[0x3723a8081d]
/opt/gnome3/build/lib64/libglib-2.0.so.0(+0x5bd8e)[0x7ffff60a4d8e]
/opt/gnome3/build/lib64/libglib-2.0.so.0(+0x5be3a)[0x7ffff60a4e3a]
/opt/gnome3/build/lib64/libglib-2.0.so.0(g_realloc+0x2e)[0x7ffff60a3f0b]
/opt/gnome3/build/lib64/libglib-2.0.so.0(g_realloc_n+0x80)[0x7ffff60a4238]
/opt/gnome3/build/lib64/libgobject-2.0.so.0(+0x30207)[0x7ffff63c9207]
/opt/gnome3/build/lib64/libgobject-2.0.so.0(+0x304dc)[0x7ffff63c94dc]
/opt/gnome3/build/lib64/libgobject-2.0.so.0(g_type_register_static+0x1af)[0x7ffff63cea67]
/opt/gnome3/build/lib64/libgobject-2.0.so.0(g_type_register_static_simple+0xd9)[0x7ffff63ce8b6]
/home/philip/Development/libgdata/gdata/.libs/libgdata.so.13(gdata_batchable_get_type+0x68)[0x7ffff7cad180]
/home/philip/Development/libgdata/gdata/.libs/libgdata.so.13(gdata_calendar_service_get_type+0x124)[0x7ffff7cf64b3]
/opt/gnome3/source/libgdata/gdata/tests/.libs/lt-memory[0x4052a5]
/opt/gnome3/source/libgdata/gdata/tests/.libs/lt-memory[0x40549b]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x3723a21b75]
/opt/gnome3/source/libgdata/gdata/tests/.libs/lt-memory[0x4051c9]
======= Memory map: ========
00400000-00410000 r-xp 00000000 fd:01 5134294                            /opt/gnome3/source/libgdata/gdata/tests/.libs/lt-memory
0060f000-00610000 r--p 0000f000 fd:01 5134294                            /opt/gnome3/source/libgdata/gdata/tests/.libs/lt-memory
00610000-00611000 rw-p 00010000 fd:01 5134294                            /opt/gnome3/source/libgdata/gdata/tests/.libs/lt-memory
00611000-00632000 rw-p 00000000 00:00 0                                  [heap]
31b1c00000-31b1c76000 r-xp 00000000 fd:01 4072914                        /usr/lib64/libgcrypt.so.11.8.2
31b1c76000-31b1e75000 ---p 00076000 fd:01 4072914                        /usr/lib64/libgcrypt.so.11.8.2
31b1e75000-31b1e76000 r--p 00075000 fd:01 4072914                        /usr/lib64/libgcrypt.so.11.8.2
31b1e76000-31b1e79000 rw-p 00076000 fd:01 4072914                        /usr/lib64/libgcrypt.so.11.8.2
31b2000000-31b2135000 r-xp 00000000 fd:01 4071571                        /usr/lib64/libnss3.so
31b2135000-31b2335000 ---p 00135000 fd:01 4071571                        /usr/lib64/libnss3.so
31b2335000-31b2339000 r--p 00135000 fd:01 4071571                        /usr/lib64/libnss3.so
31b2339000-31b233c000 rw-p 00139000 fd:01 4071571                        /usr/lib64/libnss3.so
31b233c000-31b233d000 rw-p 00000000 00:00 0 
31b2400000-31b2439000 r-xp 00000000 fd:01 4071600                        /usr/lib64/libssl3.so
31b2439000-31b2638000 ---p 00039000 fd:01 4071600                        /usr/lib64/libssl3.so
31b2638000-31b263b000 r--p 00038000 fd:01 4071600                        /usr/lib64/libssl3.so
31b263b000-31b263c000 rw-p 0003b000 fd:01 4071600                        /usr/lib64/libssl3.so
31b263c000-31b263d000 rw-p 00000000 00:00 0 
31b2800000-31b2829000 r-xp 00000000 fd:01 4071643                        /usr/lib64/libsmime3.so
31b2829000-31b2a29000 ---p 00029000 fd:01 4071643                        /usr/lib64/libsmime3.so
31b2a29000-31b2a2c000 r--p 00029000 fd:01 4071643                        /usr/lib64/libsmime3.so
31b2a2c000-31b2a2d000 rw-p 0002c000 fd:01 4071643                        /usr/lib64/libsmime3.so
31b5200000-31b524e000 r-xp 00000000 fd:01 4071833                        /usr/lib64/libldap-2.4.so.2.9.1
31b524e000-31b544d000 ---p 0004e000 fd:01 4071833                        /usr/lib64/libldap-2.4.so.2.9.1
31b544d000-31b544f000 r--p 0004d000 fd:01 4071833                        /usr/lib64/libldap-2.4.so.2.9.1
31b544f000-31b5451000 rw-p 0004f000 fd:01 4071833                        /usr/lib64/libldap-2.4.so.2.9.1
31b5a00000-31b5a62000 r-xp 00000000 fd:01 4071887                        /usr/lib64/libcurl.so.4.3.0
31b5a62000-31b5c61000 ---p 00062000 fd:01 4071887                        /usr/lib64/libcurl.so.4.3.0
31b5c61000-31b5c63000 r--p 00061000 fd:01 4071887                        /usr/lib64/libcurl.so.4.3.0
31b5c63000-31b5c64000 rw-p 00063000 fd:01 4071887                        /usr/lib64/libcurl.so.4.3.0
31bb000000-31bb008000 r-xp 00000000 fd:01 4080610                        /usr/lib64/liboauth.so.0.8.4
31bb008000-31bb207000 ---p 00008000 fd:01 4080610                        /usr/lib64/liboauth.so.0.8.4
31bb207000-31bb208000 r--p 00007000 fd:01 4080610                        /usr/lib64/liboauth.so.0.8.4
31bb208000-31bb209000 rw-p 00008000 fd:01 4080610                        /usr/lib64/liboauth.so.0.8.4
3723200000-3723221000 r-xp 00000000 fd:01 4063718                        /usr/lib64/ld-2.17.so
3723420000-3723421000 r--p 00020000 fd:01 4063718                        /usr/lib64/ld-2.17.so
3723421000-3723422000 rw-p 00021000 fd:01 4063718                        /usr/lib64/ld-2.17.so
3723422000-3723423000 rw-p 00000000 00:00 0 
3723a00000-3723bb5000 r-xp 00000000 fd:01 4063719                        /usr/lib64/libc-2.17.so
3723bb5000-3723db5000 ---p 001b5000 fd:01 4063719                        /usr/lib64/libc-2.17.so
3723db5000-3723db9000 r--p 001b5000 fd:01 4063719                        /usr/lib64/libc-2.17.so
3723db9000-3723dbb000 rw-p 001b9000 fd:01 4063719                        /usr/lib64/libc-2.17.so
3723dbb000-3723dc0000 rw-p 00000000 00:00 0 
3723e00000-3723f01000 r-xp 00000000 fd:01 4063732                        /usr/lib64/libm-2.17.so
3723f01000-3724100000 ---p 00101000 fd:01 4063732                        /usr/lib64/libm-2.17.so
3724100000-3724101000 r--p 00100000 fd:01 4063732                        /usr/lib64/libm-2.17.so
3724101000-3724102000 rw-p 00101000 fd:01 4063732                        /usr/lib64/libm-2.17.so
3724200000-3724216000 r-xp 00000000 fd:01 4063721                        /usr/lib64/libpthread-2.17.so
3724216000-3724416000 ---p 00016000 fd:01 4063721                        /usr/lib64/libpthread-2.17.so
3724416000-3724417000 r--p 00016000 fd:01 4063721                        /usr/lib64/libpthread-2.17.so
3724417000-3724418000 rw-p 00017000 fd:01 4063721                        /usr/lib64/libpthread-2.17.so
3724418000-372441c000 rw-p 00000000 00:00 0 
3724600000-3724603000 r-xp 00000000 fd:01 4063724                        /usr/lib64/libdl-2.17.so
3724603000-3724802000 ---p 00003000 fd:01 4063724                        /usr/lib64/libdl-2.17.so
3724802000-3724803000 r--p 00002000 fd:01 4063724                        /usr/lib64/libdl-2.17.so
3724803000-3724804000 rw-p 00003000 fd:01 4063724                        /usr/lib64/libdl-2.17.so
3724a00000-3724a15000 r-xp 00000000 fd:01 4063723                        /usr/lib64/libz.so.1.2.7
3724a15000-3724c14000 ---p 00015000 fd:01 4063723                        /usr/lib64/libz.so.1.2.7
3724c14000-3724c15000 r--p 00014000 fd:01 4063723                        /usr/lib64/libz.so.1.2.7
3724c15000-3724c16000 rw-p 00015000 fd:01 4063723                        /usr/lib64/libz.so.1.2.7
3724e00000-3724e15000 r-xp 00000000 fd:01 4063735                        /usr/lib64/libgcc_s-4.8.1-20130603.so.1
3724e15000-3725014000 ---p 00015000 fd:01 4063735                        /usr/lib64/libgcc_s-4.8.1-20130603.so.1
3725014000-3725015000 r--p 00014000 fd:01 4063735                        /usr/lib64/libgcc_s-4.8.1-20130603.so.1
3725015000-3725016000 rw-p 00015000 fd:01 4063735                        /usr/lib64/libgcc_s-4.8.1-20130603.so.1
3725200000-3725207000 r-xp 00000000 fd:01 4063722                        /usr/lib64/librt-2.17.so
3725207000-3725406000 ---p 00007000 fd:01 4063722                        /usr/lib64/librt-2.17.so
3725406000-3725407000 r--p 00006000 fd:01 4063722                        /usr/lib64/librt-2.17.so
3725407000-3725408000 rw-p 00007000 fd:01 4063722                        /usr/lib64/librt-2.17.so
3725600000-3725663000 r-xp 00000000 fd:01 4063757                        /usr/lib64/libpcre.so.1.2.0
3725663000-3725862000 ---p 00063000 fd:01 4063757                        /usr/lib64/libpcre.so.1.2.0
3725862000-3725863000 r--p 00062000 fd:01 4063757                        /usr/lib64/libpcre.so.1.2.0
3725863000-3725864000 rw-p 00063000 fd:01 4063757                        /usr/lib64/libpcre.so.1.2.0
3725a00000-3725a20000 r-xp 00000000 fd:01 4063759                        /usr/lib64/libselinux.so.1
3725a20000-3725c1f000 ---p 00020000 fd:01 4063759                        /usr/lib64/libselinux.so.1
3725c1f000-3725c20000 r--p 0001f000 fd:01 4063759                        /usr/lib64/libselinux.so.1
3725c20000-3725c21000 rw-p 00020000 fd:01 4063759                        /usr/lib64/libselinux.so.1
3725c21000-3725c23000 rw-p 00000000 00:00 0 
3726200000-3726216000 r-xp 00000000 fd:01 4063752                        /usr/lib64/libresolv-2.17.so
3726216000-3726416000 ---p 00016000 fd:01 4063752                        /usr/lib64/libresolv-2.17.so
3726416000-3726417000 r--p 00016000 fd:01 4063752                        /usr/lib64/libresolv-2.17.so
3726417000-3726418000 rw-p 00017000 fd:01 4063752                        /usr/lib64/libresolv-2.17.so
3726418000-372641a000 rw-p 00000000 00:00 0 
3726600000-3726607000 r-xp 00000000 fd:01 4066164                        /usr/lib64/libffi.so.6.0.1
3726607000-3726806000 ---p 00007000 fd:01 4066164                        /usr/lib64/libffi.so.6.0.1
3726806000-3726807000 r--p 00006000 fd:01 4066164                        /usr/lib64/libffi.so.6.0.1
3726807000-3726808000 rw-p 00007000 fd:01 4066164                        /usr/lib64/libffi.so.6.0.1
3728600000-3728623000 r-xp 00000000 fd:01 4063731                        /usr/lib64/liblzma.so.5.0.99
3728623000-3728823000 ---p 00023000 fd:01 4063731                        /usr/lib64/liblzma.so.5.0.99
3728823000-3728824000 r--p 00023000 fd:01 4063731                        /usr/lib64/liblzma.so.5.0.99
3728824000-3728825000 rw-p 00024000 fd:01 4063731                        /usr/lib64/liblzma.so.5.0.99
3729200000-3729229000 r-xp 00000000 fd:01 4066024                        /usr/lib64/libpng15.so.15.13.0
3729229000-3729428000 ---p 00029000 fd:01 4066024                        /usr/lib64/libpng15.so.15.13.0
3729428000-3729429000 r--p 00028000 fd:01 4066024                        /usr/lib64/libpng15.so.15.13.0
3729429000-372942a000 rw-p 00029000 fd:01 4066024                        /usr/lib64/libpng15.so.15.13.0
372a200000-372a35d000 r-xp 00000000 fd:01 4063733                        /usr/lib64/libxml2.so.2.9.1
372a35d000-372a55c000 ---p 0015d000 fd:01 4063733                        /usr/lib64/libxml2.so.2.9.1
372a55c000-372a564000 r--p 0015c000 fd:01 4063733                        /usr/lib64/libxml2.so.2.9.1
372a564000-372a566000 rw-p 00164000 fd:01 4063733                        /usr/lib64/libxml2.so.2.9.1
372a566000-372a568000 rw-p 00000000 00:00 0 
372d200000-372d39b000 r-xp 00000000 fd:01 4065341                        /usr/lib64/libcrypto.so.1.0.1e
372d39b000-372d59b000 ---p 0019b000 fd:01 4065341                        /usr/lib64/libcrypto.so.1.0.1e
372d59b000-372d5b4000 r--p 0019b000 fd:01 4065341                        /usr/lib64/libcrypto.so.1.0.1e
372d5b4000-372d5bf000 rw-p 001b4000 fd:01 4065341                        /usr/lib64/libcrypto.so.1.0.1e
372d5bf000-372d5c4000 rw-p 00000000 00:00 0 
372da00000-372da03000 r-xp 00000000 fd:01 4065315                        /usr/lib64/libcom_err.so.2.1
372da03000-372dc02000 ---p 00003000 fd:01 4065315                        /usr/lib64/libcom_err.so.2.1
372dc02000-372dc03000 r--p 00002000 fd:01 4065315                        /usr/lib64/libcom_err.so.2.1
372dc03000-372dc04000 rw-p 00003000 fd:01 4065315                        /usr/lib64/libcom_err.so.2.1
372f200000-372f246000 r-xp 00000000 fd:01 4065340                        /usr/lib64/libgssapi_krb5.so.2.2
372f246000-372f446000 ---p 00046000 fd:01 4065340                        /usr/lib64/libgssapi_krb5.so.2.2
372f446000-372f447000 r--p 00046000 fd:01 4065340                        /usr/lib64/libgssapi_krb5.so.2.2
372f447000-372f449000 rw-p 00047000 fd:01 4065340                        /usr/lib64/libgssapi_krb5.so.2.2
372f600000-372f603000 r-xp 00000000 fd:01 4063751                        /usr/lib64/libkeyutils.so.1.4
372f603000-372f802000 ---p 00003000 fd:01 4063751                        /usr/lib64/libkeyutils.so.1.4
372f802000-372f803000 r--p 00002000 fd:01 4063751                        /usr/lib64/libkeyutils.so.1.4
372f803000-372f804000 rw-p 00003000 fd:01 4063751                        /usr/lib64/libkeyutils.so.1.4
372fe00000-372fe0d000 r-xp 00000000 fd:01 4063760                        /usr/lib64/libkrb5support.so.0.1
372fe0d000-373000c000 ---p 0000d000 fd:01 4063760                        /usr/lib64/libkrb5support.so.0.1
373000c000-373000d000 r--p 0000c000 fd:01 4063760                        /usr/lib64/libkrb5support.so.0.1
373000d000-373000e000 rw-p 0000d000 fd:01 4063760                        /usr/lib64/libkrb5support.so.0.1
3730600000-37306ce000 r-xp 00000000 fd:01 4065335                        /usr/lib64/libkrb5.so.3.3
37306ce000-37308ce000 ---p 000ce000 fd:01 4065335                        /usr/lib64/libkrb5.so.3.3
37308ce000-37308db000 r--p 000ce000 fd:01 4065335                        /usr/lib64/libkrb5.so.3.3
37308db000-37308de000 rw-p 000db000 fd:01 4065335                        /usr/lib64/libkrb5.so.3.3
3730e00000-3730e32000 r-xp 00000000 fd:01 4063761                        /usr/lib64/libk5crypto.so.3.1
3730e32000-3731031000 ---p 00032000 fd:01 4063761                        /usr/lib64/libk5crypto.so.3.1
3731031000-3731033000 r--p 00031000 fd:01 4063761                        /usr/lib64/libk5crypto.so.3.1
3731033000-3731034000 rw-p 00033000 fd:01 4063761                        /usr/lib64/libk5crypto.so.3.1
3731034000-3731035000 rw-p 00000000 00:00 0 
3738200000-3738239000 r-xp 00000000 fd:01 4069837                        /usr/lib64/libnspr4.so
3738239000-3738438000 ---p 00039000 fd:01 4069837                        /usr/lib64/libnspr4.so
3738438000-3738439000 r--p 00038000 fd:01 4069837                        /usr/lib64/libnspr4.so
3738439000-373843b000 rw-p 00039000 fd:01 4069837                        /usr/lib64/libnspr4.so
373843b000-373843d000 rw-p 00000000 00:00 0 
3738600000-373865d000 r-xp 00000000 fd:01 4065343                        /usr/lib64/libssl.so.1.0.1e
373865d000-373885c000 ---p 0005d000 fd:01 4065343                        /usr/lib64/libssl.so.1.0.1e
373885c000-3738860000 r--p 0005c000 fd:01 4065343                        /usr/lib64/libssl.so.1.0.1e
3738860000-3738866000 rw-p 00060000 fd:01 4065343                        /usr/lib64/libssl.so.1.0.1e
3738a00000-3738a03000 r-xp 00000000 fd:01 4069841                        /usr/lib64/libplds4.so
3738a03000-3738c02000 ---p 00003000 fd:01 4069841                        /usr/lib64/libplds4.so
3738c02000-3738c03000 r--p 00002000 fd:01 4069841                        /usr/lib64/libplds4.so
3738c03000-3738c04000 rw-p 00003000 fd:01 4069841                        /usr/lib64/libplds4.so
Program received signal SIGABRT, Aborted.
0x0000003723a35a19 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56	  return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
Missing separate debuginfos, use: debuginfo-install cyrus-sasl-lib-2.1.26-9.fc19.x86_64 keyutils-libs-1.5.5-4.fc19.x86_64 krb5-libs-1.11.3-2.fc19.x86_64 libcom_err-1.42.7-2.fc19.x86_64 libcurl-7.29.0-7.fc19.x86_64 libffi-3.0.13-4.fc19.x86_64 libgcc-4.8.1-1.fc19.x86_64 libgcrypt-1.5.3-1.fc19.x86_64 libgpg-error-1.11-1.fc19.x86_64 libidn-1.26-2.fc19.x86_64 liboauth-0.9.7-2.fc19.x86_64 libpng-1.5.13-2.fc19.x86_64 libselinux-2.1.13-15.fc19.x86_64 libssh2-1.4.3-4.fc19.x86_64 libxml2-2.9.1-1.fc19.x86_64 nspr-4.10.0-3.fc19.x86_64 nss-3.15.1-2.fc19.x86_64 nss-softokn-freebl-3.15.1-1.fc19.x86_64 nss-util-3.15.1-1.fc19.x86_64 openldap-2.4.35-5.fc19.x86_64 openssl-libs-1.0.1e-4.fc19.x86_64 pcre-8.32-7.fc19.x86_64 sqlite-3.7.17-1.fc19.x86_64 xz-libs-5.1.2-4alpha.fc19.x86_64 zlib-1.2.7-10.fc19.x86_64
(gdb) t a a bt

Thread 1 (Thread 0x7ffff5e30840 (LWP 20875))

  • #0 __GI_raise
    at ../nptl/sysdeps/unix/sysv/linux/raise.c line 56
  • #1 __GI_abort
    at abort.c line 90
  • #2 __libc_message
    at ../sysdeps/unix/sysv/linux/libc_fatal.c line 196
  • #3 malloc_printerr
  • #4 __GI___libc_realloc
    at malloc.c line 2947
  • #5 profiler_try_realloc
    at gmem.c line 824
  • #6 profiler_realloc
    at gmem.c line 846
  • #7 g_realloc
    at gmem.c line 169
  • #8 g_realloc_n
    at gmem.c line 395
  • #9 type_node_any_new_W
  • #10 type_node_new_W
    at gtype.c line 565
  • #11 g_type_register_static
  • #12 g_type_register_static_simple
  • #13 gdata_batchable_get_type
    at gdata/gdata-batchable.c line 45
  • #14 gdata_calendar_service_get_type
    at gdata/services/calendar/gdata-calendar-service.c line 221
  • #15 test_query_events
    at memory.c line 35
  • #16 main
    at memory.c line 71


Looks like my system realloc() doesn’t like the fact that profiler_try_realloc() subtracts from the base pointer it passes on. See how the value of ‘mem’ changes between frames 5 and 4.

This appears to mean that, at least on my system (Fedora 19, glibc 2.17), glib_mem_profiler_table is completely broken.
Comment 1 Dmitry Balakshin 2013-08-24 12:16:19 UTC
I think I stepped on the same bug here:
    https://bugzilla.gnome.org/show_bug.cgi?id=706599
Comment 2 Matthias Clasen 2013-08-25 16:17:29 UTC
*** Bug 706599 has been marked as a duplicate of this bug. ***
Comment 3 Dmitry Balakshin 2013-09-09 07:42:35 UTC
Since GLib 2.36 gobject type system is initialized automatically. Therefore all the memory allocations are done before we are able to change memory allocation vtable to glib_mem_profiler_table. These memory pointers are not wrapped by memory profiler, so any realloc() call (i.e. any gobject manipulation) will cause faulty memory access.

Changing memory allocation vtable is useless now for applications using libgobject. If we want to be able to set glib_mem_profiler_table I suggest to add this into gobject_init_ctor() function (gobject/gtype.c). It checks for GOBJECT_DEBUG environment variable already and can set profiler table also.
Comment 4 Matthias Clasen 2013-11-15 11:27:27 UTC

*** This bug has been marked as a duplicate of bug 701694 ***