Good one - I wasn't aware of the ErrorHandlerTest. I agree that duplication of code is not good and perhaps the whitebox API is overkill for the job at hand. I see other tests uses sun.misc.Unsafe to cause crashes which may make more sense than reusing the ErrorHandlerTest since I want Java frames on the stack. On the other hand I can envision expanding the test to check for both Java frames and native C++ frames, in which case neither ErrorHandlerTest or sun.misc.Unsafe works out of the box.
> (and I'm not a Committer, so don't listen to me). Of course I do. Ideas are welcome, /Staffan On 8 maj 2012, at 17:17, Mikael Gerdin wrote: > Staffan, > > I looked through test makefile changes and the white box test, the changes > seem alright but I'm not convinced that using a white box test for this is > the best approach. > There are some existing tests for the error handler and hs_err creation in > test_error_handler in debug.cpp (look for use of the ErrorHandlerTest flag) > > I realize that this would not work for your test since you use jstack to > verify that the SA works and ErrorHandlerTest crashes the VM before any Java > frames are on the stack. But it would be great if we could re-use the > existing code to force the VM to crash instead of duplicating it. > > Anyway, I won't object to the changes in their current state > > /mg > > On 2012-05-08 13:11, Staffan Larsen wrote: >> The Serviceability Agent currently has an outage on Mac OS X compared to >> other platforms in that we cannot read core files. We plan to address >> this for 7u6 by incorporating code from a separate tool called "kjdb" >> developed at Oracle. Kjdb is a cross-platform core-file debugger written >> completely in Java that currently works on ELF (solaris, linux) and >> Mach-O (mac) core files. Since it is written in Java it can read core >> files from a different system than the system you are running kjdb on, >> which is very useful. >> >> The alternative to incorporating the kjdb technology would have been to >> implement this in C as is done for the other platforms, but reusing >> existing code saves us some trouble. The kjdb debugger backend will >> automatically be enabled when you are opening a Mach-O core file (or if >> you explicitly set the -Duse.kjdb property when starting SA). >> >> The risks with this is that this is a large addition of relatively new >> code to SA (around 100 files). It also means that debugging a live >> process or a core file on OS X will use different debugger backends >> which may have different behavior and bugs. >> >> This change also adds a basic test that creates a core file and uses SA >> to print the thread dumps in the core. This test runs on all platforms, >> not just Mac OS X. Other than that test, some level of manual testing >> has been done with various core files. >> >> Please see the webrev at: http://cr.openjdk.java.net/~sla/kjdb/webrev.01/ >> >> There are quite a number of added files in this webrev, so it's probably >> best to concentrate on the changes in the existing files. >> >> Thanks, >> /Staffan
