RFR(m): 8074552: SafeFetch32 and SafeFetchN do not work in error handling
David Holmes
david.holmes at oracle.com
Mon Mar 9 05:56:25 UTC 2015
Hi Thomas,
FYI When I applied this to latest hs-rt forest and ran through JPRT the
Windows fastdebug builds were DOA (instant segfault just running "java
-version"). Can't see how your changes could do this so running a test
on unmodified forest.
David
On 9/03/2015 9:40 AM, David Holmes wrote:
> Hi Thomas,
>
> Minor nit: in src/share/vm/runtime/stubRoutines.cpp::test_safefetchN can
> you use UCONST64 macro instead of explicit ULL - thanks.
>
> Otherwise this seems okay, but we will also need the aarch64 component
> (and I'll look into our internal needs).
>
> Thanks,
> David
>
> On 7/03/2015 2:10 AM, Thomas Stüfe wrote:
>> Hi all,
>>
>> could someone please review the following fix (I also will need a
>> sponsor):
>>
>> http://cr.openjdk.java.net/~stuefe/webrevs/8074552/webrev.01/
>>
>> https://bugs.openjdk.java.net/browse/JDK-8074552
>>
>> The fix will make SafeFetch[32,N] work in error reporting.
>>
>> At SAP, we use SafeFetch a lot in error reporting to poke around in
>> potentially invalid memory (e.g. writing hex dumps over areas which
>> may be
>> partly unmapped), and we feel that this could be useful for the
>> OpenJDK too.
>>
>> Without this fix, SafeFetch will cause a crash, the current error
>> reporting
>> step will be interrupted and error reporting will continue with the next
>> step; that is not optimal because the interrupted step may have shown
>> valuable information.
>>
>> This fix handles SafeFetch faults during error reporting the same way as
>> they are handled normally. The changes are:
>>
>> - handle safe fetch fault in the various (os_cpu dependend) secondary
>> signal handlers
>>
>> - provide a function to check if it is safe to use SafeFetch:
>> CanUseSafeFetch32(). SafeFetch needs stub routines and will crash when
>> used
>> before stub generation.
>>
>> - set_context_pc() is added which complements the existing
>> get_context_pc()
>> and all instances where the pc in ucontext_t was modified directly are
>> changed to use set_context_pc()
>>
>> - in stubRoutines.cpp, a small test was added to the already existing
>> stub
>> routines tests which run at VM init
>>
>> - in vmError.cpp, a test was added to test SafeFetch during error
>> reporting, similar to the tests introduced for 8065895
>>
>> - A JTreg test was added
>>
>> Thanks and Kind Regards,
>>
>> Thomas Stuefe
>>
More information about the hotspot-runtime-dev
mailing list