(At least ) in gcc/java/jfc-io.c,
the memoized_dirlists hash is created by the call
htab_create (37, htab_hash_string <-- NOTE THIS, memoized_dirlist_lookup_eq,
NULL);
Actually, htab contains the structures (memoized_dirlist_entry), not the
strings.
All went ok until hashtab.c decides it need to expand hash. Then,
libiberty/hashtab.c, htab_expand function tries to calculate hashes of hash
entries
itself, calling htab_hash_string on elements of hash, that are not the strings,
but the structures.
When this happens, under right conditions jc1 crashes with SIGSEGV.
I found this on FreeBSD 6-CURRENT with debug malloc that fills uninitialized
storage with 0xd0. The problem is platform independent.
It seems that such code is present at least in 3.4.4, 4.0.2 and HEAD.
--
Summary: jc1 incorrectly uses libiberty hashes
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: java
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: kostikbel at ukr dot net
CC: gcc-bugs at gcc dot gnu dot org,java-prs at gcc dot gnu
dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24120