VMWare上で rr を実行すると失敗する
rr はLinux上で動作するデバッグツールの一つ
便利そうなので試してみようとしたところVMWare12以降でLinuxを動作させている環境だと rr を利用できないことがわかった
原因
VMWare12(Big Sur対応版)からmacOSのカーネル拡張機能を使わずにHypervisor APIを使った実装になった。この結果として vPMC (Virtual CPU Performance Monitoring Counters) に対応できなくなったようだ。
実行失敗例
$ rr record ./a.out
[FATAL /.../rr/src/PerfCounters.cc:314:start_counter() errno: ENOENT] Unable to open performance counter with 'perf_event_open'; are perf events enabled? Try 'perf record'.
=== Start rr backtrace:
rr(_ZN2rr13dump_rr_stackEv+0x44)[0x55e94151a66c]
rr(_ZN2rr15notifying_abortEv+0x53)[0x55e94151a623]
rr(_ZN2rr12FatalOstreamD1Ev+0x30)[0x55e9413bd418]
rr(+0x347f2b)[0x55e9413e9f2b]
rr(+0x348bf6)[0x55e9413eabf6]
rr(+0x348e90)[0x55e9413eae90]
rr(+0x3490bf)[0x55e9413eb0bf]
rr(_ZN2rr12PerfCounters23default_ticks_semanticsEv+0x1d)[0x55e9413eb247]
rr(_ZN2rr7SessionC2Ev+0xec)[0x55e9414c2970]
rr(_ZN2rr13RecordSessionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorIS6_SaIS6_EESD_RKNS_20DisableCPUIDFeaturesENS0_16SyscallBufferingEiNS_7BindCPUES8_PKNS_9TraceUuidEb+0x5e)[0x55e941402092]
rr(_ZN2rr13RecordSession6createERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EESB_RKNS_20DisableCPUIDFeaturesENS0_16SyscallBufferingEhNS_7BindCPUERKS7_PKNS_9TraceUuidEb+0x822)[0x55e941401ce0]
rr(+0x3530bf)[0x55e9413f50bf]
rr(_ZN2rr13RecordCommand3runERSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EE+0x2d5)[0x55e9413f5ceb]
rr(main+0x21b)[0x55e94153326d]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0x7f05e848dbf7]
rr(_start+0x2a)[0x55e9413045aa]
=== End rr backtrace
Aborted (core dumped)
VMWareの一次情報
There is no resolution とのこと
Virtualized Performance Monitoring Counters(vPMC) are not supported by VMware Fusion on macOS Big Sur or VMware Workstation with Hyper-V (81623)