asserts in jdk coding (outside hotspot)

Roger Riggs Roger.Riggs at Oracle.com
Thu Jun 1 13:06:49 UTC 2017


Hi,

Is there a clean way for hotspot to export the assert mechanism so it 
can be called from
the C based native JDK libraries?

Thanks, Roger


On 6/1/2017 8:26 AM, Thomas Stüfe wrote:
> Hi David,
>
> On Thu, Jun 1, 2017 at 2:09 PM, David Holmes <david.holmes at oracle.com>
> wrote:
>
>> Hi Thomas,
>>
>> On 1/06/2017 7:20 PM, Thomas Stüfe wrote:
>>
>>> Hi all,
>>>
>>> so, we have the hotspot asserts with all the niceties of our error
>>> reporting. But these asserts are only accessible from within hotspot
>>> coding.
>>>
>>> In the JDK, in a number of places, I see that we use the standard posix
>>> assert()(
>>> http://pubs.opengroup.org/onlinepubs/009695399/functions/assert.html).
>>>
>>> This means that when we trigger the assert, we will only get a brief
>>> message on stderr and a core, but no hs_err file.
>>>
>>> It also means that -XX:+CreateCoredumpOnCrash is ignored, so it is not
>>> possible to switch off those core dumps.
>>>
>>> This is unfortunate and also easy to fix. We do not even have to call into
>>> the hotspot to get hotspot asserts. We could just force a NULL pointer
>>> access or send ourselves a SIGILL or something. Anything which triggers
>>> the
>>> hotspot signal handling would be fine.
>>>
>>> What do you think?
>>>
>> Sending ourselves a fatal signal doesn't indicate what assertion failed.
>> The error handler won't know it was an assert, just a SEGV or SIGILL
>>
>> ??
>>
>> David
>>
> Sure. But in many cases this still would be preferable to just a core. We'd
> get a hs-err file - admittedly with a Segv instead of an assert message -
> but we have a callstack and could deduce the error from there.
>
> I am not saying that this is an ideal solution. Of course, a really good
> solution may invoke the real hotspot assert or one might come up with a way
> to transfer assert information (message, file, line etc) to the hotspot
> error handler. E.g. store the assert message in a globally visible char
> array one could resolve via dlsym to avoid having to add link dependencies.
>
>
> ..Thomas
>
>
>> Kind Regards, Thomas
>>>



More information about the core-libs-dev mailing list