This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: segfault in sysdep/i386/backtrace.h


Marco Trudel writes:
 > Marco Trudel wrote:
 > > Andrew Haley wrote:
 > >> Marco Trudel writes:
 > >>  >  >  > The segfault happens on reading scan_bytes[x]. I assume that 
 > >> there is no  > "pushl %ebp; movl %esp, %ebp" function prologue in 
 > >> certain cases and  > thus we go reading protected areas below the 
 > >> function.
 > >>
 > >> Why don't you have a look, and tell us what is there?
 > > 
 > > Because I don't know how and what these hex values mean (how to 
 > > interpret them) when doing the backtrace...
 > 
 > Ok, learnt it...
 > The problem is that the code assumes that there is always a "pushl %ebp; 
 > movl %esp, %ebp" function prologue. But, from [1]: "Note that many 
 > compilers can optimize these standard sequences away when not needed 
 > (often called "no stackframe generation")".
 > 
 > So, when turning on maximum optimization in microsoft visual c++, there 
 > are no longer "pushl %ebp; movl %esp, %ebp" intros and thus we run into 
 > trouble (tried it). I don't know if GCC can do that too... Can it?

It can.

 > I checked a couple of dll's (awt.dll, swt.dll, aBluetoothLib.dll) I had 
 > around and they all miss the intro in at least a couple of functions.
 > 
 > So, questions:
 > - Is this a sjlj-exception only problem?

Yes.

 > Can DW EH do that better?

Yes.

 > - Is there another way to reliably recognize the start of a function? I 
 > assume this only affects native libs since Java compiled apps will 
 > always have the intro?!

Yes.  We tell gcj not to optimize away the frame generation.

We either have to write a ton of heuristics to figure this stuff out
or fix DWARF / SEH in Windows.

Andrew.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]