JDK-8274102 : Update VM crash reporting on macOS
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: 18
  • Priority: P3
  • Status: Open
  • Resolution: Unresolved
  • OS: os_x
  • Submitted: 2021-09-21
  • Updated: 2022-06-24
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
tbdUnresolved
Related Reports
Relates :  
Description
Apple receive crash reports for at least some VM crashes on macOS.
But Apple's crash reporter tools don't gather hotspot error logs and sometimes the stack trace which they get is not very revealing about what happened

Eg:Thread 27 Crashed ↩:: Java: RMI TCP Connection(3)-127.0.0.1
0   libsystem_kernel.dylib        	0x00000001be409a58 __pthread_kill + 8
1   libsystem_pthread.dylib       	0x00000001be43d218 pthread_kill + 288
2   libsystem_c.dylib             	0x00000001be37a314 abort + 164
3   libjvm.dylib                  	0x00000001021c6e04 os::abort(bool, void*, void const*) + 28
4   libjvm.dylib                  	0x000000010230ab20 VMError::report_and_die(int, char const*, char const*, char*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long) + 2820
5   libjvm.dylib                  	0x000000010230a010 VMError::report_and_die(Thread*, unsigned int, unsigned char*, void*, void*, char const*, ...) + 72
6   libjvm.dylib                  	0x000000010230ac38 VMError::report_and_die(Thread*, unsigned int, unsigned char*, void*, void*) + 36
7   libjvm.dylib                  	0x00000001021cb190 JVM_handle_bsd_signal + 620
8   libjvm.dylib                  	0x00000001021c8ce4 signalHandler(int, __siginfo*, void*) + 56
9   libsystem_platform.dylib      	0x00000001be4544e4 _sigtramp + 56
10  ???                           	0x0000000106431cac 0 + 4400028844



The issue here being that in frame 4, we have some rich data about the crash that we could report, but it gets lost in the call to os::abort(), which ends up just abort()ing, so that data isn't in the actual crash log.

Request from Apple :
====
Could you update VMError::report_and_die to include the error message in the crash log?  You can do that using the (undocumented yet externally used) __crashreporter_info__ symbol

Or I (Apple) could provide you with some API in JavaRuntimeSupport (eg: +[JRSProcess setCrashlogInfo:(NSString *)additionalInformation] or void jrs_setCrashLogInfo(char *format, ...), or ?).

===

My quick take, although using an undocumented interface isn't ideal the JRS interface would be undocumented too, and we'd have to wait for it to be available. If further info is needed on how to do this I can help get it.