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


Andrew Haley wrote:
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.

Well, I think we should go for DWARF. Last I heard from Danny was that it worked already but then was broken again for building gcc. Since then, I never got an answer from him again.
So, for the mean time we have two options for mingw:
1. Tell users to only use dlls with the entry sequences.
2. Fix gcj to not rely on them.


I will take a look at the second option tomorrow. Ranjit introduced the dependency of the entry sequence with this patch: http://gcc.gnu.org/ml/java-patches/2006-q3/msg00051.html. So it must have done something halfway reasonable before. Better have running programs than nonrunning programs with sometimes pretty exceptions.
Does anyone know of other places checking for that entry sequence?



Marco



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