環境
macOS Sonoma 14.1.1
java --version
openjdk 16 2021-03-16
OpenJDK Runtime Environment (build 16+36-2231)
OpenJDK 64-Bit Server VM (build 16+36-2231, mixed mode, sharing)
※追記※ macOSをアップデートすることで解決
homebrewのissueに同じようなエラーを報告しているissueを発見。
This is a bug on Apple's part. OpenJDK relies on a framework shipped with macOS called JavaRuntimeSupport. It appears this framework triggers behaviour that causes this crash.
Bug report with Apple is still open, but they may have forgotten to update it.
It does seem indeed fixed in macOS 14.2 - an exception to the crash has been added for JRSMenu. It should be a runtime change and thus not require rebuilds.
macOS側のバグだそうで、Sonomaの14.1で発生している。また、14.2以降は修正されているとのことでした。
なのでOSを14.3(2024/02/29時点での最新)にアップデートしたところ、起動するようになりました。
ここから先の内容は上記issueを見つける前に書いたものです。
自分の環境での解決策
フルパスで実行すると起動できました。
$ /usr/local/Cellar/jmeter/5.6.3/libexec/bin/jmeter
以下は実行できるようになるまで色々試したこと
起動できない
インストールして起動
$ brew install jmeter
$ jmeter
エラーログ
================================================================================
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGILL (0x4) at pc=0x00007ff8092bfbc5, pid=24151, tid=259
#
# JRE version: OpenJDK Runtime Environment Homebrew (21.0.2) (build 21.0.2)
# Java VM: OpenJDK 64-Bit Server VM Homebrew (21.0.2, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, bsd-amd64)
# Problematic frame:
# C [AppKit+0xc92bc5] _NSCarbonMenuCrashIfNeeded+0x258
#
# No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /Users/hs_err_pid24151.log
#
# If you would like to submit a bug report, please visit:
# https://github.com/Homebrew/homebrew-core/issues
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
/usr/local/Cellar/jmeter/5.6.3/libexec/bin/jmeter: line 199: 24151 Abort trap: 6 "$JAVA_HOME/bin/java" $ARGS $JVM_ARGS $JMETER_OPTS -jar "$PRGDIR/ApacheJMeter.jar" "$@"
javaのバージョン?
エラーログにOpenJDKって書いてあるからたぶんJava周りだろうと当たりをつける。
最後の一行的にパスが問題か?
ちゃんと入れてるはず。
export JAVA_HOME=/usr/local/Library/Java/JavaVirtualMachines/openjdk-16.0.1/Contents/Home
PATH=${JAVA_HOME}/bin:${PATH}
$ java --version
openjdk 16.0.1 2021-04-20
OpenJDK Runtime Environment (build 16.0.1+9-24)
OpenJDK 64-Bit Server VM (build 16.0.1+9-24, mixed mode, sharing)
通せてる。
以下のバージョンを試してみるがだめ。
Java 21
Java 17
Java 8
環境変数が読み込めてない?
/usr/local/Cellar/jmeter/5.6.3/libexec/bin/jmeter: line 199: 24151 Abort trap: 6 "$JAVA_HOME/bin/java" $ARGS $JVM_ARGS $JMETER_OPTS -jar "$PRGDIR/ApacheJMeter.jar" "$@"
この部分見るに諸々の環境変数を読み込めてないと当たりをつける。
$ echo $JAVA_HOME/bin/java
/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home/bin/java
いや読み込めてるはず
実行コマンドを見てみる
調べていると実行ファイルで環境変数を固定されてる記事を見つける。
$ cat /usr/local/Cellar/jmeter/5.6.3/bin/jmeter
#!/bin/bash
JAVA_HOME="/usr/local/opt/openjdk" exec "/usr/local/Cellar/jmeter/5.6.3/libexec/bin/jmeter" "$@"
JAVA_HOMEの環境変数が固定されてる。なぜ。
なんやかんやあって
16に戻してフルパスで入れたら起動できた。
それ以外のバージョンだとフルパスでも起動できないので、違う要因なはず。