RFR: 8289002: Minimal x86_64 VM build fails with GCC 11: 'this' pointer is null

Alan Bateman alanb at openjdk.org
Wed Aug 3 08:39:38 UTC 2022


On Tue, 2 Aug 2022 18:11:33 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:

> These build failures are specific to Minimal VM, because it disables "management" feature, and paths like these start to return NULL:
> 
> 
>   static InstanceKlass* com_sun_management_internal_DiagnosticCommandImpl_klass(TRAPS)
>       NOT_MANAGEMENT_RETURN_(NULL);
> ``` 
> 
> I propose we handle the `NULL`-s properly and throwing early when those are detected. We return/throw what similar code in the affected methods do. I went back and forth with the patch, and settled on throwing from `MemoryManager::get_memory_manager_instance`, and handling the exception at its uses.
> 
> Additional testing:
>  - [x] Linux x86_64 fastdebug minimal build with GCC 11.3.0
>  - [x]  Linux x86_64 fastdebug server with GCC 9.3.0, `tier1`
>  - [x]  Linux x86_64 fastdebug server with GCC 9.3.0, `tier2`
>  - [x]  Linux x86_64 fastdebug server with GCC 9.3.0, `hotspot_serviceability`

The minimal VM build dates from the compact profiles defined in Java 8. The compact1 and compact2 profiles didn't have the j.l.management APIs so a minimal VM build of libjvm without the "management" code would have been okay. For Java 9+ then a minimal VM build without "management" only make sense when using jlink to create a run-time image that doesn't have the java.management module.

-------------

PR: https://git.openjdk.org/jdk/pull/9718


More information about the hotspot-dev mailing list