valgrind的使用请参考: 使用valgrind进行内存泄漏和非法内存操作检测
最近在使用valgrind进行内存泄漏检测是时,竟然报错,如下:
VEX temporary storage exhausted.
Pool = TEMP, start 0x3967c4e8 curr 0x39b387b8 end 0x39b41027 (size 5000000)
vex: the `impossible' happened:
VEX temporary storage exhausted.
Increase N_{TEMPORARY,PERMANENT}_BYTES and recompile.
vex storage: T total 541066736 bytes allocated
vex storage: P total 640 bytes allocated
valgrind: the 'impossible' happened:
LibVEX called failure_exit().
host stacktrace:
==21606== at 0x3805DB16: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
==21606== by 0x3805DC24: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
==21606== by 0x3805DE51: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
==21606== by 0x3805DE7A: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
==21606== by 0x38077772: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
==21606== by 0x3811C718: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
==21606== by 0x3811C784: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
==21606== by 0x382E2F2A: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
==21606== by 0x3826C644: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
==21606== by 0x3811A0A4: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
==21606== by 0x38079B97: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
==21606== by 0x380ACDCA: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
==21606== by 0x380AE9B0: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
==21606== by 0x380BDCBC: ??? (in /usr/lib/valgrind/memcheck-amd64-linux)
sched status:
running_tid=1
其实这是一个libVEX的错误,临时的解决办法就是,使用valgrind时,添加命令行参数
--vex-guest-max-insns=25
问题解决。