Java 17/Mac OS Java2D 队列刷新器崩溃

发布于 2023-02-14 10:49:34

还有其他人在 macOS + JDK17 上遇到此崩溃吗?

操作系统版本:macOS 11.6 (20G165) JRE 版本:OpenJDK Runtime Environment (17.0+35) (build 17+35-2724)

Thread 23 Crashed:: Java: Java2D Queue Flusher
0   libsystem_kernel.dylib          0x00007fff2040392e __pthread_kill + 10
1   libsystem_pthread.dylib         0x00007fff204325bd pthread_kill + 263
2   libsystem_c.dylib               0x00007fff20387406 abort + 125
3   libjvm.dylib                    0x00000001058d13e1 os::abort(bool, void*, void const*) + 49
4   libjvm.dylib                    0x0000000105aabecc VMError::report_and_die(int, char const*, char const*, __va_list_tag*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long) + 2908
5   libjvm.dylib                    0x0000000105aab345 VMError::report_and_die(Thread*, unsigned int, unsigned char*, void*, void*, char const*, ...) + 149
6   libjvm.dylib                    0x0000000105aabf61 VMError::report_and_die(Thread*, unsigned int, unsigned char*, void*, void*) + 33
7   libjvm.dylib                    0x000000010597a07b JVM_handle_bsd_signal + 363
8   libsystem_platform.dylib        0x00007fff20477d7d _sigtramp + 29
9   ???                             0x00007ffffffffff8 0 + 140737488355320
10  com.apple.AMDRadeonX5000MTLDriver   0x000000012ad40801 void amdMtl_HWL_SetTexture<(AMDMtl_SqttMode)0>(GFX9_RenderCmdEncoderMembersRec*, unsigned int, id<MTLTexture>, unsigned int, unsigned int) + 91
11  libawt_lwawt.dylib              0x000000011b2ecf91 MTLVertexCache_FlushGlyphVertexCache + 81
12  libawt_lwawt.dylib              0x000000011b2ea406 MTLTR_DrawGlyphList + 4022
13  libawt_lwawt.dylib              0x000000011b2e4cc4 Java_sun_java2d_metal_MTLRenderQueue_flushBuffer + 5236
14  ???                             0x00000001119111d5 0 + 4589687253
15  ???                             0x0000000111cf628c 0 + 4593771148

任何线索可能导致这种情况以及如何避免这种情况?

查看更多

1楼回答 2023-02-11

我不太了解这个错误,但你可以用这个参数来防止它(或者至少得到一个不同的错误):

java -Dsun.java2d.metal=false

几年前,Metal 管道是 Mac 上的默认管道,如果您将其关闭,则可以切换到较旧的 OpenGL 管道。

(我正在探索一个类似但不同的崩溃,其中包括 Java_sun_java2d_metal_MTLRenderQueue_flushBuffer,尽管我们的堆栈跟踪的其余部分不同。)

也可以看看:

https://youtrack.jetbrains.com/issue/JBR-4718

https://bugs.openjdk.org/browse/JDK-8284381

请登录后再发布答案,点击登录