RFR(m): 8074552: SafeFetch32 and SafeFetchN do not work in error handling
David Holmes
david.holmes at oracle.com
Mon Mar 9 22:06:02 UTC 2015
On 10/03/2015 2:30 AM, Thomas Stüfe wrote:
> Hi David,
>
> I see now that only Windows 32bit is broken. I will investigate this.
Yes, sorry, I hadn't noticed it was only 32-bit failing.
Thanks,
David
> Thomas
>
> On Mon, Mar 9, 2015 at 4:12 PM, Thomas Stüfe <thomas.stuefe at gmail.com
> <mailto:thomas.stuefe at gmail.com>> wrote:
>
> Hi David,
>
> I am sorry, but I am unable to reproduce the error. Both slowdebug
> and fastdebug builds on Windows come up and SafeFetch works (also in
> error handling). Are you sure the crash is caused by my change? If
> yes, could you send me an hs-err file or at least the configure line
> you used for building?
>
> Kind Regards, Thomas
>
> On Mon, Mar 9, 2015 at 7:51 AM, David Holmes
> <david.holmes at oracle.com <mailto:david.holmes at oracle.com>> wrote:
>
> On 9/03/2015 4:21 PM, Thomas Stüfe wrote:
>
> Hi David,
>
> Ouch. The only thing I can think about are the added
> initialization
> tests in stubRoutines.cpp. I will check this.
>
>
> Ah! It hadn't registered with me that this test code was going
> to be executed. Seems the likely cause as a clean repo has no
> problems.
>
> David
>
> Kind Regards, Thomas
>
>
>
> On Mon, Mar 9, 2015 at 6:56 AM, David Holmes
> <david.holmes at oracle.com <mailto:david.holmes at oracle.com>
> <mailto:david.holmes at oracle.__com
> <mailto:david.holmes at oracle.com>>> wrote:
>
> 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/
> <http://cr.openjdk.java.net/~__stuefe/webrevs/8074552/webrev.__01/>
>
> <http://cr.openjdk.java.net/~__stuefe/webrevs/8074552/webrev.__01/
> <http://cr.openjdk.java.net/~stuefe/webrevs/8074552/webrev.01/>>
>
> https://bugs.openjdk.java.net/____browse/JDK-8074552
> <https://bugs.openjdk.java.net/__browse/JDK-8074552>
>
>
> <https://bugs.openjdk.java.__net/browse/JDK-8074552
> <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