SIGSEGV in C2 compiler

Denis Lila dlila at redhat.com
Mon Nov 22 11:27:40 PST 2010


I'm sorry, I accidentally sent this without finishing it.

I meant to say that gdbdump.txt, hotspot.log, and the hs_err_*.log
files were obtained using a fastdebug build of hotspot 19-b06.

I can reproduce the crash with hotspot 17 too.

Regards,
Denis.

----- "Denis Lila" <dlila at redhat.com> wrote:

> Hello.
> 
> I was working on the pisces rendering engine using eclipse and I
> encountered a segfault. I was using the pisces/Test.java file
> to test various parts of the rendering engine without having to
> rebuild
> openjdk. In it, I create a Frame whose paint method creates a Path2D,
> a Stroker and a Dasher. Then the path is fed to the Dasher (but it is
> not
> drawn because this is unnecessary to make it crash), and eventually
> Stroker.somethingTo is called, which is where the crash occurred.
> However,
> it only happened when I accidentally left uncommented the rest of
> main, which creates other Stroker and Dasher objects and feeds lots of
> curves to them and measures how long this processing takes. Even then,
> it only happens if one grabs the window and moves it on and off
> screen,
> causing the paint method to be called. I tried putting a repaint()
> call
> at the end of paint() so that I wouldn't have to do any manual work,
> but that didn't work. It is reproducible using an awt.Robot, but not
> as frequently as manually.
> 
> When I remove the Frame creation and leave just the performance
> measuring
> part of main(), it doesn't crash. It also doesn't crash when I remove
> the performance measuring part of main() and leave just the graphical
> part of the program. I tried reproducing it using a debug build of
> hotspot,
> but I couldn't. This all suggests that it's a concurrency issue, so I
> wrote a new main that simply created a few threads where each thread
> created Dasher and Stroker objects and fed curves to them, but this
> didn't
> crash.
> 
> 
> Another important thing is that I was only able to reproduce it when
> the
> files in pisces.tar.gz were compiled using ecj - not javac.
> 
> I've seen over 30 hs_err_pis*.log files produced by this crash and
> every one
> of them says:
> C2:  [2|3]%     pisces.Stroker.somethingTo(I)V @ 710 (1190 bytes)
> 
> where line 710 corresponds to line 830 in Stroker.java, which is a
> call to
> it.next() where "it" is an anonymous Iterator<float[]> object.
> 
> I did not submit a bug report at sun.bugs.com because I couldn't find
> a way
> to attach the 4 files.


More information about the hotspot-compiler-dev mailing list