C ++ realloc():指针无效

时间:2016-04-19 17:45:26

标签: c++ linux qt

我正在研究一个项目,我正面临一个问题,我只是不知道如何处理。

编译项目时没有问题,但在执行时,我甚至无法进入main()函数....它在进入main()之前崩溃了。这是堆栈:

#0  0x00007ffff2859cc9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x00007ffff285d0d8 in __GI_abort () at abort.c:89
#2  0x00007ffff2896394 in __libc_message (do_abort=do_abort@entry=1, fmt=fmt@entry=0x7ffff29a4b28 "*** Error in `%s': %s: 0x%s ***\n") at ../sysdeps/posix/libc_fatal.c:175
#3  0x00007ffff28a10f7 in malloc_printerr (action=<optimized out>, str=0x7ffff29a0d5d "realloc(): invalid pointer", ptr=<optimized out>) at malloc.c:4996
#4  0x00007ffff28a6192 in __GI___libc_realloc (oldmem=0x7ffff58fb840 <QListData::shared_null>, bytes=32) at malloc.c:2986
#5  0x00007ffff31f5e3e in QListData::realloc(int) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#6  0x00007ffff31f5efa in QListData::append(int) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#7  0x00007ffff32e2d8c in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007ffff32dee29 in qRegisterResourceData(int, unsigned char const*, unsigned char const*, unsigned char const*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#9  0x00007ffff3181eb3 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#10 0x00007ffff7dea13a in call_init (l=<optimized out>, argc=argc@entry=1, argv=argv@entry=0x7fffffffdfc8, env=env@entry=0x7fffffffdfd8) at dl-init.c:78
#11 0x00007ffff7dea223 in call_init (env=<optimized out>, argv=<optimized out>, argc=<optimized out>, l=<optimized out>) at dl-init.c:36
#12 _dl_init (main_map=0x7ffff7ffe1c8, argc=1, argv=0x7fffffffdfc8, env=0x7fffffffdfd8) at dl-init.c:126
#13 0x00007ffff7ddb30a in _dl_start_user () from /lib64/ld-linux-x86-64.so.2
#14 0x0000000000000001 in ?? ()
#15 0x00007fffffffe32c in ?? ()
#16 0x0000000000000000 in ?? ()

我已经测试了一些东西:使用Qt5(更具体地说是Qt5Widgets)创建一个小程序,没有问题(在编译或执行时都没有)...... 我将gcc和g ++升级到版本4.9。 还清除了我们不使用的所有依赖项中的代码,但没有任何进展迹象。

最奇怪的是,我的队友都没有遇到这个问题,当我从Windows的虚拟机中使用Ubuntu时,这个问题甚至都没有出现。

我正在研究Linux Mint 17.3 Rosa。

1 个答案:

答案 0 :(得分:3)

在库的初始化过程中,看起来Qt内部出现了问题。基于https://bugreports.qt.io/browse/QTBUG-28788,我感觉你已经混合了Qt4和Qt5库。 (或者可能是Qt5库的不同版本。无论如何。你有奇怪的链接问题。)

使用ldd检查您的最终二进制文件链接的内容,并确保列出的每个Qt库版本完全相同。