RFR: 8141445: Use of Solaris/SPARC M7 libadimalloc.so can generate unknown signal in hs_err file
David Holmes
david.holmes at oracle.com
Thu Nov 5 03:42:10 UTC 2015
On 5/11/2015 1:28 PM, Gerald Thornbrugh wrote:
> Hi David,
>> Hi Jerry,
>>
>> On 5/11/2015 7:15 AM, Gerald Thornbrugh wrote:
>>> Hi Everyone,
>>>
>>> Please review my fix for JDK-8141445.
>>>
>>> JDK-8141445 describes an issue seen only on Solaris/SPARC M7 hardware
>>> running Solaris 11.3 or later when the libadimalloc.so library is
>>> preloaded before running the JVM and the JVM crashes due to a memory
>>> allocation fault triggered by libadimalloc.so. Currently when
>>> libadimalloc.so triggers a memory allocation fault the SIGSEGV
>>> si_code is displayed as “unknown" in the hs_err file. This change adds
>>> additional si_code defines so the memory allocation faults that
>>> trigger the JVM to core are displayed correctly in the hs_err file.
>>> The changes also include a test that preloads the libadimalloc.so
>>> library, generates a libadimalloc.so memory allocation fault that
>>> crashes
>>> the JVM and then verifies that the correct si_code information is
>>> displayed in the hs_err file.
>>>
>>> Webrev: http://cr.openjdk.java.net/~gthornbr/8141445/webrev.00/
>>> <http://cr.openjdk.java.net/~gthornbr/8141445/webrev.00/>
>>>
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8141445
>>> <https://bugs.openjdk.java.net/browse/JDK-8141445>
>>>
>>> Please let me know if you have any questions or concerns.
>>
>> make/test/JtregNative.gmk
>>
>> + ifeq ($(TOOLCHAIN_TYPE), solstudio)
>> + BUILD_HOTSPOT_JTREG_LIBRARIES_LDFLAGS_liboverflow := -lc
>> + endif
>>
>> This doesn't seem to be used anywhere? Is it automatically associated
>> with the filename of the .c file?
> It is used to include the library in the build process that involves
> "liboverflow.c".
> Yes, it is automatically associated with the .c file.
>>
>> ---
>>
>> src/os/posix/vm/os_posix.cpp
>>
>> Why are these only defined for sparc? I would have expected this to be
>> a solaris feature not a solaris-on-sparc feature?
> This feature is only supported on the M7 SPARC architecture.
Okay - I should have known that :)
I assume this has been tested on a native build where the new constants
are defined in the system headers (as they are not in our devkits and so
won't be fully tested via JPRT builds)?
Thanks,
David
>>
>>
>> Can you add a comment to the final #endif please, showing which #if it
>> matches.
> Yes.
>>
>> Lines 845 and 849 are slightly out of alignment compared to preceding
>> lines and following lines (though in following lines CLD_CONTINUED
>> messes up alignment anyway).
> I will clean up the alignment.
>>
>> ---
>>
>> test/runtime/ErrorHandling/segv_overflow.java
>>
>> Java style uses camel-case with initial capital for class names and
>> therefor the file names. So this should be SegvOverflow.java or even
>> SEGVOverflow.java (given SEGV is part of the signal name.
> I will change this.
>>
>> nativesegv does not need to be public.
> I will change this.
>>
>> print can be static then you don't need to create an instance. In fact
>> given it is so short just put all the code in main.
> I will change this.
>>
>> ---
>>
>> test/runtime/ErrorHandling/Testlibadimalloc.java
>>
>> 43 throws InterruptedException,IOException,Exception
>>
>> "throws Throwable" is more succinct to avoid the checked-exceptions
>> problem. Otherwise space after commas please.
> I will change this.
>>
>> 45 ProcessBuilder builder;
>> 46 Process process;
>> 47 long pid;
>> 48 int retval;
>> 49 boolean found = false;
>> 50 Path path;
>>
>> Java does not require (nor does Java style encourage) all variables to
>> be declared up front (nor does C/C++ any more :) ). Declare the
>> variables on first use (or as close to if scoping is an issue).
> I will change this.
>>
>>
>> 99 // If SEGV_ADIERR was not found in the hs_err file fail the
>> test
>> 100 if (!found) {
>> 101 System.out.println("FAIL: forced failure");
>> 102 throw new RuntimeException("FAIL: forced failure");
>>
>> You should report that SEGV_ADIERR was not found in the hs_err file.
>>
> I will change this.
>
> Thanks!
>
> Jerry
>>
>> Thanks,
>> David
>>
>>
>>> Thanks,
>>>
>>> Jerry
>>>
>
More information about the hotspot-runtime-dev
mailing list