启用我在valgrind上运行的团队的一个类实例 显示下面的消息,它终止时没有合理的报告(也没有无效的内存读/写)。
错误讯息:
--6941-- VALGRIND INTERNAL ERROR: Valgrind received a signal 11 (SIGSEGV) - exiting
--6941-- si_code=1; Faulting address: 0x17E2C998; sp: 0x100fff0e10
valgrind: the 'impossible' happened:
Killed by fatal signal
host stacktrace:
==6941== at 0x58095C33: get_bszB_as_is (m_mallocfree.c:303)
==6941== by 0x58095C33: get_bszB (m_mallocfree.c:315)
==6941== by 0x58095C33: vgPlain_arena_free (m_mallocfree.c:2109)
==6941== by 0x58052843: release_oldest_block (mc_malloc_wrappers.c:169)
==6941== by 0x58052843: create_MC_Chunk (mc_malloc_wrappers.c:212)
==6941== by 0x58052A0B: vgMemCheck_new_block (mc_malloc_wrappers.c:388)
==6941== by 0x58052BD9: vgMemCheck___builtin_new (mc_malloc_wrappers.c:417)
==6941== by 0x580DE7B3: do_client_request (scheduler.c:1866)
==6941== by 0x580DE7B3: vgPlain_scheduler (scheduler.c:1433)
==6941== by 0x580ED106: thread_wrapper (syswrap-linux.c:103)
==6941== by 0x580ED106: run_a_thread_NORETURN (syswrap-linux.c:156)
==6941== by 0x580ED39A: vgModuleLocal_start_thread_NORETURN (syswrap-linux.c:320)
==6941== by 0x5811711D: ??? (in /lib/valgrind/memcheck-amd64-linux)
==6941== by 0xDEADBEEFDEADBEEE: ???
==6941== by 0xDEADBEEFDEADBEEE: ???
==6941== by 0xDEADBEEFDEADBEEE: ???
所以我猜测用户代码(意味着我的团队)搞砸了valgrind
的内存区域。
有可能吗?
此外,我试图找出地址消毒剂上的代码有什么问题,但它没有报告任何问题。
我该如何开始挖掘这个问题?