-
Notifications
You must be signed in to change notification settings - Fork 15.4k
Description
| Bugzilla Link | 2491 |
| Resolution | FIXED |
| Resolved on | Apr 24, 2010 07:06 |
| Version | 2.2 |
| OS | Windows XP |
| Attachments | valgrind log, obfuscated source file |
| Reporter | LLVM Bugzilla Contributor |
| CC | @asl,@jayfoad |
Extended Description
On a particular C++ source file, I'm seeing a bunch of valgrind errors like this (full log attached):
$ valgrind ~/llvm/llvm-gcc4.2-2.2-x86-linux-RHEL4/libexec/gcc/i686-pc-linux-gnu/4.2.1/cc1plus -quiet -emit-llvm-bc -o foo.o foo.ii
...
==23065== Invalid read of size 4
==23065== at 0x837D82D: FixBaseClassFields(tree_node*) (DenseMap.h:38)
==23065== by 0x838205E: TypeConverter::ConvertRECORD(tree_node*, tree_node*) (llvm-types.cpp:1990)
==23065== by 0x8380ACF: TypeConverter::ConvertType(tree_node*) (llvm-types.cpp:718)
==23065== by 0x8380AA5: TypeConverter::ConvertType(tree_node*) (llvm-types.cpp:920)
==23065== by 0x83815E6: TypeConverter::DecodeStructFields(tree_node*, StructTypeConversionInfo&) (llvm-types.cpp:1802)
==23065== by 0x838207A: TypeConverter::ConvertRECORD(tree_node*, tree_node*) (llvm-types.cpp:1994)
==23065== by 0x8380ACF: TypeConverter::ConvertType(tree_node*) (llvm-types.cpp:718)
==23065== by 0x8380949: TypeConverter::ConvertType(tree_node*) (llvm-types.cpp:828)
==23065== by 0x8382287: TypeConverter::ConvertRECORD(tree_node*, tree_node*) (llvm-types.cpp:2100)
==23065== by 0x8380ACF: TypeConverter::ConvertType(tree_node*) (llvm-types.cpp:718)
==23065== by 0x8380C4F: TypeConverter::ConvertType(tree_node*) (llvm-types.cpp:866)
==23065== by 0x8383476: TypeConverter::ConvertFunctionType(tree_node*, tree_node*, tree_node*, unsigned&, llvm::ParamAttrsList const*&) (Casting.h:115)
==23065== Address 0x42BF49C is 236 bytes inside a block of size 512 free'd
==23065== at 0x401C93E: operator delete (vg_replace_malloc.c:256)
==23065== by 0x837D81A: FixBaseClassFields(tree_node*) (DenseMap.h:360)
==23065== by 0x838205E: TypeConverter::ConvertRECORD(tree_node*, tree_node*) (llvm-types.cpp:1990)
==23065== by 0x8380ACF: TypeConverter::ConvertType(tree_node*) (llvm-types.cpp:718)
==23065== by 0x8380AA5: TypeConverter::ConvertType(tree_node*) (llvm-types.cpp:920)
==23065== by 0x83815E6: TypeConverter::DecodeStructFields(tree_node*, StructTypeConversionInfo&) (llvm-types.cpp:1802)
==23065== by 0x838207A: TypeConverter::ConvertRECORD(tree_node*, tree_node*) (llvm-types.cpp:1994)
==23065== by 0x8380ACF: TypeConverter::ConvertType(tree_node*) (llvm-types.cpp:718)
==23065== by 0x8380949: TypeConverter::ConvertType(tree_node*) (llvm-types.cpp:828)
==23065== by 0x8382287: TypeConverter::ConvertRECORD(tree_node*, tree_node*) (llvm-types.cpp:2100)
==23065== by 0x8380ACF: TypeConverter::ConvertType(tree_node*) (llvm-types.cpp:718)
==23065== by 0x8380C4F: TypeConverter::ConvertType(tree_node*) (llvm-types.cpp:866)
The problem seems to have gone away in LLVM 2.3. But I thought I'd raise this bug anyway in case the problem has just moved, not gone away completely. Or can anyone assure me that the problem has really been fixed?
Unfortunately I can't attach my source file as-is because it contains proprietary code. I can have a go at reducing it if that would be useful.