rr 4.2.0 released

Robert O'Callahan robert at ocallahan.org
Thu Mar 17 05:38:34 UTC 2016


There's a lot of good stuff on master and I feel like making some bigger
changes soon so I made a stable release. This is the first stable release
with chaos mode. Here are some bigger things that I've done more recently:

* Worked on reducing the Unsupported syscalls. There are still 76 left,
which are mostly either totally obsolete or b) relatively obscure
functionality (e.g. aio, keyring). Of course there's still a huge number of
unsupported ioctls.

* Worked with a Samba developer to get rr working on Samba tests. There
were some small problems and one big one: robust-futex handling was broken
by SIGKILL. Reworking this required me to figure out exactly how SIGKILL
works under ptrace ---
http://robert.ocallahan.org/2016/03/sigkill-and-ptraceexitevent.html.

* While struggling with that, I discovered Linux ftrace and spent a few
days getting it working with rr. In particular I added an API to turn it on
and off from within rr so you can get detailed kernel traces around
particular rr code --- see ftrace.h. It uses a helper process so you don't
have to run rr as root.

* Also related to that, I reworked logging so that all logging is always
compiled in. Instead of hacking DEBUGTAG and recompiling, you can now just
specify RR_LOG=task,ReplaySession or whatever in your environment to enable
logging. You can also turn logging on and off dynamically via
set_all_logging(LogLevel) and set_logging(const char* name, LogLevel),
either from rr code or while debugging rr. Log module names are
automatically obtained from __FILE__ by stripping off path and file
extension.

* To improve my testing of rr, I set up some virtual machines and test
scripts to run rr tests on various distrbutions (currently Fedora 23,
Ubuntu 14.04, Ubuntu 15.10, and Ubuntu 14.04 32-bit) and added automated
tests that Firefox and LibreOffice start up and load a document. I didn't
put these in the main rr package since there's a bunch of extra work to set
this up. There's some scripts backed up here:
https://github.com/rocallahan/rr-vm-testing. This exposed some bugs which I
fixed. In particular I found that libstdc++3 was using RDRAND. Fortunately
it was easy to hack around, but we really need a CPUID faulting API in
Linux.

Rob
-- 
lbir ye,ea yer.tnietoehr  rdn rdsme,anea lurpr  edna e hnysnenh hhe uresyf
toD
selthor  stor  edna  siewaoeodm  or v sstvr  esBa  kbvted,t
rdsme,aoreseoouoto
o l euetiuruewFa  kbn e hnystoivateweh uresyf tulsa rehr  rdm  or rnea
lurpr
.a war hsrer holsa rodvted,t  nenh hneireseoouot.tniesiewaoeivatewt sstvr
esn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/rr-dev/attachments/20160317/bffc51f0/attachment.html>


More information about the rr-dev mailing list