C++realloc():无效指针

C++ realloc() : invalid pointer

本文关键字:无效 指针 C++realloc      更新时间:2023-10-16

我正在做一个项目,我面临着一个不知道如何处理的问题。

编译项目时没有问题,但在执行时,我甚至无法进入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。

在库初始化期间,Qt内部似乎出现了问题。基于https://bugreports.qt.io/browse/QTBUG-28788,我有一种感觉,您以某种方式混合了Qt4和Qt5库。(或者可能是不同版本的Qt5库。不管怎样。你有奇怪的链接问题。)

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