Hi Thomas,

On 1/06/2017 10:26 PM, Thomas Stüfe wrote:
Hi David,

On Thu, Jun 1, 2017 at 2:09 PM, David Holmes <[email protected] <mailto:[email protected]>> 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
        <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 suppose we could do all the assert related printfs before sending the signal. The assertion info wouldn't be in the hs_err log, but at least it would be somewhere.

Anyway I'll leave this for core-libs folk to mull over.

Cheers,
David

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


Reply via email to