RFR: 8145073: Filename and linenumber are not printed for assers any more.

David Lindholm david.lindholm at oracle.com
Thu Dec 10 13:33:00 UTC 2015


David, Thomas,

Thanks for the reviews.


On 2015-12-10 14:15, Thomas Stüfe wrote:
> Hi David, David,
>
> @David:
>
>     I would also like to restore the old behavior for now, and thereby
>     fixing this regression. We can change these APIs later.
>
>
> I think this is reasonable. Sorry again for the trouble.

No problem. FWIW I also think that this API is strange.


Thanks,
David L

>
>     Thanks
>     David L
>
>
> @David:
>
>
>     On 2015-12-10 13:01, David Holmes wrote:
>
>         Hi Thomas,
>
>         On 10/12/2015 8:35 PM, Thomas Stüfe wrote:
>
>             Hi David, David,
>
>             sorry about that and thank you for fixing!
>
>             I changed that behaviour (inconsequentially, because I
>             left out windows
>             and left the comment in) because the return code for
>             os::exception_name() is used in a number of places as
>             input for
>             printing, without doing a null check first:
>
>             e.g os_solaris_x86.cpp:
>
>             364        warning("Ignoring %s - see 4229104 or 6499219",
>             365                os::exception_name(sig, buf, sizeof(buf)));
>
>
>         But here sig is known to be SIGPIPE or SIGXFSZ so
>         exception_name can never return NULL.
>
>             e.g. os_solaris.cpp
>
>             st->print("%s: ", os::exception_name(sig, buf, buflen));
>
>
>         This is in print_signal_handler so sig will always be a signal
>         value - so again NULL is not possible.
>
>             So, I think it is besser to never return NULL at all. But
>             if we go back
>             to the old behaviour, we should fix those callsites and
>             add NULL checks
>             to them.
>
>
>         I don't like the way NULL is used to indicate "hey you didn't
>         really pass me a signal number!". The _id in VMError is defined:
>
>           static int         _id;               // Solaris/Linux
>         signals: 0 - SIGRTMAX
>                                                 // Windows exceptions:
>         0xCxxxxxxx system errors
>                                                 // 0x8xxxxxxx system
>         warnings
>
>         nothing there about assertions! But in fact it can have a
>         range of non-signal related values and primarily of interest
>         in this case INTERNAL_ERROR (0xe0000000). So while I don't
>         like the way this is managed, restoring the NULL behaviour is
>         a lot simpler than trying to rework everything.
>
>
> Let me just add as a separate argument against returning NULL that the 
> construct
>
> const char* foo(char* buf, size_t len) {
>    ...
>   return buf;
> }
>
> traditionally is used to be able to use this as arguments for 
> printf-like functions, and returning NULL defies that purpose.
>
> Thanks,
>
> Thomas
>



More information about the hotspot-runtime-dev mailing list