-
Notifications
You must be signed in to change notification settings - Fork 643
Description
I've been meaning to try rr for a long time, and today was that day.
I'm using an embedded system with Intel Atom x6212RE running Debian 12. When I ran rr from the apt repo (v5.3.0), I got this: [FATAL ./src/PerfCounters_x86.h:117:compute_cpu_microarch()] Intel CPU type 0x90660 unknown
This is a Tremont CPU, and I saw that rr's master branch had a IntelTremont entry but it didn't have that CPU type, so I built rr from master after adding 0x90660 to the IntelTremont switch in PerfCounters_x86.h.
The good
I tested rr on a barebone C++ Qt multi-threaded test program and it worked fine. I was able to record and replay.
$ rr replay
GNU gdb (Debian 13.1-3) 13.1
<snip>
Reading symbols from /home/user/.local/share/rr/rrtest-2/mmap_hardlink_4_rrtest...
Remote debugging using 127.0.0.1:17584
Reading symbols from /lib64/ld-linux-x86-64.so.2...
(No debugging symbols found in /lib64/ld-linux-x86-64.so.2)
BFD: warning: system-supplied DSO at 0x6fffd000 has a section extending past end of file
0x00007f31ba44cb20 in ?? () from /lib64/ld-linux-x86-64.so.2
(rr) break TestApp::runPeriodicTask
Breakpoint 1 at 0x560a206f2f2f: file testapp.cpp, line 40.
(rr) continue
Continuing.
[New Thread 12626.12627]
[New Thread 12626.12628]
[Switching to Thread 12626.12627]
Thread 2 hit Breakpoint 1, TestApp::runPeriodicTask (this=0x560a52788500) at testapp.cpp:40
40 QString randomstr = GetRandomString(10);
(rr) next
41 qDebug() << objectName() << "on thread" << ((quintptr)QThread::currentThreadId() % 1000) << "got" << randomstr
(rr) info locals
randomstr = "17RKzcmyIi"
__PRETTY_FUNCTION__ = "void TestApp::runPeriodicTask()"
The bad: many failed tests
I ran make -j$(nproc) test.
I couldn't let it finish because SSH access stopped working when it reached test 381 (mmap_huge).
$ tail -n 5 test_results.log
Start 379: mmap_adjacent_to_rr_usage
379/3200 Test #379: mmap_adjacent_to_rr_usage ......................................... Passed 0.12 sec
Start 380: mmap_adjacent_to_rr_usage-no-syscallbuf
380/3200 Test #380: mmap_adjacent_to_rr_usage-no-syscallbuf ........................... Passed 0.12 sec
Start 381: mmap_huge
$ cat test_results.log | grep Failed | wc -l
109
So of the 380/3200 tests attempted before #381 broke the OS, 109/380 failed.
Conclusion
rr seems to work on the Intel Atom x6212RE, but test suite results are awful.
To the devs, I'm not sure if you'd like me to submit a PR for PerfCounters.h, or if the test failures mean you'd rather not consider that CPU as supported. I can also try to use it more seriously with more complex programs when I have some free time.