971016: EH frame_init trouble on Sparc

Teemu Torma tot@trema.com
Wed Oct 22 03:11:00 GMT 1997


I attempted to throw exceptions in a large C++ application
using snapshot 971016, and ran into trouble.

The problem is that find_fde calls frame_init if pc_begin is zero.
However, frame_init finds the lowest pc_begin as zero, causing
the application to hang and eventually crash.  I think it is doing
initializations over and over again, and frame_init keeps allocating
more and more memory.

The quick fix to make it work at all is to set pc_begin to 1 in
frame_init if it would be zero, but I think the problem lies
somewhere else.  There seems to be a lot of fdes with pc_begin
is zero.

This always happens with the first object in find_fde where ob->count
is over 10000.  The application itself uses ~15 biggish shared C++
libraries and ~20 shared C libraries (Motif etc).

Any pointers where to start looking?

I also noticed that it takes considerable amount of time
to throw the first exception, due to initializations done
at that point.

Teemu






More information about the Gcc mailing list