Problems in Subprocesses of Tracees

Robert O'Callahan robert at ocallahan.org
Mon Dec 11 21:46:18 UTC 2017


On Tue, Dec 12, 2017 at 4:04 AM, Jun Inoue <jun.lambda at gmail.com> wrote:

> I just came across -C on-syscalls, which easily revealed the offending
> syscall.  It's this line:
>
>     if (ioctl(skfd, SIOCGIFMAP, &ifr) < 0)
>

Ah good. I should have suggested that earlier; it's just that it can be
really slow.


> in lib/interface.c, on line 459, of net-tools-1.60+git20161116.90da8a0
> as downloaded by 'apt-get source net-tools' on Ubuntu 17.04.
>
> The memory divergence file suggests ifr.ifru.ifru_data and
> ifr.ifru.ifru_newname have diverged after this call.  Before the call,
> ifr looks like
>
> {ifr_ifrn = {ifrn_name = "enxb88d1255ba5c"}, ifr_ifru = {ifru_addr =
> {sa_family = 1500,
>       sa_data = "\000\000\022U\272\\\340_\341\230\372U\000"},
> ifru_dstaddr = {sa_family = 1500,
>       sa_data = "\000\000\022U\272\\\340_\341\230\372U\000"},
> ifru_broadaddr = {sa_family = 1500,
>       sa_data = "\000\000\022U\272\\\340_\341\230\372U\000"},
> ifru_netmask = {sa_family = 1500,
>       sa_data = "\000\000\022U\272\\\340_\341\230\372U\000"},
> ifru_hwaddr = {sa_family = 1500,
>       sa_data = "\000\000\022U\272\\\340_\341\230\372U\000"},
> ifru_flags = 1500, ifru_ivalue = 1500,
>     ifru_mtu = 1500, ifru_map = {mem_start = 6681746532955325916,
> mem_end = 94534795091936, base_addr = 24704,
>       irq = 207 '\317', dma = 139 '\213', port = 252 '\374'},
>     ifru_slave = "\334\005\000\000\022U\272\\\340_\341\230\372U\000",
>     ifru_newname = "\334\005\000\000\022U\272\\\340_\341\230\372U\000",
>     ifru_data = 0x5cba5512000005dc <error: Cannot access memory at
> address 0x5cba5512000005dc>}}
>
> where enxb88d1255ba5c is the name of my wireless interface.  I guess
> this is another case of this issue:
> https://github.com/mozilla/rr/issues/1827


It looks like I misunderstood the man page for SIOCGIFMAP. The ioctl takes
an ifreq* but rr expects it to take a ifmap* directly. I'll fix that.

According to the memory divergence file, there's a dozen other placs
> where the values disagree, but I don't know what those addresses are
> used for.  Any tips/ideas on how to figure this out?  Some of them
> look like just administrative differences between recording and
> replaying.
>

Try running "info proc map" during replay at the right points.


> Memory divergence file can be found here
> (https://drive.google.com/open?id=1u-FQaqBIqzZXObJsnwC3RAhBNK8rJflf),
> though I guess it wouldn't make a lot of sense without the binaries.
> The address range [0x7ffc8bcf5c20..0x7ffc8bcf5c48) is the ifr.
> I'd have to note the experimentation conditions have changed since my
> initial report about ifconfig being called from an rtcd, though.  If
> you just run ifconfig under rr on a computer with wireless, you can
> (probably) reproduce this problem.
>

Yes I do. Thanks for the tip!

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/20171212/714d21ee/attachment.html>


More information about the rr-dev mailing list