asserts in jdk coding (outside hotspot)
Roger.Riggs at Oracle.com
Thu Jun 1 13:06:49 UTC 2017
Is there a clean way for hotspot to export the assert mechanism so it
can be called from
the C based native JDK libraries?
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>
>> 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
>>> In the JDK, in a number of places, I see that we use the standard posix
>>> 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
>>> 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
> 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.
>> Kind Regards, Thomas
More information about the core-libs-dev