|
From: Dennis L. <pla...@gm...> - 2003-11-11 23:17:53
|
Hello,
this is actually not a problem with valgrind, but I wonder if anyone ever
ran into such a thing, or give me any hint how to resolv it.
I have a program using a rather complex set of template classes. At one
point I have a
enum avl_tree_skew { avl_left, avl_right, avl_none = 0};
so, note the 0. The program behaves totally fine when the = 0 is not there,
but with, it behaves really really strange (Even segfault without valgrind).
Here is what valgrind says (Valgrind from HEAD, 10 mins ago)
==27046==
disInstr: unhandled instruction bytes: 0xF 0x5 0xA 0x0
at 0x4145836C: ???
==27046== Invalid read of size 1
==27046== at 0x41458214: ???
==27046== Address 0x41454D66 is 14 bytes before a block of size 20 alloc'd
==27046== at 0x4002906F: operator new(unsigned) (vg_replace_malloc.c:165)
==27046== by 0x8050D19: avltree<int, int>::add(int const&, int const&)
(../include/avlt
ree.h:124)
==27046== by 0x80509A8: main (rsaclient.cpp:29)
==27046== by 0x40386856: __libc_start_main (in /lib/libc.so.6)
==27046==
Then some other strange memory errors and a Segmentation Fault.
Ok, I have done a bit disassembly and found this :
0F 05 syscall
0A 00 or al,[eax]
but I thought syscall is for amd-64 only, not for Pentium4 / x86.
Whe I run it under gdb/ddd it tells me for the position in disassembly
(adress as displayed by bt):
0x08058ea5: test %al,0x8
All stuff strange, anyone can try an explanation, or even hint how to fix ?
greets
Dennis
Carpe quod tibi datum est
|
|
From: Tom H. <th...@cy...> - 2003-11-11 23:46:36
|
In message <6.0...@po...>
Dennis Lubert <pla...@gm...> wrote:
> I have a program using a rather complex set of template classes. At one
> point I have a
> enum avl_tree_skew { avl_left, avl_right, avl_none = 0};
> so, note the 0. The program behaves totally fine when the = 0 is not there,
> but with, it behaves really really strange (Even segfault without valgrind).
You do realise that with the zero in there you are giving avl_left and
avl_none the same value, don't you?
Yom
--
Tom Hughes (th...@cy...)
Software Engineer, Cyberscience Corporation
http://www.cyberscience.com/
|
|
From: Jeremy F. <je...@go...> - 2003-11-12 00:49:52
|
On Tue, 2003-11-11 at 15:17, Dennis Lubert wrote: > Here is what valgrind says (Valgrind from HEAD, 10 mins ago) > > ==27046== > disInstr: unhandled instruction bytes: 0xF 0x5 0xA 0x0 > at 0x4145836C: ??? It seems to me you've jumped through a bad function pointer: the pointer value itself looks like text: 'l' 0x83 'E' 'A'. > Then some other strange memory errors and a Segmentation Fault. > > Ok, I have done a bit disassembly and found this : > 0F 05 syscall > 0A 00 or al,[eax] > > but I thought syscall is for amd-64 only, not for Pentium4 / x86. I think it's junk. J |