|
From: Nicholas N. <nj...@ca...> - 2004-08-26 09:48:59
|
On Thu, 26 Aug 2004, Dimitri Papadopoulos-Orfanos wrote: > But now Valgrind crashes with the following message. Is this a known issue, > or should I file in a bug? I wasn't able to relate this crash to any of the > FAQ items. It's new. > valgrind: vg_to_ucode.c:5285 (disInstr): Assertion `abyte == 0' failed. > ==10615== at 0xB002AA26: vgPlain_skin_assert_fail (vg_mylibc.c:1169) > ==10615== by 0xB002AA25: assert_fail (vg_mylibc.c:1165) > ==10615== by 0xB002AA63: vgPlain_core_assert_fail (vg_mylibc.c:1176) > ==10615== by 0xB00511DA: disInstr (vg_to_ucode.c:7300) Ah, the instruction "enter" has two forms. The common form is: enter $n, $0 which creates a stack frame. Although it's not used very often (eg. gcc doesn't generate it AFAICT). Valgrind supports that fine. But if the second argument is non-zero, eg: enter $n, $1 then it creates a weird "nested stack frame" which involves copying multiple old frame pointers. Valgrind doesn't handle this case because it's (a) a pain to simulate, and (b) so rare -- you're the first person who's come across it, AFAIK. I'll create a bug report for it. Hopefully someone will take it upon themselves to implement it. If you're feeling adventurous, you could try making a patch for it. If you can prevent your program from using the 2nd form of "enter", that would be a workaround. N |